Docker所有常见命令从入门到精通

1,041 阅读8分钟

本篇文章基本概括了docker所有的命令及其命令后的参数,阅读时间较长,准备开始。

一、仓库有关的操作

1、login/logout

login命令用于登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。如果 用户使用 docker login 命令登录官方仓库,我们可以使用阿里云的镜像仓库,自行注册。logout不用多说,自然是登出我们的仓库。

docker login -u username registry.cn-hangzhou.aliyuncs.com 然后输入密码

2、search

搜索命令,可以搜索官方仓库的镜像。默认在docker.io的仓库中搜索。我们可以指定从哪一个仓库中搜索。

docker serach java

3、pull

拉取仓库的命令。如果不指定仓库位置默认从dockerHub中拉去。

registry.cn-hangzhou.aliyuncs.com/small-thanks/small:0.01 这是一个完整的仓库地址,里面包含了仓库的地址registry.cn-hangzhou.aliyuncs.com,仓库的命名空间small-thanks,镜像的名字和版本,small:0.01

docker serach java 等同于 docker pull docker.io/library/java:lastest

4、push

推送镜像。默认是从docker.io中推送,但是一般我们没有权限,但是我们可以推送到自己的仓库当中。例子当中的small-thanks/small根据自己的命名空间和镜像仓库设置

$ sudo docker login --username=smallsmallth****@icloud.com registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/small-thanks/small:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/small-thanks/small:[镜像版本号]

二、本地镜像管理

1、tag

标签命令,一般用于上传到自己仓库的时候使用。具体用法

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

2、images

docker images 命令用于列出 docker镜像。

docker images [OPTIONS] [REPOSITORY[:TAG]]
# 只显示镜像的ID
docker images -q 

2、rmi

docker rmi 命令用于删除本地一个或多个Docker多个。注意rmi和rm的区别,带i的是删除images,也就是删除镜像,rm是删除容器。

参数描述
docker rmi -f IMAGE强制删除一个或多个。
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 也可以写复合命令,这是删除所有的docker镜像
docker rmi $(docker images -q) 

3、save/load

docker save 命令用于将 Docker镜像 保存成 tar 包。docker save 命令的相对应的命令为 docker load。 docker load 命令用于从 tar 归档文件或者标准输入流载入镜像。docker load 命令的相对应的命令为 docker save。

参数描述
docker save -o, --output将归档文件输出到的文件
docker load -i指定导出的文件。
docker load -i指定导出的文件。
docker save [OPTIONS] IMAGE [IMAGE...] 
docker save -o xxx.tar IMAGE

docker load [OPTIONS]
docker load -i xxx.tar

save/load和import/export的区别:总结一下docker save和docker export的区别:

  1. docker save保存的是镜像(image),docker export保存的是容器(container);
  2. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
  3. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

4、import/ export

docker import 命令用于从归档文件中创建镜像。docker import 命令的相对应的命令为 docker export。 docker export 命令可以用于将 Docker容器 里的文件系统作为一个 tar 归档文件导出到标准输出。docker export 命令后面的 CONTAINER 可以是容器Id或者是容器名。

参数描述
docker export -o IMAGE[CONTAINER]将输入内容写到文件。
docker export -o xxx.tar [容器ID/容器名称]
docker import xxx.tar  [创建的镜像名称]

5、build

docker build 命令可以用来使用 Dockerfile 创建镜像。 详情请看

三、容器生命周期管理

1、run

通过 docker run 命令创建一个新的容器。

参数描述
常用
-d指定容器运行于前台还是后台,默认为 false。
-v与主机数据绑定,主机(宿主)目录:容器目录
-p指定端口映射,格式为:主机(宿主)端口:容器端口
--name指定容器的名字
docker run -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -d nginx:1.17.0

2、start/stop/restart

  1. docker restart 命令可以用来重新启动一个或者多个 Docker容器。
  2. docker stop 命令可以用来停止一个运行中的 Docker容器。
  3. docker start 命令可以启动一个或多个已经被停止的 Docker容器。 这三个命令后面的 CONTAINER 可以是容器Id或者是容器名。
docker start/stop/restart $(docker ps -qa)

3、kill

docker kill 命令可以用来杀掉一个或者多个正在运行的 Docker器。该命令后面的 CONTAINER 可以是容器Id或者是容器名。不建议使用,建议使用stop命令。使用这样命令等同于台式把电源。

docker kill $(docker ps -qa)

4、rm

docker rm 命令可以用来删除一个或者多个已经停止的 Docker容器。该命令后面的 CONTAINER 可以是容器Id,或者是容器名。

参数描述
-v删除与容器关联的卷。
-l移除容器间的网络连接,而非容器本身。
docker rm $(docker ps -qa)

5、pause/unpause

  1. docker pause 命令可以用来暂停 Docker容器 中所有的进程。
  2. docker unpause 命令可以用来恢复 Docker容器 中所有的进程。 这条命令但等同于我们看视频的时候俺空格。unpause是按两下空格。
docker pause/unpause $(docker ps -qa)

6、create

Docker create命令用于创建一个新的Docker容器,该命令常用于在启动容器之前进行必要的设置。 参数和run命令一样,只不过run创建并启动,create创建不启动。

参数描述
常用
-d指定容器运行于前台还是后台,默认为 false。
-v与主机数据绑定,主机(宿主)目录:容器目录
-p指定端口映射,格式为:主机(宿主)端口:容器端口
--name指定容器的名字
docker crtate -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -d nginx:1.17.0

7、exec/attach

  1. docker exec 命令可以用来在运行的 Docker容器 中执行命令。docker exec命令是需要容器处于运行中且 PID 1 进程也处于运行中才能执行的操作。
  2. 使用 docker attach 命令可以用来进入到一个正在运行的 Docker容器。 区别:
  3. docker attach命令进入到正在运行的 Docker容器后,如果使用 exit 命令或者 Ctrl+d 退出容器后,原来正在运行的容器也会停止。
  4. docker attach命令进入到正在运行的 Docker容器后,如果使用 Ctrl+p+q 退出容器后,原来正在运行的容器不会停止。
  5. docker exec -it containerName /bin/bash 命令进入到正在运行的 Docker容器后,如果使用 exit 命令或者 Ctrl+d 退出容器后,原来正在运行的容器不会停止。 | 参数 | 描述 | | --- | --- | 常用 | -i | 展示容器输入信息 STDIN。 | -t | 命令行交互模式。
docker exec -it xxx /bin/bash 
docker attach xxx 

四、容器操作

1、ps

docker ps 命令可以用来列出 Docker容器 相关信息。

参数描述
-a显示所有的容器,包括未运行的。
-q只显示容器编号。
docker ps -qa 

2、top

使用 docker top 命令可以用来查看 Docker 中运行的进程信息。docker top 命令后面的 CONTAINER 可以是容器 ID,或者是容器名。

docker top CONTAINER 

3、port

docker port 命令可以用于列出指定的 Docker容器 的端口映射,或者将容器里的端口映射到宿主机。

docker port [CONTAINER...] 

4、logs

docker logs 命令用于获取 Docker容器 的日志。

参数描述
docker logs --details显示 log 信息的额外的详细信息。
docker logs -f跟踪日志输出。
docker logs --since显示某个开始时间的所有日志。
docker logs --tail仅列出最新 N 条容器日志。
docker logs -t, --timestamps显示时间戳。
# 跟踪显示第20倒数第20条以下的
docker logs -f --tail 20 xxx 

5、cp

docker cp 命令用于在本地文件系统与 Dokcer容器之间复制文件或者文件夹。

 # 容器内部拷贝到宿主机 xxx为容器id或名字
docker cp xxx:/tmp/xxx.txt /tmp
# 宿主机拷贝到容器内部
docker cp ./aaa.txt  xxx:/tmp

6、rename

docker rename 命令可以用于重命名一个 Docker容器。

docker rename CONTAINER NEW_NAME
docker rename aaa bbb 

7、stats

docker stats 命令可以用于动态显示 Docker容器 的资源消耗情况,包括:CPU、内存、网络I/O。docker stats命令也可以指定已停止的容器,但是不会返回任何信息。

参数描述
-a查看所有容器信息(默认显示运行中的)。
docker stats [options] [container...]

8、commit

docker commit 命令用于根据 Docker容器 的更改创建一个新的 Dokcer镜像。

参数描述
-a作者
-c应用 dockerfile 指令来创建图像。
-m提交信息。
-p提交期间暂停容器(默认为true)
# 假设我们以及对一个容器进行了更改,可以利用commit命令创建一个镜像,通常可以用作备份的时候使用
docker commit -p -m 这是我的备份容器 CONTAINER 

9、diff

docker diff 命令用于比较一个 Docker容器 不同版本提交的文件差异。 假如我们在docker容器内部做出了更改,可以用diff来查看,假如我们进去内部写一个shell命令;然后diff一下,结果如下。可以看到多了一个.bash_history。 docker diff命令会列出 3 种容器内文件状态变化(A - Add, D - Delete, C - Change )的列表清单。

smallthanks@xxx ~ % docker diff c8
C /root
A /root/.bash_history

10、inspect

docker inspect CONTAINER 命令,可以获取 Docker容器的相关信息。

参数描述
-f指定返回值的模板文件。
-s显示总的文件大小。
–type为指定类型返回JSON。
  1. 使用 docker inspect CONTAINER -f {{.Name}} 命令,可以获取容器名。
  2. 使用 docker inspect CONTAINER -f {{.NetworkSettings}} 命令,可以获取容器网络设置的相关信息。
  3. 使用 docker inspect CONTAINER -f {{.NetworkSettings.IPAddress}} 命令,可以获取容器的 IP 的相关信息。

11、update

docker update 命令可以用于更新一个或多个 Docker容器 的配置。 可以修改容器启动之后CPU、内存等的配置。

参数描述
-c更新 cpu-shares。
-m更新内存限制。
docker update --c 512 -m  -m 512M xxx

四、基本没用的命令

1、info/version

docker info : 显示 Docker 系统信息,包括镜像和容器数。 docker version :显示 Docker 版本信息。 使用 docker inspect 命令可以用来获取 Docker容器 或者 Docker镜像 的元数据。该命令后面的 CONTAINER 可以是容器Id,或者是容器名。过于简单,不写案例。

2、history

docker history 命令用于打印出指定的 Docker镜像 的历史版本信息。

docker history [OPTIONS] IMAGE

3、events

docker events 命令用于打印出实时的系统事件。 基本没用的命令。

4、wait

docker wait 命令可以用于阻塞一个或多个 Docker容器直到容器停止,然后打印退出代码。

  1. docker wait命令等待一个正在运行的容器时,docker wait命令会一直阻塞,该容器退出时, docker wait命令会输出对应的退出码。
  2. docker wait 命令等待一个未运行的容器时,docker wait 命令不会阻塞,而是直接输出 0。