这里是 Docker 的快速参考,你可以在这里找到最常见的 Docker 命令

一般命令

下文中所指的“$container”可以是容器名称,也可是容器ID

常用

  • 后台创建与运行容器

docker run -d -p $port:port $images

参数说明:

-d:以后台模式运行容器

-p $port:port:端口映射

images:要使用的镜像

  • 前台创建并运行容器

docker run -it --rm -p $port:port --name $container_name $images

参数说明:

-it:交互式bash模式

--rm:容器终止运行后自动删除

-p $port:port:端口映射

$container_name:指定的容器启动名称

$images:要使用的容器镜像

其他常用

命令

命令说明

docker ps -a/-s

列出正在运行/所有/的容器

docker images

列出所有的镜像

容器命令

命令

命令说明

docker exec -it $container bash

连接到指定容器

docker logs $container

显示容器的控制台日志

docker start $container

启动指定容器

docker stop $container

停止指定容器

docker restart $container

重启指定容器

docker pause $container

暂停指定容器

docker wait $container

阻塞指定容器

docker attach $container

连接到现有容器

docker rm $container

移除指定容器

docker port $container

显示容器的端口映射

docker top $container

列出进程

docker kill $container

直接终止容器

docker logs $container

显示容器的控制台日志

docker inspect $container

检查容器

docker events $container

查看容器事件

docker port $container

查询公共端口

docker top $container

运行进程

docker stats $container

容器资源使用

docker diff $container

列出对容器所做的更改

  • 创建容器

docker create [options] IMAGE
  -a, --attach               # 附加标准输出/错误
  -i, --interactive          # 附加标准输入(交互式)
  -t, --tty                  # 伪终端 pseudo-tty
      --name NAME            # 命名你的镜像
  -p, --publish 5000:5000    # 端口映射(主机:容器)
      --expose 5432          # 向容器公开端口 
  -P, --publish-all          # 发布所有端口
      --link container:alias # 链接 linking
  -v, --volume `pwd`:/app    # mount(需要绝对路径)
  -e, --env NAME=hello       # 环境变量 env vars

# 示例:使用redis:3.0.2镜像创建redis数据库,名称为redis,对外开放6379端口
docker create --name redis --expose 6379 redis:3.0.2
  • 重命名容器

docker rename $container_name $images
  • 移除容器

docker rm $images
  • 更新容器

docker update $command $container_name

镜像命令

命令

命令说明

docker rmi $images

删除镜像

docker load < $file

从某文件加载存储库

docker load --input $file

docker save $name > $file

将某镜像保存到某文件中

docker history

镜像历史

docker commit $images $images_name

容器另存为镜像

docker tag $images $images_tag

标记镜像

docker push $images_tag

推送镜像(公共)

构建镜像

# 注意有的最后面是英文 .
docker build .
docker build github.com/creack/docker-firefox
docker build - < Dockerfile
docker build - < context.tar.gz
docker build -t eon/nginx-server .
docker build -f myOtherDockerfile .
curl example.com/remote/Dockerfile | docker build -f - .
  • 删除<none>镜像

docker rmi -f $(docker images | grep "none" | awk '{print $3}')

网络命令

  • 获取容器连接的网络

docker inspect $container | grep Network
  • 删除网络

docker network rm $container_network
  • 列出网络

docker network ls
  • 获取网络信息

docker network inspect $container_network
  • 将正在运行的容器连接到网络

docker network connect $network $container
  • 启动时将容器连接到网络

docker run -it -d --network= $network $container
  • 断开容器与网络连接

docker network disconnect $network $container
  • 创建网络

docker network create -d overlay $network_name
docker network create -d bridge $network_name
# 参数仅为示例,使用自行更改
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" \
  $network_name