一、创建容器
# Python 容器示例
docker run -d -p 6616:6616 -p 6617:6617 -p 6618:6618 -v /data/python_projects/test:/app --name test python:3.12-slim tail -f /dev/null
# Nginx 容器示例
docker run -d -p 80:80 -v /data/html:/nginx/html --name myweb nginx
参数说明:
docker run:Docker 核心命令,用于创建并启动容器。
-d:--detach 的简写,表示后台运行容器(守护进程模式),容器启动后不会占用当前终端。
-p 主机端口:容器端口:端口映射,支持多端口配置(如 -p 6616:6616 -p 6617:6617),外部可通过主机端口访问容器内服务。
--name [容器名]:为容器指定自定义名称(如 test),便于后续管理(替代随机容器名)。
-v 主机路径:容器路径:目录挂载,实现主机与容器目录双向实时同步(如 -v /data/python_projects/test:/app)。
python:3.12-slim/nginx:指定容器使用的基础镜像(轻量版镜像体积小,适合生产 / 开发场景)。
二、容器基础管理
1. 进入容器
docker exec -it [容器名称/ID] bash # 交互式终端(bash/sh)
# 示例:docker exec -it test bash
2. 启动容器
docker start [容器名称/ID]
# 示例:docker start test
3. 重启容器
docker restart [容器名称/ID]
# 示例:docker restart test
4. 停止并删除容器
# 停止容器
docker stop [容器名称/ID]
# 停止并删除(强制删除运行中容器加 -f)
docker stop [容器名称/ID] && docker rm [容器名称/ID]
docker rm -f [容器名称/ID] # 强制删除
5. 查看容器状态
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止)
docker inspect [容器名称/ID] # 查看容器完整配置(网络、挂载、环境变量等)
docker stats [容器名称/ID] # 实时监控容器CPU/内存/磁盘IO占用
三、日志与进程管理
1. 查看容器实时日志
docker logs -f [容器名称/ID] # 实时跟踪日志(Ctrl+C退出)
docker logs --tail 100 [容器名称/ID] # 查看最后100行日志
2. 容器内日志查看
tail -f /root/metahuman-stream/run.log # 示例:查看容器内指定日志文件
3. 容器内进程管理
# 查看容器内进程
docker exec -it [容器名称] ps aux
# 强制杀死容器内进程(需进入容器或直接执行)
docker exec -it [容器名称] kill -9 [PID]
四、镜像管理
1. 查看本地镜像
docker images # 或 docker image ls
2. 拉取镜像
docker pull [镜像名]:[标签] # 示例:docker pull python:3.12-slim
3. 删除镜像
docker rmi [镜像ID/镜像名] # 示例:docker rmi python:3.12-slim
docker rmi -f [镜像ID] # 强制删除被容器占用的镜像
4. 构建镜像(Dockerfile 场景)
docker build -t [自定义镜像名]:[标签] [Dockerfile所在目录]
# 示例:docker build -t my-python-app:1.0 .
5. 配置 Docker 国内镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://mirror.baidubce.com", "https://docker.mirrors.tuna.tsinghua.edu.cn", "https://mirror.ccs.tencentyun.com" ] } EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep -A 5 "Registry Mirrors"
五、数据卷(Volume)管理(持久化方案)
1. 创建自定义数据卷
docker volume create [卷名] # 示例:docker volume create test-data
2. 挂载数据卷到容器
docker run -d -v [卷名]:[容器内路径] [镜像名]
# 示例:docker run -d -v test-data:/app/data python:3.12-slim
3. 数据卷维护
docker volume ls # 列出所有数据卷
docker volume inspect [卷名] # 查看数据卷存储路径等详情
docker volume prune # 删除未使用的数据卷(释放空间)
六、网络管理(多容器通信)
1. 创建自定义网络
docker network create [网络名] # 示例:docker network create my-network
2. 容器加入自定义网络
docker run -d --network [网络名] --name [容器名] [镜像名]
# 示例:docker run -d --network my-network --name test python:3.12-slim
- 同一网络内的容器可通过容器名直接通信(如
ping test),无需端口映射。
3. 网络维护
docker network ls # 列出所有网络
docker network inspect [网络名] # 查看网络内关联的容器
docker network rm [网络名] # 删除自定义网络
七、Docker Compose 基础(多容器编排)
docker-compose up -d # 后台启动所有服务(基于docker-compose.yml)
docker-compose down # 停止并删除容器/网络/数据卷
docker-compose logs -f [服务名] # 查看指定服务日志
docker-compose restart [服务名] # 重启指定服务
八、实用技巧与问题排查
1. 容器开机自启
# 创建容器时配置
docker run -d --restart=always [其他参数] [镜像名]
# 对已存在容器修改
docker update --restart=always [容器名]
2. 容器内 ll 命令永久生效
docker exec -it [容器名] bash -c "echo 'alias ll='ls -l'' >> ~/.bashrc"
# 退出容器后重新进入即可生效
3. XFTP 无法上传文件(权限问题)
sudo chown -R ubuntu:ubuntu /data/python_projects/test # 修改主机挂载目录所有者
4. 查看显卡占用(GPU 容器场景)
nvidia-smi
5. 清理无用资源
docker system prune -a # 清理未使用的镜像、容器、网络(谨慎操作)
6. 端口冲突排查
docker ps --filter "publish=80" # 查看占用80端口的容器
netstat -tulpn | grep 80 # 查看主机端口占用
7. 容器权限问题解决
# 启动容器时指定主机用户UID/GID
docker run -d -u $(id -u):$(id -g) -v /data:/app [镜像名]
九、其他常用命令
# 容器内文件拷贝(主机 ↔ 容器)
docker cp [主机文件路径] [容器名]:[容器内路径] # 主机→容器
docker cp [容器名]:[容器内文件路径] [主机路径] # 容器→主机
# 查看 Docker 系统信息
docker info