本篇文章基本概括了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的区别:
- docker save保存的是镜像(image),docker export保存的是容器(container);
- docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
- 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
- docker restart 命令可以用来重新启动一个或者多个 Docker容器。
- docker stop 命令可以用来停止一个运行中的 Docker容器。
- 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
- docker pause 命令可以用来暂停 Docker容器 中所有的进程。
- 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
- docker exec 命令可以用来在运行的 Docker容器 中执行命令。docker exec命令是需要容器处于运行中且 PID 1 进程也处于运行中才能执行的操作。
- 使用 docker attach 命令可以用来进入到一个正在运行的 Docker容器。 区别:
- docker attach命令进入到正在运行的 Docker容器后,如果使用 exit 命令或者 Ctrl+d 退出容器后,原来正在运行的容器也会停止。
- docker attach命令进入到正在运行的 Docker容器后,如果使用 Ctrl+p+q 退出容器后,原来正在运行的容器不会停止。
- 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。 |
- 使用 docker inspect CONTAINER -f {{.Name}} 命令,可以获取容器名。
- 使用 docker inspect CONTAINER -f {{.NetworkSettings}} 命令,可以获取容器网络设置的相关信息。
- 使用 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容器直到容器停止,然后打印退出代码。
- docker wait命令等待一个正在运行的容器时,docker wait命令会一直阻塞,该容器退出时, docker wait命令会输出对应的退出码。
- docker wait 命令等待一个未运行的容器时,docker wait 命令不会阻塞,而是直接输出 0。