Docker 容器

精选 Docker 容器 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。

在前台(交互模式)创建并运行容器

$ docker run -it -p 8001:8080 --name my-nginx nginx

#常用基础命令

命令示例 常用功能说明
docker ps 列出正在运行的容器
docker ps -a 列出所有容器(包括已停止的)
docker ps -s 列出运行中的容器并显示 CPU / 内存占用
docker images 列出本地所有镜像
docker exec -it <container> bash 进入/连接到正在运行的容器交互终端
docker logs <container> 查看容器控制台输出日志
docker stop <container> 停止指定容器
docker restart <container> 重启指定容器
docker rm <container> 删除指定容器
docker port <container> 查看容器的端口映射关系
docker top <container> 查看容器内部运行的进程
docker kill <container> 强制杀死指定容器

参数 <container> 可以是容器 ID 或容器名称

#Docker 容器管理

#启动与停止

常用命令 功能说明
docker start my-nginx 启动容器
docker stop my-nginx 停止容器
docker restart my-nginx 重启容器
docker pause My-nginx 暂停容器运行
docker unpause my-nginx 恢复暂停的容器
docker wait my-nginx 阻塞等待容器停止并返回退出状态码
docker kill my-nginx 向容器发送 SIGKILL 强制终止
docker attach my-nginx 附加到已存在的运行容器

#容器信息查看

命令示例 功能说明
docker ps 列出正在运行的容器
docker ps -a 列出所有容器
docker logs my-nginx 查看容器日志
docker inspect my-nginx 查看容器详细元数据配置
docker events my-nginx 实时获取容器事件信息
docker port my-nginx 查看容器映射的公开端口
docker top my-nginx 查看容器正在运行的进程列表
docker stats My-nginx 实时查看容器 CPU/内存/网络资源占用
docker diff my-nginx 检查容器文件系统的变更列表

#创建容器

docker create [options] IMAGE
  -a, --attach               # 附加标准输入/输出/错误
  -i, --interactive          # 交互模式 (stdin)
  -t, --tty                  # 分配伪终端
      --name NAME            # 为容器指定名称
  -p, --publish 5000:5000    # 端口映射 (宿主机:容器)
      --expose 5432          # 暴露端口给容器网络
  -P, --publish-all          # 随机映射所有暴露的端口
      --link container:alias # 容器间别名连接
  -v, --volume `pwd`:/app    # 挂载数据卷 (需绝对路径)
  -e, --env NAME=hello       # 环境变量设置

创建示例

$ docker create --name my_redis --expose 6379 redis:3.0.2

#容器修改与管理

重命名容器

docker rename my-nginx my-nginx-new

删除容器

docker rm my-nginx

更新容器资源配置限制

docker update --cpu-shares 512 -m 300M my-nginx

#Docker 镜像管理

#镜像基础操作

命令示例 功能说明
docker images 列出本地镜像
docker rmi nginx 删除本地镜像
docker load < ubuntu.tar.gz 从归档文件加载镜像
docker load --input ubuntu.tar 从归档文件加载镜像
docker save busybox > ubuntu.tar 将镜像保存为 tar 归档文件
docker history 查看镜像构建历史层记录
docker commit nginx 从容器改动创建新镜像
docker tag nginx eon01/nginx 为镜像打标签
docker push eon01/nginx 推送镜像到镜像仓库 (Registry)

#构建镜像

$ docker build .
$ docker build github.com/creack/docker-firefox
$ docker build - < Dockerfile
$ docker build - < context.tar.gz
$ docker build -t eon/my-nginx .
$ docker build -f myOtherDockerfile .
$ curl example.com/remote/Dockerfile | docker build -f - .

#Docker 网络管理

#网络基础操作

删除指定网络

docker network rm MyOverlayNetwork

列出所有网络

docker network ls

查看网络的详细信息

docker network inspect MyOverlayNetwork

将运行中的容器连接到网络

docker network connect MyOverlayNetwork nginx

启动容器时直接连接指定网络

docker run -it -d --network=MyOverlayNetwork nginx

断开容器与网络的连接

docker network disconnect MyOverlayNetwork nginx

#创建网络

docker network create -d overlay MyOverlayNetwork

docker network create -d bridge MyBridgeNetwork

docker network create -d overlay \
  --subnet=192.168.0.0/16 \
  --subnet=192.170.0.0/16 \
  --gateway=192.168.0.100 \
  --gateway=192.170.0.100 \
  --ip-range=192.168.1.0/24 \
  --aux-address="my-router=192.168.1.5" \
  --aux-address="my-switch=192.168.1.6" \
  --aux-address="my-printer=192.170.1.5" \
  --aux-address="my-nas=192.170.1.6" \
  MyOverlayNetwork

#垃圾清理与维护

#综合清理

清理无主 (dangling) 镜像、停止的容器、未使用的网络与卷

docker system prune

清理包括所有未使用的镜像(不只是 dangling 镜像)和所有已停止的容器

docker system prune -a

#容器清理

停止所有运行中的容器

docker stop $(docker ps -a -q)

删除所有已停止的容器

docker container prune

#镜像清理

清理无标签且未被容器引用的悬挂镜像:

docker image prune

清理所有未被当前容器使用的镜像:

docker image prune -a

#存储卷清理

删除未被任何容器使用的卷

docker volume prune

#杂项与技巧

#Docker Hub

Docker 语法 功能说明
docker search search_word 在 Docker Hub 上搜索镜像
docker pull user/image 从 Docker Hub 下载镜像
docker login 登录镜像仓库 (Docker Hub)
docker push user/image 上传镜像到 Docker Hub

#镜像仓库 (Registry) 命令

登录镜像仓库

$ docker login
$ docker login localhost:8080

登出镜像仓库

$ docker logout
$ docker logout localhost:8080

搜索镜像

$ docker search nginx
$ docker search nginx --stars=3 --no-trunc busybox

拉取镜像

$ docker pull nginx
$ docker pull eon01/nginx localhost:5000/myadmin/nginx

推送镜像

$ docker push eon01/nginx
$ docker push eon01/nginx localhost:5000/myadmin/nginx

#批量清理技巧

命令示例 功能说明
docker stop -f $(docker ps -a -q) 强制停止所有容器
docker rm -f $(docker ps -a -q) 强制删除所有容器
docker rmi -f $(docker images -q) 强制删除所有镜像

#数据卷管理

查看数据卷列表

$ docker volume ls

清理无用数据卷

$ docker volume prune