【修炼手册】Docker 命令篇

一、创建容器

# 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

参数说明:

  1. docker run:Docker 核心命令,用于创建并启动容器。
  2. -d--detach 的简写,表示后台运行容器(守护进程模式),容器启动后不会占用当前终端。
  3. -p 主机端口:容器端口:端口映射,支持多端口配置(如 -p 6616:6616 -p 6617:6617),外部可通过主机端口访问容器内服务。
  4. --name [容器名]:为容器指定自定义名称(如 test),便于后续管理(替代随机容器名)。
  5. -v 主机路径:容器路径:目录挂载,实现主机与容器目录双向实时同步(如 -v /data/python_projects/test:/app)。
  6. 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 国内镜像加速器

  • 编辑 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
  • 重新加载并重启 Docker
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
Logo © 2025 Mark All Rights Reserved. 陕ICP备2025083152号