Docker 常用命令总结

docker run 命令

docker run :用 image 创建一个新的容器并运行一个命令

docker run [option] image [command] [arg…]

注意: 如果不使用-d, 创建一个容器退出后容器关闭

常用选项:

  • -d: 后台运行容器, 并返回容器 id
  • -i: 已交互模式运行容器, 通常与-t 同时使用
  • -P: 主机端口映射为容器随机端口.
  • -p: 指定主机端口与容器映射的端口, 格式为: 主机端口: 容器端口
  • –name: 为容器命名
  • –dns 8.8.8.8 指定容器使用的 DNS 服务器, 默认和宿主及一样
  • -h: 指定容器主机
  • -m: 分配最大内存
  • –net=“bridge”: 指定容器的连接类型, 支持 bridge/host/none/container 四种
  • –expose=[]: 开放一组端口
创建后容器暂停运行
[root@qchun qchun]# docker run -i -t --name run_test ubuntu /bin/bash

创建容器后暂停运行
[root@qchun qchun]# docker run -itd --name run_test2 ubuntu/ubuntu:v2 /bin/bash

docker start/stop/restart 命令

启动/停止/重启 一个或多个容器.

docker start/stop/restart [option] container [contaienr…]

一次启动多个
docker start 3bffb9966452 13ffa29f29c4 f9c63eadf703

一次关闭多个
[root@qchun qchun]# docker stop 3bffb9966452 13ffa29f29c4 f9c63eadf703

重启动多个
[root@qchun qchun]# docker restart 3bffb9966452 13ffa29f29c4 f9c63eadf703
3bffb9966452
13ffa29f29c4
f9c63eadf703
[root@qchun qchun]# docker ps -as
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES               SIZE
3689992cbdb0        ubuntu/ubuntu:v2    "/bin/bash"         8 minutes ago       Up 8 minutes                            run_test2           254B (virtual 95.5MB)
3bffb9966452        ubuntu              "/bin/bash"         14 minutes ago      Up 3 seconds                            run_test            5B (virtual 73.9MB)
13ffa29f29c4        ubuntu              "/bin/bash"         29 minutes ago      Up 2 seconds                            elegant_ganguly     0B (virtual 73.9MB)
f9c63eadf703        ubuntu/ubuntu:v2    "/bin/bash"         5 hours ago         Up 2 seconds                            heuristic_borg      282B (virtual 95.5MB)

docker kill 命令

杀掉一个运行中的容器(不让其运行, 终止进程, 不是 pause), 使运行的容器处于 exited 状态. 如果停止一个位处于运行状态的容器则会报错.

docker kill container [container…] docker kill -s KILL container_name

  • -s 向被杀容器发送一个 KILL 信号,
  • container_name 被杀容器名称
[root@qchun qchun]# docker kill 3bffb9966452 13ffa29f29c4 f9c63eadf703

[root@qchun qchun]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
3689992cbdb0        ubuntu/ubuntu:v2    "/bin/bash"         10 minutes ago      Up 10 minutes                                         run_test2
3bffb9966452        ubuntu              "/bin/bash"         16 minutes ago      Exited (137) About a minute ago                       run_test
13ffa29f29c4        ubuntu              "/bin/bash"         32 minutes ago      Exited (137) About a minute ago                       elegant_ganguly
f9c63eadf703        ubuntu/ubuntu:v2    "/bin/bash"         5 hours ago         Exited (137) About a minute ago                       heuristic_borg

docker rm 命令

删除一个或者多个容器

docker rm [option] container [container…]

  • -f : 强制删除一个容器
  • -I : 删除容器间的网络连接, 而不时容器本身
  • -v 删除与容器关联的卷
[root@qchun qchun]# docker rm 3bffb9966452 13ffa29f29c4 f9c63eadf703
3bffb9966452
13ffa29f29c4
f9c63eadf703
[root@qchun qchun]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3689992cbdb0        ubuntu/ubuntu:v2    "/bin/bash"         12 minutes ago      Up 12 minutes                           run_test2

pause/unpause 暂停/恢复容器进程命令

暂停/恢复 容器中所有进程

docker pause [OPTIONS] CONTAINER [CONTAINER…] docker unpause [OPTIONS] CONTAINER [CONTAINER…

[root@qchun qchun]# docker pause 3689992cbdb0
状态
Up 13 minutes (Paused)

[root@qchun qchun]# docker unpause 3689992cbdb0
状态
Up 15 minutes

docker exec 命令

ocker exec [OPTIONS] CONTAINER COMMAND [ARG…]

-d : 分离模式, 后台运行 -i : 不写页保持 STDIN 打开 -t : 为容器分配终端(伪)


带d最后边的命令无效, 不进入bash
[root@qchun qchun]# docker exec -t 3689992cbdb0 /bin/bash
root@3689992cbdb0:/#

docker create 用 image 创建容器命令

用 image 创建一个容器但不启动它(容器处于 created 状态), 用法同 run


docker images 命令 查看本地镜像文件

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu/ubuntu       v2                  929d98e33824        5 hours ago         95.5MB
ubuntu              latest              1d622ef86b13        3 weeks ago         73.9MB
  • REPOSITORY:表示镜像的仓库源 TAG:
  • 镜像的标签 IMAGE
  • ID:镜像 ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

docker ps 查看容器信息

docker ps [option…]

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • –format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的 n 个容器。
  • –no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。
docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3689992cbdb0        ubuntu/ubuntu:v2    "/bin/bash"         21 minutes ago      Up 21 minutes                           run_test2

状态有 7 种:

  • created(已创建)
  • restarting(重启中)
  • running(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

搜索镜像 image

docker search <term / imagesName>

在 docker 公共仓库中搜索镜像

docker search mysql

NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9520                [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   3456                [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   698                                     [OK]
percona                           Percona Server is a fork of the MySQL relati…   485                 [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   75
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   69
centurylink/mysql                 Image containing mysql. Optimized to be link…   61                                      [OK]
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                                      [OK]
bitnami/mysql                     Bitnami MySQL Docker Image                      39                                      [OK]
tutum/mysql                       Base docker image to run a MySQL database se…   35
schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   30                                      [OK]
prom/mysqld-exporter                                                              28                                      [OK]
linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   25
centos/mysql-56-centos7           MySQL 5.6 SQL database server                   19
circleci/mysql                    MySQL is a widely used, open-source relation…   19
databack/mysql-backup             Back up mysql databases to... anywhere!         18
mysql/mysql-router                MySQL Router provides transparent routing be…   15
arey/mysql-client                 Run a MySQL client from a docker container      14                                      [OK]
fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   6                                       [OK]
openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6
devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offici…   3
ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                                       [OK]
jelastic/mysql                    An image of the MySQL database server mainta…   1
...

docker inspect 查看容器参数, 以 json 显示

docker inspect [option] 容器名字/id [容器名字/id…]

  • -f :指定返回值的模板文件。
  • -s :显示总的文件大小。
  • -type : 指定类型返回 JSON。
[root@qchun qchun]# docker inspect  3689992cbdb0

docker top 命令

查看容器中运行的进程信息,支持 ps 命令参数。 容器运行时不一定有/bin/bash 终端来交互执行 top 命令,而且容器还不一定有 top 命令,可以使用 docker top 来实现查看 container 中正在运行的进程。

docker top [option] conatienr [ ps option]

[root@qchun qchun]# docker top 265f153c867c
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                6146                6101                0                   21:16               pts/0               00:00:00            /bin/bash

docker attach 登陆已运行容器

连接到正在运行中的容器。

docker attach [OPTIONS] CONTAINER


docker logs 查看日志

查看容器运行日志

-f : 跟踪日志输出 –since : 显示某个开始时间的所有日志 -t : 显示时间戳 – tail : 进列出最新的 n 条容器日志


docker export

将容器作为一个 tar 归档文件导出到 STDOUT。

docker export [option] container > 位置/文件名 docker export [option] container

-o : 将输入内容写道文件

两种写法均可
[root@qchun ~]# docker export -o test_export.tar  3689992cbdb0
[root@qchun ~]# docker export  3689992cbdb0 > ./test_export2.tar

import 从归档文件(tar)创建文件

docker import [option] 路径/文件 [repository[:tag]]

  • -c :应用 docker 指令创建镜像;
  • -m :提交时的说明文字;
[root@qchun ~]# docker import -m "test import" ./test_export.tar  test_import/tar_to_img:v1

rmi 删除本地一个或多少镜像

docker rmi [option] image [image…]

  • -f :强制删除;
  • –no-prune :不移除该镜像的过程镜像,默认移除;

save 将指定的镜像保存为 tar 归档文件

docker save [option] image [image…]

-o : 输出到文件

[root@qchun ~]# docker save -o add_my_ubuntu.tar test_import/tar_to_img

-rw------- 1 root root 96900096 May 21 22:13 add_my_ubuntu.tar

load 导入使用 docker save 命令导出的镜像

docker load [option]

[root@qchun ~]# docker load < add_my_ubuntu.tar

注意: 导入前本地 repository 要有之前使用 save 导出的源 image, 如果没有报错, 容器导入的 tar 不能加载(load)到本地 repository. 总结在哪导出, 加载到哪.


docker port 查看容器映射端口

列出指定的容器的端口映射,或者查找将 PRIVATE_PORT NAT 到面向公众的端口。

docker port container [private_port [/proto]]

[root@qchun ~]# docker run -itd -p 5000:5000 ubuntu/ubuntu:v2 /bin/bash
[root@qchun ~]# docker port 31d578563b4a
5000/tcp -> 0.0.0.0:5000
主机0.0.0.0:5000映射到容器5000,  默认为TCP, 也可以指定为UDP

docker commit 从容器创建一个镜像

docker commit [option] container [image_name[:tag_name]]

  • -a :提交的镜像作者;
  • -c :使用 Dockerfile 指令来创建镜像;
  • -m :提交时的说明文字;
  • -p :在 commit 时,将容器暂停。
[root@qchun ~]# docker commit -a "lqc" -m "test commit" -p test my/ubuntu:v1.0
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
my/ubuntu                v1.0                c267dce3adda        9 seconds ago       95.5MB

docker cp 用于容器与主机之间拷贝数据

docker cp [option] conatiner:scr_path dest_path|- docker cp [option] src_path - contaienr:dest_path

-L : 保持源与目标中的连接

!容器的路径必须写绝对路径

将test容器中的文件夹拷贝报宿主机的/root/test下
[root@qchun test]# docker cp test:/root/qchun  /root/test
主机传容器, 将路径反过来就行了

docker pull 从镜像仓库中拉取或者更新指定镜像

docker pull [option] name[:tag]

-a : 拉取所有 targetd 镜像

一般使用拉取最新XXX镜像
docker pull  XXX:latest

docker push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker push [option] name[:tag]


search 从 Docker Hub 查找镜像

docker search [option] term/name

  • –automated :只列出 automated build 类型的镜像;
  • –no-trunc :显示完整的镜像描述;
  • -s :列出收藏数不小于指定值的镜像。

docker tag 标记本地镜像并将其归入某一仓库

docker tag [option] image[:tag] [registryhost/][username/]name[:tag]

[root@qchun qchun]# docker tag my/ubuntu:v1.0  my/ubuntu:v2.0
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
my/ubuntu                v1.0                c267dce3adda        12 minutes ago      95.5MB
my/ubuntu                v2.0                c267dce3adda        12 minutes ago      95.5MB

(完)