栏目头部广告

Docker自定义镜像操作

1、镜像与容器联系

(1)  镜像是什么 ?

简单说,Docker 镜像是一个不包含 Linux 内核而又精简的 Linux 操作系统。

(2)  镜像从哪来 ?

Docker Hub 是由 Docker 公司负责维护的公共注册中心,包含大量的容器镜像, Docker 工具默认从这个公共镜像库下载镜像。

https://hub.docker.com/explore

默认是国外的源,下载会慢,建议配置国内镜像仓库:https://blogs.starcto.com/mirror-speed/

(3)  镜像和容器联系 ?

Docker自定义镜像操作(图1)

【注】以上 容器和镜像的关系图中 ,镜像 是只读的 ,所有 操作都在容器中进行 , 被临时存在 在 docker  运行目录的 container  文件中,当容器被删除时 , 那么容器 所 写的东西 被全部删除。

[root@docker /]# docker history nginx #Docker的层级,每层都有大小

Docker自定义镜像操作(图2)

【注】 镜像 就是在容器上添加了一个读写层。

Docker自定义镜像操作(图3)

【注】overlay2 : 存储驱动目录 , 存放镜像数据 。CentOS7  默认

2、镜像导出save-离线

【注】场景:针对没有网络的主机或者从现网pull比较慢的情况下,可以本地打包已经存在的镜像进行共享。

[root@ansible ~]# docker save docker.io/debian:8.10 > /tmp/debian.tar

Docker自定义镜像操作(图4)

#删除现有镜像

[root@ansible ~]# docker images

Docker自定义镜像操作(图5)

[root@ansible ~]# docker container ps -a #查看所有容器列表

Docker自定义镜像操作(图6)

[root@ansible ~]# docker rm 6e72c6a6ee92  #删除debian容器

3、镜像导入load-离线

【注】导出用>,导入用<

[root@ansible ~]# docker load < /tmp/debian.tar

Loaded image: docker.io/debian:8.10

4、Dockerfile构建镜像

[root@ansible ~]# mkdir /mnt/stargao/

[root@ansible ~]# touch /mnt/stargao/Dockerfile

[root@ansible ~]# vim /mnt/stargao/Dockerfile

FROM centos:6.9

MAINTAINER stargao "stargao@ucloud.com"

RUN /bin/echo 'root:redhat' |chpasswd  

RUN useradd stargao

RUN /bin/echo 'stargao:stargao' |chpasswd

RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local

EXPOSE 22

EXPOSE 80

CMD /usr/sbin/sshd -D

Docker自定义镜像操作(图7)

#从本地开始构建镜像

[root@ansible ~]# docker build -t centos-stargao:v1 /mnt/stargao/

Docker自定义镜像操作(图8)

5、使用容器构建Docker镜像

【注】应用场景,部署一个容器,在容器中安装和部署业务所需的安装包和程序,部署完成,将容器打包成镜像,可以实现业务一键部署。

#创建容器,指定容器名为stargao_debian

[root@ansible ~]# docker run -it --name=stargao_debian docker.io/debian:8.10 bash

Docker自定义镜像操作(图9)

#打包容器,制作成镜像

[root@ansible ~]# docker commit -m "debian_stargao v1" -a=stargao stargao_debian localimage/debian_stargao:v1

【描述】-m镜像描述,-a镜像作者。红色部分是需要打包容器的名称;蓝色部分是打包后的镜像名称。

Docker自定义镜像操作(图10)

6、容器导入 import、导出export

#容器导出成文件

[root@ansible ~]# docker export -o /tmp/debian_stargao_v2.tar stargao_debian

Docker自定义镜像操作(图11)

#容器文件导入成镜像

[root@ansible ~]# docker import -m "stargao_debian_v3" /tmp/debian_stargao_v2.tar localimage/stargao_debian:v3

作者:UStarGao
链接:https://www.starcto.com/docker/86.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`