本文共 2127 字,大约阅读时间需要 7 分钟。
1.镜像是Docker三大组件之一,Docker运行容器需要对应的镜像,如果说镜像是程序,那容器就是进程,如果本地不存在镜像,Docker就会从仓库自动下载镜像。
# docker pull huangliangyun/hello-world:v1
语法
- # docker pull [选项][Docker Registry 地址[:端口号]/]仓库名[:标签]
- 地址格式:<域名/IP>[:端口号] 。默认地址是 Docker Hub。
- 仓库名格式:<用户名>/<软件名>(用户名默认为librury)。
# 查看所有镜像# docker images
语法
- # docker images [OPTIONS] [REPOSITORY[:TAG]]
# 删除所有镜像# docker rmi $(docker images)
语法
- # docker rmi [OPTIONS] IMAGE [IMAGE…]
1.不轻易适应,应使用Dockerfile完成。
2.除了改动的文件,很多无关文件被修改、添加,导致镜像臃肿,难以维护。 3.可用作入侵后保存现场。
1.在原有镜像的基础上,叠加上容器的存储层。
2.将容器存储层保存下来成为镜像。
# docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
# docker run --rm -d -p 80:80 --name webserver nginx
通过80端口可访问到nginx页面
# docker exec -it webserver bash
/# echo 'Hello,Docker!
'>/usr/share/nginx/html/index.html
修改后再次访问页面,发现内容已变
/# exit
# docker commit --author "hly <1136513099@qq.com>" --message "修改网页" webserver nginx:v2
# docker rm -f $(docker ps -aq) # docker run --rm -d -p 80:80 --name webserver nginx:v2
内容为修改后的内容
# docker rm -f $(docker ps -aq) # docker run --rm -d -p 80:80 --name webserver nginx
原来的镜像没有变化。
# docker diff webserver
# docker history nginx:v2
1.镜像定制是定制每一层添加的配置、文件。
2.把每一层修改、安装、构建、操作都写入一个脚本,用这个脚本定制镜像。 3.Dockerfile是文本文件,包含一条条指令,每一条指令构建一层,描述该层如何构建。
构建的镜像透明,体积不臃肿,易于维护。
# mkdir myngnix# cd mynginx# touch Dockerfile
FROM nginxRUN echo 'Hello,Docker!
' > /usr/share/nginx/html/index.html
- FROM 1.指定镜像基础(以一个镜像为基础,在其上进行定制)
- RUN 1.每一个RUN指令建立一层镜像。 2.可用&&将各命令串联,简化为一层。 3.支持行尾添加\换行,首行#注释。
# docker build -t nginx:v3 .
(文件所在目录执行,末尾有点,指上下文目录)
过程
1.RUN指令启动容器。
# docker build [选项] <上下文路径/URL/->
2.提交修改(层)。 3.删除容器。
参数
-f:指定要使用的Dockerfile路径
-m:设置内存最大值 –no-cache:创建镜像的过程不使用缓存 –pull:尝试去更新镜像的新版本 -quiet, -q:安静模式,成功后只输出镜像 ID –rm:设置镜像成功后删除中间容器 –tag, -t:镜像的名字及标签
注意事项
1.不能放到根目录,否则会打包硬盘下所有文件。
2.可以写.dockerignore剔除不需要上下文传递给docker引擎文件。 3.可用-f …/xx/指定某个文件作为Dockerfile. 4.支持URL构建:docker build https://github.com/xxx。
# docker images
公众号:【星尘Pro】
github:
推荐阅读
转载地址:http://xbfsi.baihongyu.com/