docker常用命令

查看docker版本

docker version

显示docker系统的信息

docker info

日志信息

docker logs

故障检查

service docker status

启动关闭docker

sudo service docker start|stop

docker 镜像操作

列出镜像

docker images
docker image ls

搜索镜像

docker search centos

拉取镜像

docker pull centos

导出镜像

docker save centos > centos.tar

导入镜像

docker load < centos.tar

删除本地镜像

docker image rm hello-world 
docker rmi hello-world

hello-world 为镜像名

删除所有镜像

docker rmi -f $(docker images)

-f 表示强制删除

可简写为如下

docker rmi -f  `docker images -a -q`

docker 容器操作

创建并启动容器

docker run -i -t centos /bin/bash
  • -i 容器启动后,打开标准输入设备(stdin),可使用键盘进行输入
  • -t 容器启动后,分配一个伪终端(pseudo-tty),将与服务器建立一个会话
  • centos 需要运行的景象名称,标准格式为 centos:latest ,若为latest版本,则可省略
  • /bin/bash 运行容器的bash应用程序,因为我们此时并不需要运行其他程序,只想进入到容器中
docker run -d -p 91:80 nginx
  • -d 表示后台运行

  • -P 随机端口映射

  • -p 指定端口映射,有以下四种格式

    • ip:hostPort:containerPort
    • ip::containerPort
    • hostPort:containerPort
    • containerPort
  • --network 指定网络模式

    • --network=bridge 默认选项,表示链接到默认的网桥
    • --network=host 容器使用宿主机网络
    • --network=container:NAME_or_ID 告诉 docker 让新建容器使用已有容器的网络设置
    • --network=none 不配置该容器的网络,用户可自定义网络设置
  • --rm 这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用--rm可以避免浪费空间。

列出容器

docker ps
  • -a 列出所有容器,包含所有状态(运行中与已停止)
  • -l 列出最近创建的容器,包含所有状态
  • -n 列出n个最近创建的容器,包含所有状态
  • -q 仅列出 container id 字段
  • -s 输出表格中增加一个 size 字段,用于描述容器大小

进入容器

  • 使用 docker attach
docker attach 197beb941e56

只能进入运行中的容器,而不能进进入已停止的容器。
当打开多个终端并进入容器时,在一个终端执行了某个命令,该命令将自动同步到其他终端中。
如果某个窗口发生阻塞,其他窗口也无法执行操作。

  • 使用 nsenter
# docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
87491fe994a2        centos                          "/bin/bash"              16 seconds ago      Up 14 seconds                                gracious_knuth
7f7b95961c8b        springboot/spring-boot-docker   "java -Djava.securit…"   40 hours ago        Up 40 hours         0.0.0.0:8080->8080/tcp   hungry_fermat
# docker inspect --format "{{.State.Pid}}" 87491fe994a2
5965
# nsenter --target 5965 --mount --uts --ipc --net --pid
[root@87491fe994a2 /]# ls
  • 使用 docker exec
docker exec -i -t 197beb941e56 /bin/bash

如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用docker exec的原因。

执行命令

docker exec -i -t 197beb941e56 ls -l

停止容器

docker stop 197beb941e56
docker container stop 197beb941e56

该命令可以对容器发送SIGTERM信号,将等待一段很短的时间,在对容器发送SIGKILL信号,立即终止容器。

此外,当 Docker 容器中指定的应用终结时,容器也自动终止。

例如对于上一章节中只启动了一个终端的容器,用户通过 exit 命令或 CTRL+d 来退出终端时,所创建的容器立刻终止。

终止状态的容器可以用 docker container ls -a 命令看到。

处于终止状态的容器,可以通过 docker container start 命令来重新启动。

此外,docker container restart 命令会将一个运行态的容器终止,然后再重新启动它。

强制停止容器

docker kill 197beb941e56

发送 SIGKILL 信号强制停止。

删除容器

  • 删除指定容器
docker container rm 197beb941e56
docker  rm 197beb941e56

只能删除已停止的容器,如需删除正在运行的容器,可以使用-f参数。

  • 删除所有容器
docker rm -f $(docker ps -a -q)

可简写为如下

docker rm -f `docker ps -a -q`

启动已停止容器

docker start 197beb941e56
docker container start 197beb941e56

重启容器

docker restart 197beb941e56

如果要删除一个运行中的容器,可以添加 -f 参数,Docker 会发送 SIGKILL 信号给容器。

清理所有处于终止状态的容器

docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量太多要一个个删除可能会很麻烦,用下面的命令可以清理掉所有处于终止状态的容器。

$ docker container prune

导入容器

导出的 centos.tar 容器包 可随时在另一台docker机器上导入为镜像,命令如下:

docker import centos.tar root/centos:latest

docker load(从镜像中导入镜像) 与 docker import(从容器包中导入镜像) 均可导入 镜像,两者的区别是,

  • 容器包不包含任何历史记录,相当于容器的当前快照
  • 镜像包则包括所有历史记录,因此镜像包的体积也比较大

导出容器

docker export 197beb941e56 > centos.tar

若不指定导出的tar文件路径,则导出的centos.tar 文件在当前路径下

  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22