Docker $ 第二篇:Docker 镜像的使用

版权声明:自由转载-非商用-保持署名,听说看完点赞的人都挺帅。QQ交流群:865061230 https://blog.csdn.net/Sirius_hly/article/details/83445841

一.Docker镜像简介

1.镜像是Docker三大组件之一,Docker运行容器需要对应的镜像,如果说镜像是程序,那容器就是进程,如果本地不存在镜像,Docker就会从仓库自动下载镜像。

二.Docker使用镜像

  • 拉取镜像
# docker pull huangliangyun/hello-world:v1

语法

  1. # docker pull [选项][Docker Registry 地址[:端口号]/]仓库名[:标签]
  2. 地址格式:<域名/IP>[:端口号] 。默认地址是 Docker Hub。
  3. 仓库名格式:<用户名>/<软件名>(用户名默认为librury)。
  • 查看镜像
# 查看所有镜像
# docker images

语法

  1. # docker images [OPTIONS] [REPOSITORY[:TAG]]
  • 删除镜像
# 删除所有镜像
# docker rmi $(docker images)

语法

  1. # docker rmi [OPTIONS] IMAGE [IMAGE…]

三.commit 定制镜像

原则:

1.不轻易适应,应使用Dockerfile完成。
2.除了改动的文件,很多无关文件被修改、添加,导致镜像臃肿,难以维护。
3.可用作入侵后保存现场。

原理:

1.在原有镜像的基础上,叠加上容器的存储层。
2.将容器存储层保存下来成为镜像。

语法:

# docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

实例:
  1. 启动容器
# docker run --rm -d -p 80:80 --name webserver nginx

通过80端口可访问到nginx页面

  1. 进入容器
# docker exec -it webserver bash
  1. 更改页面信息
/# echo '<h1>Hello,Docker!</h1>'>/usr/share/nginx/html/index.html

修改后再次访问页面,发现内容已变

  1. 退出容器
/# exit
  1. 保存为新的镜像
# docker commit --author "hly <[email protected]>" --message "修改网页" webserver nginx:v2
  1. 关闭旧容器,运行新镜像
# docker rm -f $(docker ps -aq) 
# docker run  --rm -d -p 80:80 --name webserver nginx:v2

内容为修改后的内容

  1. 可关闭新容器,运行旧镜像
# docker rm -f $(docker ps -aq) 
# docker run --rm -d -p 80:80 --name webserver nginx

原来的镜像没有变化。

  1. 查看改动内容
# docker diff webserver
  1. 查看镜像历史
# docker history nginx:v2

四.Dockerfile定制镜像

原理

1.镜像定制是定制每一层添加的配置、文件。
2.把每一层修改、安装、构建、操作都写入一个脚本,用这个脚本定制镜像。
3.Dockerfile是文本文件,包含一条条指令,每一条指令构建一层,描述该层如何构建。

特点

构建的镜像透明,体积不臃肿,易于维护。

实例
  1. 在空文件夹下创建一个Dockerfile(名字可不为Dockerfile)
# mkdir myngnix
# cd mynginx
# touch Dockerfile

在这里插入图片描述

  1. 在Dockerfile文件里面输入以下内容
FROM nginx
RUN echo '<h1>Hello,Docker!</h1>'       > /usr/share/nginx/html/index.html
  • FROM
    1.指定镜像基础(以一个镜像为基础,在其上进行定制)
  • RUN
    1.每一个RUN指令建立一层镜像。
    2.可用&&将各命令串联,简化为一层。
    3.支持行尾添加\换行,首行#注释。
  1. 构建镜像
# 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。

  1. 构建成功后查看镜像
# docker images

猜你喜欢

转载自blog.csdn.net/Sirius_hly/article/details/83445841
今日推荐