转载:
http://blog.itpub.net/31556785/viewspace-2564295/
https://blog.csdn.net/huangjun0210/article/details/85764357
1. 镜像管理
(1) 镜像搜索(docker search)
- 在搭建项目环境的时候我们可以通过检索docker官方为我们提供的镜像云仓库,查看是否已经有别人构建好的镜像,可以拉取下来直接使用。
- 命令格式:docker search [参数] 搜索项
- 常用参数:
-f 根据提供的格式筛选结果
--limit int 展示最大的结果数,默认为25
(2) 镜像下载(docker pull)
- 根据项目需求挑选心仪的镜像,我们就可以把它下载下来。
- 命令格式:docker pull [参数] 镜像名称[:版本号]
注意:这里版本号没有指定,默认下载最新版本的镜像,例如 Ubuntu 最新的镜像版本为18.04,你想下载16.04的版本就可以使用 docker pull ubuntu:16.04下载指定版本
(3) 镜像查看(docker images / doker image ls)
- 上一步我们下载了心仪的镜像,如何确定镜像下载成功了呢?我们可以使用docker images / doker image ls查看本地镜像
- 命令格式:
docker images [参数] [仓库名[版本号]]
docker image ls [参数] [仓库名[版本号]] - 常用参数:
-a 展示所有的镜像
-q 只展示镜像ID
(4) 镜像删除(docker rmi / docker image rm)
- 命令格式:
docker rmi [参数] 镜像名[镜像名…] – 可以同时删除一个或多个本地镜像 - 常用参数:
-f 强制删除
(5) 镜像保存备份(docker save)
-
命令格式:
docker save [参数] 镜像名[镜像名…] | 镜像ID[镜像ID…] – 可以打包一个或多个镜像保存成本地tar文件 -
常用参数:
- o 指定写入的文件名和路径,默认为STDOUT
注意:导出时建议指定镜像的名称最好不要使用镜像ID,否则备份导入时镜像名称与版本号会显示none
(6) 镜像备份导入(docker load)
-
命令格式:docker load [参数]
-
常用参数:
- i 指定要导入的文件默认为STDIN
(7) 镜像重命名(docker rename)
如果很不幸,你在镜像导出时选择的是镜像ID导出,那么你可以使用rename重命名那些信息显示不全的镜像
- 命令格式:docker rename [源镜像] [新镜像]
(8) 镜像历史信息(docker history)
这个命令在之后使用Dockerfile创建docker镜像时会经常用到,我们可以使用这个命令查看镜像在之前的更改操作。
- 命令格式:docker history [参数] 镜像
(9) 镜像详细信息(docker image inspect)
- 命令格式:
docker image inspect [参数] 镜像 [镜像…]
docker inspect [参数] 镜像 [镜像…] - 命令参数:
-f 利用特定Go语言的format格式输出结果
注意:我们不带参数的使用docker inspect 会打印长串的信息(标准的json格式),所以推荐使用 -f 参数查看指定的信息
-f 参数使用的简单实例:
2. 构建镜像
构建Docker镜像有以下两种方法:
- 使用docker commit命令。
- 使用Dockerfile 文件。
不推荐使用docker commit来构建镜像,而应该使用更灵活、更强大的Dockerfile来构建Docker镜像。
docker commit 构建镜像可以想象为是在往版本控制系统里提交变更。我们先创建一个容器,并在容器里做出修改,就像修改代码一样,最后再将修改提交为一个镜像。
(1) docker commit命令创建镜像
[root@eshop-cache05 ~]# docker run -i -t centos /bin/bash
[root@013c7cd152f0 /]# lsof -i:8080
bash: lsof: command not found
[root@013c7cd152f0 /]# yum install lsof
我们启动了一个容器,并在里面安装了lsof。使用docker commit命令创建镜像,需要先使用exit命令从容器里退出,之后再运行docker commit命令:
[root@eshop-cache05 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
013c7cd152f0 centos "/bin/bash" 7 minutes ago Exited (1) 13 seconds ago quizzical_swartz
[root@eshop-cache05 ~]# docker commit 013c7cd152f0 test/centos-lsof
sha256:9b132f56464faad7794451276ef13e0e46a15bc05154ee15ddb170479994de43
[root@eshop-cache05 ~]# docker images test/centos-lsof
REPOSITORY TAG IMAGE ID CREATED SIZE
test/centos-lsof latest 9b132f56464f About a minute ago 272MB
在使用docker commit命令中,指定了要提交的修改过的容器的ID(可以通过docker ps命令得到刚创建的容器ID),以及一个目标镜像仓库和镜像名,这里是test/centos-lsof。需要注意的是,docker commit提交的只是创建容器的镜像与容器的当前状态之间有差异的部分,这使得该更新非常轻量。通过docker images 可以查看新创建的镜像信息。
(2) Dockerfile 文件创建镜像
[root@eshop-cache05 opt]# mkdir centos-lsof
[root@eshop-cache05 opt]# cd centos-lsof/
[root@eshop-cache05 centos-lsof]# vim Dockerfile
创建一个名为centos-lsof的目录用来保存Dockerfile,这个目录就是我们的构建环境(build environment),Docker则称此环境为上下文(context)或者构建上下文(build context)。Docker会在构建镜像时将构建上下文和该上下文中的文件和目录上传到Docker守护进程。这样Docker守护进程就能直接访问你想在镜像中存储的任何代码、文件或者其他数据。这里我们还创建了一个Dockerfile文件,我们将用它构建一个能作为Web服务器的Docker镜像。
Dockerfile文件内容如下:
FROM centos
RUN yum install -y lsof
执行docker build命令时,Dockerfile中的所有指令都会被执行并且提交,并且在该命令成功结束后返回一个新镜像。
[root@eshop-cache05 centos-lsof]# docker build -t="hj/centos-lsof" .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos
---> 1e1148e4cc2c
Step 2/2 : RUN yum install -y lsof
---> Running in 608dfe9f6ee5
...
Successfully built e713f53bf3cf
Successfully tagged hj/centos-lsof:latest
- -t选项为新镜像设置了仓库和名称,这里仓库为hj,镜像名为centos-lsof。
- 命令中最后的“.”告诉Docker到当前目录中去找Dockerfile文件。也可以指定一个Git仓库地址来指定Dockerfile的位置,这里Docker假设在Git仓库的根目录下存在Dockerfile文件。
[root@eshop-cache05 centos-lsof]# docker build -t="hj/centos-lsof" [email protected]:hj/centos-lsof
构建成功可以通过docker images查看
[root@eshop-cache05 centos-lsof]# docker images hj/centos-lsof
REPOSITORY TAG IMAGE ID CREATED SIZE
hj/centos-lsof latest e713f53bf3cf 5 minutes ago 272MB
3. 发布镜像
具体查看转载博客:
https://blog.csdn.net/huangjun0210/article/details/85764357