ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker镜像的构建方式

2020-11-29 20:34:07  阅读:212  来源: 互联网

标签:5000 centos server1 构建 镜像 Docker root docker


一、Docker镜像的分层

·Dockerfile中的每个指令都会创建一个新的镜像层

·镜像层将被缓存和复用

·当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效

·某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效

·镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件

 

二、Docker镜像的创建

1、Docker镜像

·应用发布的标准格式

·支撑一个Docker容器的运用

2、Docker镜像的创建方法

(1)、基于已有镜像创建

   将容器里面运行的程序及运行环境打包生成新的镜像

   docker commit 【选项】 容器ID/名称 仓库名称:【标签】

   ·-m 说明信息

  ·-a 作者信息

  ·-p 生成过程中停止容器的运行

 

 

 

 

(2)、基于本地模板创建

·通过导入操作系统模板文件生成新的镜像

·使用wget命令导入为本地镜像

  wget

  http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

·导入成功后可查看本地镜像信息

  docker images | grep new

 

 

 

 

(3)、基于Dockerfile创建

·Dockerfile是由一组指令组成的文件

·Dockerfile结构四部分

   基础镜像信息

   维护者信息

   镜像操作指令

   容器启动时执行指令

·Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dockerfile操作指令

 

三、私有仓库建立

[root@server1 apache]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
cbdbe7a5bc2a: Pull complete
47112e65547d: Pull complete
46bcb632e506: Pull complete
c1cc712bcecd: Pull complete
3db6272dcbfa: Pull complete
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@server1 apache]# vim /etc/docker/daemon.json
{
"insecure-registries": ["20.0.0.11:5000"],       
"registry-mirrors": ["https://lyoy0ey2.mirror.aliyuncs.com"]
}
[root@server1 apache]# systemctl restart docker.service

 

 

[root@server1 apache]# docker create -it registry /bin/bash
b8fca969d55da2cd78b07750142498eda2ffe25428edbff1aa592fb4f08c20ed [root@server1 apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
b8fca969d55d        registry            "/entrypoint.sh /bin…"   6 seconds ago       Created                                               fervent_noether [root@server1 apache]# docker start b8fca969d55d
b8fca969d55d

 

[root@server1 apache]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

de58e178a3172ecc8c52bcaf4063da21a5eb9a1605180add6a03a8064a257cf5
[root@server1 apache]# docker tag httpd:centos 20.0.0.10:5000/httpd

 

[root@server1 apache]# docker push 20.0.0.10:5000/httpd
The push refers to repository [20.0.0.10:5000/httpd]
7bf28fb5dbac: Pushed
35fc0f295312: Pushed
3069654c482f: Pushed
5eb6c74f0823: Pushed
174f56854903: Pushed
latest: digest: sha256:1782102d1c3c1231cd4c17035381e83dc2844547af30c9067a3f96334d585dba size: 1362 获取私有仓库列表
[root@server1 apache]# curl -XGET http://20.0.0.10:5000/v2/_catalog
{"repositories":["httpd"]}    #显示上传成功 删除centos镜像
[root@server1 registry]# docker rmi 20.0.0.10:5000/httpd:latest 测试私有仓库下载
[root@server1 registry]# docker pull 20.0.0.10:5000/httpd
Using default tag: latest
latest: Pulling from httpd
2d473b07cdd5: Already exists
5e105bbe607b: Pull complete
0ce1bb40a734: Pull complete
bf8183ec3c05: Pull complete
1b093a1fad54: Pull complete
Digest: sha256:1782102d1c3c1231cd4c17035381e83dc2844547af30c9067a3f96334d585dba
Status: Downloaded newer image for 20.0.0.10:5000/httpd:latest
20.0.0.10:5000/httpd:latest

 

四、Docker数据卷

1、数据卷容器

 

[root@server1 www]# docker run --name web100 -v /data2 -v /data3 -it centos:7 /bin/bash     [root@server1 registry]# docker run -it --volumes-from web100 --name db1 centos:7 /bin/bash [root@941d8414bc15 /]# ls
anaconda-post.log  data3  home   media  proc  sbin  tmp
bin                dev    lib    mnt    root  srv   usr
data2              etc    lib64  opt    run   sys   var [root@ac1a1deff23d /]# ls
anaconda-post.log  data3  home   media  proc  sbin  tmp
bin                dev    lib    mnt    root  srv   usr
data2              etc    lib64  opt    run   sys   var [root@ac1a1deff23d /]# cd data2
[root@ac1a1deff23d data2]# touch aa
[root@ac1a1deff23d data2]# ls
aa
[root@ac1a1deff23d data2]# cd /data3
[root@ac1a1deff23d data3]# touch bb
[root@ac1a1deff23d data3]# ls
bb [root@941d8414bc15 /]# cd data2
[root@941d8414bc15 data2]# ls
aa
[root@941d8414bc15 data2]# cd /data3
[root@941d8414bc15 data3]# ls
bb

2、端口映射

[root@server1 docker]# docker run -d -P httpd:centos           
8d2b86c97ac08628fb197d6fdbdabe883195fe43875f9e71efbca94ac559a0aa
[root@server1 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                    NAMES
8d2b86c97ac0        httpd:centos        "/run.sh"                5 seconds ago       Up 4 seconds                   0.0.0.0:32768->80/tcp    amazing_northcutt [root@server1 docker]# docker run -d -p 2222:80 httpd:centos   
cc7230fdf9c3a40b05733f94989740f488aafdcb6648093325f84fb0fe0f460d
[root@server1 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                         PORTS                    NAMES
cc7230fdf9c3        httpd:centos        "/run.sh"                6 seconds ago        Up 5 seconds                   0.0.0.0:2222->80/tcp     heuristic_newton 3、容器互联 [root@server1 docker]# docker run -dit -P --name web11 centos:7 /bin/bash
5fa7635068c78b7c0fc331398ae5f4e393001c1f5c5f02072d11f3471f07e341 --name  [root@server1 docker]# docker run -dit -P --name web22 --link web11:web11 centos:7 /bin/bash
b413c6cbf148cb7670084e8e31c24993e61f1cc83efb2eee4a1cd38ee1325ed7 --link  [root@server1 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                    NAMES
b413c6cbf148        centos:7            "/bin/bash"              3 minutes ago       Up 3 minutes                                              web22
5fa7635068c7        centos:7            "/bin/bash"              4 minutes ago       Up 4 minutes                                              web11 [root@server1 docker]# docker exec -it b413c6cbf148 /bin/bash [root@b413c6cbf148 /]# ping web11
PING web11 (172.17.0.5) 56(84) bytes of data.
64 bytes from web11 (172.17.0.5): icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from web11 (172.17.0.5): icmp_seq=2 ttl=64 time=0.058 ms
64 bytes from web11 (172.17.0.5): icmp_seq=3 ttl=64 time=0.060 ms
--- web11 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.058/0.061/0.066/0.007 ms [root@b413c6cbf148 /]# yum -y install net-tools
[root@b413c6cbf148 /]# ifconfig    
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.6  netmask 255.255.0.0  broadcast 172.17.255.255    
        ether 02:42:ac:11:00:06  txqueuelen 0  (Ethernet)
        RX packets 7114  bytes 11320444 (10.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3999  bytes 219299 (214.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

标签:5000,centos,server1,构建,镜像,Docker,root,docker
来源: https://www.cnblogs.com/Xing88/p/14045575.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有