本文针对Docker1.12的48条命令,找出了Image相关的9条,划分未必精确,大家也不会纠结。接下来看看这9条命令都是怎么用的。
镜像相关的docker命令
项番
命令
详解
No.2
build
Build an image from a Dockerfile
No.17
load
Load an image from a tar archive or STDIN
No.18
login
Log in to a Docker registry.
No.19
logout
Log out from a Docker registry.
No.27
pull
Pull an image or a repository from a registry
No.28
push
Push an image or a repository to a registry
No.32
rmi
Remove one or more images
No.34
save
Save one or more images to a tar archive (streamed to STDOUT by default)
No.42
tag
Tag an image into a repository
build
build是使用Dockerfile方式创建image时所必需的命令,比如,
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@liumiaocn ~]
FROM busybox
MAINTAINER liumiaocn@outlook .com
[root@liumiaocn ~]
使用这个2行的Dockerfile创建出一个busybox的镜像
[root@liumiaocn ~]
Sending build context to Docker daemon 86.19 MB
Step 1 : FROM busybox
Trying to pull repository docker.io/library /busybox ...
latest: Pulling from docker.io/library /busybox
8ddc19f16526: Pull complete
Digest: sha256:a59906e33509d14c036c8678d687bd4eec81ed7c4b8ce907b888c607f6a1e0e6
Status: Downloaded newer image for docker.io/busybox:latest
---> 2b8fd9751c4c
Step 2 : MAINTAINER liumiaocn@outlook.com
---> Running in 3289de364e7f
---> 51cb1d751e30
Removing intermediate container 3289de364e7f
Successfully built 51cb1d751e30
[root@liumiaocn ~]
因为事前没有busybox的镜像,所以在build的时候会自动下载,build之后再次确认信息如下
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 51 cb1d751e30 8 seconds ago 1.093 MB
docker.io/busybox latest 2 b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]
IMAGE ID为51cb1d751e30的是刚刚build的镜像,从CREATED的时间可以看出,以及REPOSITORY,最关键的是build最后会提示出该IMAGEID“Successfully built 51cb1d751e30”。build的时候有很多option可以使用,基础教程教程只负责入门,详细使用方法自行研究,其他命令也是如此。
tag
有很多用法,主要用来建立TAG和REPOSITORY之间的关联。从直观地感受上来说是用来修改docker images出来的REPOSITORY和tag的信息的。比如:
[root@liumiaocn ~]
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 51 cb1d751e30 8 minutes ago 1.093 MB
docker.io/busybox latest 2 b8fd9751c4c 3 months ago 1.093 MB
hello world 2 b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]
请实际执行的时候REPOSITORY和TAG使用实际意义,例子只是找个乐子而已。但是请注意到修改前后的IMAGE ID都是同一个,说明实际docker在处理这个操作的时候应该只是做了一个alias类似的动作。
rmi
rmi即为remove image的意思,等我们以后研究的东西全部都用汉语拼音的缩写,scjx,累死他们不会汉语的。
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 2 b8fd9751c4c 3 months ago 1.093 MB
hello world 2 b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]
Untagged : hello: world
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 2 b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]
删除tag的内容其实只是untag一下,如果实际删除还会有实际的删除信息提示出来
[root@liumiaocn ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io /busybox latest 2 b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]#
[root@liumiaocn ~]# docker rmi docker.io/busybox
Untagged: docker.io /busybox:latest
Deleted: sha256:2 b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749
Deleted: sha256:8 ac8bfaff55af948c796026ee867448c5b5b5d9dd3549f4006d9759b25d4a893
[root@liumiaocn ~]#
pull
pull命令用于从dockerhub或者自建的repository上pull下相关的image,一般使用search先确认,比如我们pull以下刚才下载的busybox
docker build的时候其根据依赖关系,如果本地没有该镜像的话,就会自动地到dockerhub上去拖。
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@liumiaocn ~]
Using default tag: latest
Trying to pull repository docker.io/library /busybox ...
latest: Pulling from docker.io/library /busybox
8ddc19f16526: Pull complete
Digest: sha256:a59906e33509d14c036c8678d687bd4eec81ed7c4b8ce907b888c607f6a1e0e6
Status: Downloaded newer image for docker.io/busybox:latest
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 2b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]
save
将镜像文件保存为一个archive文件
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 2 b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]
[root@liumiaocn ~]
-rw-r--r--. 1 root root 1302016 Sep 23 20 : 18 busybox.tar
[root@liumiaocn ~]
load
load是save的反向操作,将save的文件load成为docker管理的镜像。
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@liumiaocn ~]
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 2 b8fd9751c4c 3 months ago 1.093 MB
[root@liumiaocn ~]
再确认一下history,还都在
[root@liumiaocn ~]
IMAGE CREATED CREATED BY SIZE COMMENT
2 b8fd9751c4c 3 months ago /bin/sh -c
<missing> 3 months ago /bin/sh -c
[root@liumiaocn ~]
login
login操作是了演示后面的logout和push命令,用户和repository之间建立的关联通过login/logout/pull/push来进行。
既可以和dockerhub进行连携,也可以在企业自己创立的私库进行操作,比如如下是用liumiaocn的个人账户登陆到dockerhub
[root@liumiaocn ~]# docker login
Username: liumiaocn
Password:
Email: liumiaocn@outlook.com
WARNING: login credentials saved in /root/.docker /config.json
Login Succeeded
[root@liumiaocn ~]#
注意此处会把login相关的用户信息放到/root/.docker/config.json中,而与之成对的logout命令则是通过这个文件判断是否在login的状态的
logout
logout则是login的反向操作
[root@liumiaocn ~]
Remove login credentials for https: //index.docker.io/v 1/
[root@liumiaocn ~]
在logout的基础上再次logout的话,会提示如下
[root@liumiaocn ~]
Not logged in to https: //index.docker.io/v 1/
[root@liumiaocn ~]
确认之后发现,config.json的auth信息已经被清空
[root@liumiaocn ~]
{
"auths" : {}
}[root@liumiaocn ~]
push
push命令用于将本地镜像推送到远端的respository中,如果事前没有login的话,会push失败。
[root@liumiaocn ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/liumiaocn/pause-amd64 latest a7403e3eec99 2 weeks ago 350.2 kB
[root@liumiaocn ~]
The push refers to a repository [docker.io/liumiaocn/pause-amd64]
5 f70bf18a086: Layer already exists
38157 ef1625c: Layer already exists
unauthorized: authentication required
[root@liumiaocn ~]
login之后,成功push。
[root@liumiaocn ~]# docker login
Username: liumiaocn
Password:
Email: liumiaocn@outlook.com
WARNING: login credentials saved in /root/.docker /config.json
Login Succeeded
[root@liumiaocn ~]# docker push docker.io/liumiaocn/pause-amd64
The push refers to a repository [docker.io /liumiaocn/pause-amd64]
5 f70bf18a086: Layer already exists
38157 ef1625c: Layer already exists
latest: digest: sha256:c629c9e027a27d9a398e0a2d7179e3d8034a40a5e0c804d65bdaff34372818c0 size: 711
[root@liumiaocn ~]#