前言

如何安装Docker?请参考上一篇文章(传送门)
Docker环境信息、容器生命周期管理部分命令参考上一篇文章(传送门)
总结到了一张脑图上,可以做个参考,查看高清版请点我
Docker学习笔记(2)_java

镜像仓库相关命令

1.docker login
登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

1
2
3
4
docker login [OPTIONS] [SERVER]

-u :登陆的用户名
-p :登陆的密码

示例:

1
docker login -u username -p password

Docker学习笔记(2)_java_02
你也可以这样直接docker login,然后会让你输入用户名和密码,验证成功就登录了。
Docker学习笔记(2)_java_03
2.docker logout
登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
示例:

1
docker logout

Docker学习笔记(2)_java_04

logout


3.docker search
从Docker Hub上查找指定的镜像


1
2
3
4
5
docker search [OPTIONS] images

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

示例 从Docker Hub查找所有镜像名包含nginx的,并且收藏数大于10的镜像:

1
docker search -s 10 nginx

Docker学习笔记(2)_java_05

search


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


1
2
3
4
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

-a:拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启

示例 从Docker Hub拉取nginx最新版镜像:

1
docker pull nginx

Docker学习笔记(2)_java_06

pull


5.docker push
将本地的镜像上传到镜像仓库,首先要登录到镜像仓库,还要登录到Docker Hub创建对应名称的仓库,然后用tag命令给镜像打标签,只有打上标签才可以上传成功。(详细介绍)


1
2
3
docker push [OPTIONS] NAME[:TAG]

--disable-content-trust :忽略镜像的校验,默认开启

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

1
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

一个完整的push示例:

1
2
3
4
5
6
7
[root@localhost ~]# docker tag nginx:latest area39/nginx:v1
[root@localhost ~]# docker push area39/nginx:v1
The push refers to repository [docker.io/area39/nginx]
589561a3ffb4: Pushed
ef7dbb0cfc81: Pushed
d56055da3352: Pushed
v1: digest: sha256:f83b2ffd963ac911f9e638184c8d580cc1f3139d5c8c33c87c3fb90aebdebf76 size: 948

Docker学习笔记(2)_java_07
Docker学习笔记(2)_java_08
Docker学习笔记(2)_java_09
Docker学习笔记(2)_java_10

镜像管理相关命令

1.docker build
用于使用Dockerfile文件创建镜像,是一个比较常用和重要的命令,关于Dockerfile文件如何定制化,后续会写一篇文专门讲。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker build [OPTIONS] PATH | URL | -

--build-arg=[] :设置镜像创建时的变量;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--tag, -t: 镜像的名字及标签,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式

使用当前目录的Dockerfile创建镜像,标签为”ctf-sqli:1”,注意后面的”.”千万不能丢。

1
[root@localhost docker-for-web]# docker build -t ctf-sqli:1 .

Docker学习笔记(2)_java_11
Docker学习笔记(2)_java_12
2.docker images
通过docker images命令可以列出主机上的镜像,默认只列出最顶层的镜像,可以使用-a选项显示出所有镜像

1
2
3
4
5
6
7
docker images [OPTIONS] [REPOSITORY[:TAG]]

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
--digests :显示镜像的摘要信息
-f :显示满足条件的镜像
--format :指定返回值的模板文件
--no-trunc :显示完整的镜像信息

示例:

1
[root@localhost ~]# docker images -a

Docker学习笔记(2)_java_13

images


3.docker rmi
docker rmi命令用于删除镜像,删除镜像时,如果已有基于该镜像启动的容器存在,则无法直接删除,需要先用rm命令删除容器。这两个子命令都提供 -f 选项,可强制删除存在容器的镜像或启动中的容器。


1
2
3
4
docker rmi [OPTIONS] IMAGE [IMAGE...]

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

示例 删除ubuntu:16.04镜像:

1
2
3
4
5
6
7
8
[root@localhost ~]# docker rmi ubuntu:16.04
Untagged: ubuntu:16.04
Untagged: ubuntu@sha256:58d0da8bc2f434983c6ca4713b08be00ff5586eb5cdff47bcde4b2e88fd40f88
Deleted: sha256:9361ce633ff193349d54bed380a5afe86043b09fd6ea8da7549dbbedfc2a7077
Deleted: sha256:59a6856f439d187f3ce3381d0a6b0816db99cc3d8468bcf8c9d1c39d2071dcff
Deleted: sha256:82997a16a0d57ac7d8b416c0d83f5841193b6a56a7844b486ab6324730867fe0
Deleted: sha256:5c6983f277f26021b5e38501fdf06fa29f7158a93641f3f10aedbdc9869121d0
Deleted: sha256:aa54c2bc12290df2851a94b8834cae75e4627219d2b423d4d3db8b0a497e79a2

Docker学习笔记(2)_java_14

rmi


4.docker save
将指定镜像保存成tar归档文件


1
2
3
docker save [OPTIONS] IMAGE [IMAGE...]

-o :输出到的文件

示例 将nginx:latest镜像归档为tar文件:

1
2
3
[root@localhost ~]# docker save -o nginx.tar nginx:latest
[root@localhost ~]# ls
nginx.tar

Docker学习笔记(2)_java_15

save


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


1
2
3
4
docker load [OPTIONS]

-i :指定导出的文件
-q :精简输出信息

示例 导入nginx:latest镜像:

1
2
3
4
5
[root@localhost ~]# docker load -i nginx.tar
Loaded image: nginx:latest
[root@localhost ~]# docker images nginx:latest
REPOSITORYTAG IMAGE IDCREATED SIZE
nginx latest98ebf73aba753 days ago109MB

Docker学习笔记(2)_java_16

load


6.docker commit
docker commit命令可以将一个容器固化为一个新的镜像。当需要制定特定的镜像时,会进行修改容器的配置,比如在容器中安装一些特定的工具等,通过commit命令可以将这些修改保存起来,使其不会因为容器的停止而丢失


1
2
3
4
5
6
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停

示例:

1
2
[root@localhost ~]# docker commit -a "Linuz" 66d682605023 ubuntu:linuz
sha256:5e0162d1e4e9d04a37c3c10b052d435555f3961e029735ed07c96d66c6a6e608

Docker学习笔记(2)_java_17