在Docker file中定义所需要执⾏的指令,使⽤ docker build创建镜
像,过程中会按照dockerfile所定义的内容进⾏打开临时性容器,把
docker file中命令全部执⾏完成,就得到了⼀个容器应⽤镜像,每
⼀⾏命令都会出现容器,都会使⽤docker commit进⾏提交⼀个临
时性的镜像
注意执⾏的命令越多,镜像体积越⼤,所以需要优化镜像
Docker file关键字
1.FORM 指定基础镜像为该镜像的最后修改版本
2.FROM <image :tag>指定基础镜像为该镜像的⼀个tag版本
3.MAINTAINER
指定镜像创建者,企业内部不⽤指定,对外发
布也可以不指定
3.RUN 运⾏命令,安装软件
4.CMD 设置container启动时进⾏的操作,如果容器镜像中有这
个命名,启动容器时,不要⼿动让容器执⾏其他命令
5.ENTRYPORINT(⼊⼝点)cmd每次只能执⾏⼀个指令,
entrypoint可以多⾏执⾏。6.USER设置容器进程的⼀些⽤户
7.EXPOSE 暴露端⼝ 指定容器需要映射到宿主机的端⼝
8.ENV
设置环境变量 -e
9.ADD 从宿主机src复制⽂件到容器的dest路径
10.volumn 指定挂载点
11.WROKDIR 切换⽬录
12.ONBUILD在⼦镜像中执⾏指令
通过dockerfile创建⼀个在启动容器时,就可以启动httpd服务的镜
像
步骤
- 创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件
- 在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂
件 - 使⽤docker build创建镜像
- 使⽤创建的镜像启动容器(验证)
思考 - 基础镜像
- yum -y install httpd
- 使⽤脚本启动服务(httpd -k start)
- 应该将httpd服务放在前端执⾏
- 暴露端⼝ 80/tcp
- 添加⼀个测试⽂件,⽤于验证软件是否可⽤
过程
1.创建⽬录
root@docker001 \~\]# mkdir test # 2.跳转到⽬录中\[root@docker001 \~\]# cd test/ # 3.编辑启动脚本 \[root@docker001 test\]# vim start.sh \[root@docker001 test\]# cat start.sh ###################################### #!/bin/bah rm -rf /run/httpd/\* exec /sbin/httpd -D FOREGROUND ###################################### # 4.编辑index.html⽂件 \[root@docker001 test\]# vim index.html # 5.编辑Dockerfile \[root@docker001 test\]# vim Dockerfile #################################### FROM centos_yum:v0 MAINTAINER "httpd server start [email protected]" RUN yum clean all RUN yum makecacheRUN yum -y install httpd ADD start.sh /start.sh RUN chmod -v +x /start.sh Add index.html /var/www/html/ EXPOSE 80 WORKDIR / CMD \["/bin/bash","/start.sh"
####################################
6.创建镜像
root@docker001 test\]# docker build -t centos:httpd . \[+\] Building 51.6s (12/12) FINISHED docker:default=\> \[internal\] load build definition from Dockerfile 0.0s =\> =\> transferring dockerfile: 309B 0.0s =\> \[internal\] load metadata for docker.io/library/centos_yum:v0 0.0s =\> \[internal\] load .dockerignore 0.0s =\> =\> transferring context: 2B 0.0s =\> \[1/8\] FROM docker.io/library/centos_yum:v0 0.0s =\> \[internal\] load build context 0.0s =\> =\> transferring context: 180B 0.0s =\> \[2/8\] RUN YUM clean all 2.3s =\> \[3/8\] RUN YUM makecache 42.7s =\> \[4/8\] RUN YUM -y install httpd 5.8s =\> \[5/8\] ADD START.SH /START.SH 0.0s=\> \[6/8\] RUN CHMOD -v +x /start.sh 0.2s =\> \[7/8\] ADD INDEX.HTML /VAR/WWW/HTML/ 0.0s =\> exporting to image 0.5s =\> =\> exporting layers 0.4s =\> =\> writing image sha256:a488bc9f4cfb58a91baa57c2ab9faf615d457ff8714 e4e958e7220a253469ed 0.0s =\> =\> naming to docker.io/library/centos:httpd # 7.查看镜像 \[root@docker001 test\]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE centos httpd a488bc9f4cfb About a minute ago 352MB centos nginx 12fea1b890de 41 hours ago 366MB centos java17 b6bf774de7bb 41 hours ago 550MB centos_yum v0 191d9c84f461 2 days ago 260MBmysql latest a82a8f162e18 4 weeks ago 586MB # 9.创建容器测试 \[root@docker001 test\]# docker run -d --name c0 centos:httpd c245d9f9f3e0d6526d80e117ebd7b4c2870a1e12558192f1da 1e681cabdc4e87 \[root@docker001 test\]# docker ps --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c245d9f9f3e0 centos:httpd "/bin/bash /start.sh" 21 seconds ago Up 20 seconds 80/tcp c0 # 10.查看ip地址 \[root@docker001 test\]# docker inspect c0 # 访问测试 \[root@docker001 test\]# curl 172.17.0.2 p pp ppp pppp ppppppppppp ppppppp pppppppp 测试挂载其他项⽬ \[root@docker001 test\]# docker run -d -v /opt:/var/www/html --name c1 centos:httpd 3c97af2d11a56b9c2f2ea4eb6bb0a7ff18d6f26d0f777f68a4 eb4a20b9c61835 \[root@docker001 test\]# eche "adsfadfafwqrdfqdsafdgdfsgda" \> /opt/index.html -bash: eche: 未找到命令 \[root@docker001 test\]# echo "adsfadfafwqrdfqdsafdgdfsgda" \> /opt/index.html \[root@docker001 test\]# curl 172.17.0.3 adsfadfafwqrdfqdsafdgdfsgda yum -y install yum-plugin-ovl练习 配置nginx应⽤镜像 FROM centos:latest MAINTAINER "NGINX" RUN rm -rf /etc/yum.repos.d/\* RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault- 8.5.2111.repo RUN yum clean all \&\& yum makecache RUN yum -y install epel-release \&\& yum -y install nginx RUN echo "daemon off;" \>\> /etc/nginx/nginx.conf WORKDIR / CMD /usr/sbin/nginx\[root@docker001 \~\]# docker run -d --name c1 - p80:80 -v /opt/:/usr/share/nginx/html/ centos:nginx 948f20e1ed4758e78759de8f9ce9b34a7f44c431bc8ead75b6 70e1a5b488654c \[root@docker001 \~\]# docker info Client: Docker Engine - Community Version: 26.1.4 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.14.1 Path: /usr/libexec/docker/cli plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.27.1 Path: /usr/libexec/docker/cli plugins/docker-composeServer: Containers: 2 #容器数量 Running: 2 #正在运⾏的容器 Paused: 0 Stopped: 0 Images: 3 Server Version: 26.1.4 Storage Driver: overlay2 # 存储驱动 Backing Filesystem: xfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json file local splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 runc Default Runtime: runc Init Binary: docker-init containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957 runc version: v1.1.12-0-g51d5e94 init version: de40ad0 Security Options: seccomp Profile: builtin Kernel Version: 3.10.0-1160.119.1.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 972.1MiB Name: docker001.yuanyu.zhangmin ID: 7684bd62-67f2-48c8-a2ee-daaa649abf70 Docker Root Dir: /var/lib/docker Debug Mode: false Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://do.nark.eu.org/ https://dc.j8.work/ https://docker.m.daocloud.io/ https://dockerproxy.com/ https://docker.mirrors.ustc.edu.cn/ https://docker.nju.edu.cn/ Live Restore Enabled: false \[DEPRECATION NOTICE\]: API is accessible on http://0.0.0.0:2375 without encryption. Access to the remote API is equivalent to root access on the host. Refer to the 'Docker daemon attack surface' section in the documentation for more information: https://docs.docker.com/go/attack-surface/ In future versions this will be a hard failure preventing the daemon from starting! Learn more at: https://docs.docker.com/go/api-security/ WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled \[root@docker001 \~\]# ls /var/lib/docker/buildkit containers engine-id image network overlay2 plugins runtimes swarm tmp volumes \[root@docker001 \~\]# tree -L 2 /var/lib/docker/ /var/lib/docker/ "## buildkit $ "## cache.db $ "## containerdmeta.db $ "## content $ "## executor $ "## history.db $ "## metadata_v2.db $ "## net $ %## snapshots.db "## containers $ "## 5ce068ef110b103c565602dcc7c4af66f91cd2b6ea8129af7a be5383c4aa0f8d $ %## 948f20e1ed4758e78759de8f9ce9b34a7f44c431bc8ead75b6 70e1a5b488654c "## engine-id "## image $ %## overlay2 "## network $ %## files "## overlay2$ "## 0471ada2dce770506dd29557cd04ce8ee3f4a632a81f482ce0 e2b139d8251611 $ "## 109e3f2004911eabcd6934be32281c1ed9897b46de48a8960d 1253a668145126 $ "## 117fd8ba9ff0ed91d48cff774a1061baf9efe6fe4d63cdb14e 768bfd742a3f3b $ "## 235zotit1cskmcglyr9nykhou $ "## 2q24gwawlr1jvee48x9zrqxai $ "## 332fbcc4b5175a6970ca7788db3898f9102f84f6a68029f57f ccfbe2a3408729 $ "## 332fbcc4b5175a6970ca7788db3898f9102f84f6a68029f57f ccfbe2a3408729-init $ "## 3y08ei53ildl077di6t0xhvt4 $ "## 4e699a81c9752aa0e2182cb302c11af1f39093ee81f2c7cf1a 9ef7189feee839 $ "## 4e699a81c9752aa0e2182cb302c11af1f39093ee81f2c7cf1a 9ef7189feee839-init$ "## 561bbad3be962475eff729aa3d5240eb213176bae772cfe4e5 d45f22b123fb7a $ "## 561bbad3be962475eff729aa3d5240eb213176bae772cfe4e5 d45f22b123fb7a-init $ "## 56b9d2c60d83b8e72cd15975c63ebfbdd3e6055d49b3d739d7 5a1ff94e277dda $ "## 6564c73ad543b723881b076fe387422b191cd48158811ce89b aaa6406b284df4 $ "## 7711d9a14b6fc142ef00c96d7d9140628b60d01f00f253e584 80e4088b5434a4 $ "## 7a9653ab64da80a7fd2ffdb6cbac391b298c9df892db50d053 9f35682379023c $ "## 8703d4e4fb30097919c7e5983aec21c548b188a3a4bee865dd 5043b948fe5c2d $ "## 89bb8ec84e2069acba669fecb7ef2500a054652586c80e2e94 7173b5b369a834$ "## a0f5901965932b6db0ec37cd31654532e08cac14e0b12b1897 090cdef1ed9a3d $ "## a0f5901965932b6db0ec37cd31654532e08cac14e0b12b1897 090cdef1ed9a3d-init $ "## a63d730255cb91be82e6c51cc677717728b45f4032e4e5e48b 0e2a9e5aa2deab $ "## a63d730255cb91be82e6c51cc677717728b45f4032e4e5e48b 0e2a9e5aa2deab-init $ "## ah3i2ooqroom29dxbl7tfn7qq $ "## backingFsBlockDev $ "## c8ee533075c8244596da864a555935839a9850b450b6687201 80802707a9a146 $ "## c8ee533075c8244596da864a555935839a9850b450b6687201 80802707a9a146-init $ "## cca21d9c366100f059609ce466a8ffdd5e820407d89c1e89b2 154e0573b04b67 $ "## e2bc5e84f80761a20c10b0d7a914141e912f63ed79266ef381 290c424bf40b1d$ "## el3ttxid0yg954kt85y798vze $ "## f77539952d704ff61e8983dd2db9e7998503d1e98ad3df4db9 bed32a7fd50903 $ "## gf94ym4xk3ow1tk39dihylvyd $ "## hp0h9kwz0lhzvp1vitb7luhy3 $ "## kfjteefzg4mrc7959nj2au3le $ "## kkg0d8n5rg51yksgbm2xxw8ou $ "## l $ "## mwd5hxe90l7liljg8pkaam3r6 $ "## nbxfcewpnxawtj825cu3xw3ph $ "## ngvvz7u0xe1xgs82c1h0qspcm $ "## on9ypo393wf86a8b1kuawmsez $ "## pc9zeyl68k1ju2xvdiuv5sihd $ "## phy7f7a1llvm8rsn7auwsj6iw $ "## pi9f4xmuk60u70onzmz1q4r9c $ "## pqyc1rcou6ddvbnygkrs68c3l $ "## q09bzwofod6zhhhpttb9tpmbz $ "## qazjj8ki0z9q206jga0sii0ru $ "## sroxs9tw339wyo94pwle3llym $ "## w09y9n8pqbfexzhk4ut61ktma $ "## whbqjbm3dp1wrxtblscir4ywr $ %## z5yoracg29fmorw6e99o4qshv "## plugins $ "## storage $ %## tmp"## runtimes "## swarm "## tmp %## volumes "## 1652bd379334d5a944d0b40dde7b0fe944e3c043dc850ec171 8ccc9f52e31872 "## backingFsBlockDev "## c2dbff511839eeb4a788c15fc2414b826b89222555d27070ea 65467cb1ac26e1 %## metadata.db 69 directories, 9 files查看系统内核 \[root@docker001 l\]# uname -r 3.10.0-1160.119.1.el7.x86_64 查看⽂件系统 \[root@docker001 l\]# df -i ⽂件系统 Inode 已⽤(I) 可⽤(I) 已⽤ (I)% 挂载点 devtmpfs 121445 390 121055 1% /dev tmpfs 124432 1 124431 1% /dev/shmtmpfs 124432 794 123638 1% /run tmpfs 124432 16 124416 1% /sys/fs/cgroup /dev/mapper/centos-root 8910848 101057 8809791 2% / /dev/sda1 524288 333 523955 1% /boot tmpfs 124432 1 124431 1% /run/user/0 overlay 8910848 101057 8809791 2% /var/lib/docker/overlay2/a0f5901965932b6db0ec37cd3 1654532e08cac14e0b12b1897090cdef1ed9a3d/merged overlay 8910848 101057 8809791 2% /var/lib/docker/overlay2/c8ee533075c8244596da864a5 55935839a9850b450b668720180802707a9a146/merged 新建⼀个⽂件之后 可⽤的节点减少⼀个 \[root@docker001 \~\]# touch 123.txt \[root@docker001 \~\]# df -i ⽂件系统 Inode 已⽤(I) 可⽤(I) 已⽤ (I)% 挂载点devtmpfs 121445 390 121055 1% /dev tmpfs 124432 1 124431 1% /dev/shm tmpfs 124432 794 123638 1% /run tmpfs 124432 16 124416 1% /sys/fs/cgroup /dev/mapper/centos-root 8910848 101058 8809790 2% / /dev/sda1 524288 333 523955 1% /boot tmpfs 124432 1 124431 1% /run/user/0 overlay 8910848 101058 8809790 2% /var/lib/docker/overlay2/a0f5901965932b6db0ec37cd3 1654532e08cac14e0b12b1897090cdef1ed9a3d/merged overlay 8910848 101058 8809790 2% /var/lib/docker/overlay2/c8ee533075c8244596da864a5 55935839a9850b450b668720180802707a9a146/merged 创建软连接之后,节点减少⼀个\[root@docker001 \~\]# ln -s 123.txt 123.lk \[root@docker001 \~\]# df -i ⽂件系统 Inode 已⽤(I) 可⽤(I) 已⽤ (I)% 挂载点 devtmpfs 121445 390 121055 1% /dev tmpfs 124432 1 124431 1% /dev/shm tmpfs 124432 794 123638 1% /run tmpfs 124432 16 124416 1% /sys/fs/cgroup /dev/mapper/centos-root 8910848 101059 8809789 2% / /dev/sda1 524288 333 523955 1% /boot tmpfs 124432 1 124431 1% /run/user/0 overlay 8910848 101059 8809789 2% /var/lib/docker/overlay2/a0f5901965932b6db0ec37cd3 1654532e08cac14e0b12b1897090cdef1ed9a3d/merged overlay 8910848 101059 8809789 2% /var/lib/docker/overlay2/c8ee533075c8244596da864a5 55935839a9850b450b668720180802707a9a146/merged在启动docker服务后会新建/var/lib/docker \[root@docker001 \~\]# ls /var/lib/docker ls: ⽆法访问/var/lib/docker: 没有那个⽂件或⽬录 \[root@docker001 \~\]# systemctl start docker.service \[root@docker001 \~\]# ls /var/lib/docker buildkit containers engine-id image network overlay2 plugins runtimes swarm tmp volumes \[root@docker001 \~\]# ls /var/lib/docker/overlay2/ backingFsBlockDev l 拉取⼀个新镜像之后,就会在overlay2⽂件夹中保存新的⽂件\[root@docker001 \~\]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534b bdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest \[root@docker001 \~\]# ls /var/lib/docker/overlay2/ backingFsBlockDev ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34 l \[root@docker001 \~\]# 查看⽂件保存位置\[root@docker001 \~\]# cd /var/lib/docker/overlay2/ce54a04e45edb448429f2f7ad b8a8a1d23379e300f8e7c1a98beb4512d932c34/ \[root@docker001 ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34\]# ls diff link \[root@docker001 ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34\]# ls diff/ bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr \[root@docker001 ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34\]# 创建容器后出现2个新的⽂件夹\[root@docker001 \~\]# docker run -it --name c0 centos:latest /bin/bash \[root@4c7f96d1a03e /\]# \[root@docker001 \~\]# \[root@docker001 \~\]# ls /var/lib/docker/overlay2/ backingFsBlockDev ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34 e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb-init 查看容器⽬录\[root@docker001 \~\]# cd /var/lib/docker/overlay2/e291e027242e013f682fe631b 83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb \[root@docker001 e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb\]# ls diff link lower merged work \[root@docker001 e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb\]# cat lower l/LBSEYI2LHNHNIYE7AYQMOC6RBP:l/KQTNFI7JQXIRWB3PFKE D2HRWJD\[root@docker001 e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb\]# ls merged/ bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr \[root@docker001 e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb\]# 在外⾯使⽤exec创建⼀个⽂件\[root@docker001 \~\]# docker exec 4c7f dd if=/dev/zero of=/test bs=10M count=100 100+0 records in 100+0 records out 1048576000 bytes (1.0 GB, 1000 MiB) copied, 2.7744 s, 378 MB/s \[root@docker001 \~\]# ls /var/lib/docker/overlay2/e291e027242e013f682fe631b 83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb/merged/ bin etc lib lost+found mnt proc run srv test usr dev home lib64 media opt root sbin sys tmp var 容器保存镜像和数据 查看容器挂载 容器被移除以后,这个⽂件就会被删除,stop不会删除 \[root@docker001 \~\]# ls /var/lib/docker/overlay2/ backingFsBlockDevce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34 e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb-init l \[root@docker001 \~\]# docker stop c0 c0 \[root@docker001 \~\]# ls /var/lib/docker/overlay2/ backingFsBlockDev ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34 e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2 fe4d9094f7b7eb-init l \[root@docker001 \~\]# docker rm c0 c0 \[root@docker001 \~\]# ls /var/lib/docker/overlay2/ backingFsBlockDev ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98 beb4512d932c34 l \[root@docker001 \~\]# 创建私有仓库,在企业中分享项⽬ # 安装仓库镜像 \[root@docker001 \~\]# docker pull registry Using default tag: latest latest: Pulling from library/registry 930bdd4d222e: Pull complete a15309931e05: Pull complete 6263fb9c821f: Pull complete 86c1d3af3872: Pull complete a37b1bf6a96f: Pull complete Digest: sha256:12120425f07de11a1b899e418d4b0ea174c8d4d572d 45bdb640f93bc7ca06a3d Status: Downloaded newer image for registry:latest docker.io/library/registry:latest #查看新安装的镜像 \[root@docker001 \~\]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest cfb4d9904335 10 months ago 25.4MB centos latest 5d0da3dc9764 2 years ago 231MB# 创建挂载的⽬录 \[root@docker001 \~\]# mkdir /opt/dockeregistry # 创建容器,映射端⼝,挂载⽂件 \[root@docker001 \~\]# docker run -d --name c1 - p5000:5000 -v /opt/dockeregistry/:/var/lib/registry registry:latest 7ec28de22490aee02bd542ef22076f8ba746f7513cf96bf501 d817bc07b38f27 \[root@docker001 \~\]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7ec28de22490 registry:latest "/entrypoint.sh /etc..." 13 seconds ago Up 12 seconds 0.0.0.0:5000-\>5000/tcp, :::5000-\>5000/tcp c1 # 访问⽬录⻚ \[root@docker001 \~\]# curl http://10.1.1.50:5000/v2/_catalog {"repositories":\[\]} # 创建仓库\[root@docker001 \~\]# vim /etc/docker/daemon.json \[root@docker001 \~\]# cat /etc/docker/daemon.json { "insecure-registries":\[ "http://10.1.1.50:5000" \], "registry-mirrors": \[ "https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" \], "hosts": \[ "tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"
}
重启docker服务[root@docker001 ~]# systemctl restart
docker.service
查看镜像
root@docker001 \~\]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest cfb4d9904335 10 months ago 25.4MB centos latest 5d0da3dc9764 2 years ago 231MB # 为要上传的镜像添加标记 \[root@docker001 \~\]# docker tag centos:latest 10.1.1.50:5000/centos:v0 \[root@docker001 \~\]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest cfb4d9904335 10 months ago 25.4MB 10.1.1.50:5000/centos v0 5d0da3dc9764 2 years ago 231MB centos latest 5d0da3dc9764 2 years ago 231MB10.1.1.50/centos v0 5d0da3dc9764 2 years ago 231MB \[root@docker001 \~\]# docker push 10.1.1.50:5000/centos:v0 The push refers to repository \[10.1.1.50:5000/centos
Get "http://10.1.1.50:5000/v2/": dial tcp
10.1.1.50:5000: connect: connection refused
root@docker001 \~\]# docker start c1 c1 \[root@docker001 \~\]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7ec28de22490 registry:latest "/entrypoint.sh /etc..." 16 minutes ago Up 4 seconds 0.0.0.0:5000-\>5000/tcp, :::5000-\>5000/tcp c1 \[root@docker001 \~\]# docker push 10.1.1.50:5000/centos:v0 The push refers to repository \[10.1.1.50:5000/centos
74ddd0ec08fa: Pushed
v0: digest:
sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c8386
3037fa3aab063a7fdb9dc size: 529
root@docker001 \~\]# ls /opt/1.png assets dist index.html 2.png containerd dockeregistry nohup.out application.properties cvloume favicon.ico Project_ExamSystem-V1.0.0.war \[root@docker001 \~\]# ls /opt/dockeregistry/ docker \[root@docker001 \~\]# ls /opt/dockeregistry/docker/ registry \[root@docker001 \~\]# ls /opt/dockeregistry/docker/registry/ v2 \[root@docker001 \~\]# ls /opt/dockeregistry/docker/registry/v2/ blobs repositories \[root@docker001 \~\]# ls /opt/dockeregistry/docker/registry/v2/repositories / centos \[root@docker001 \~\]#1.拉取registry docker pull registry 2.创建挂载⽬录 mkdir /regist 3.启动容器,映射端⼝,挂载⽬录 docker run -d --name c0 -v /regist/:/var/lib/rigistry/ -p5000:5000 registry:latest 4.访问仓库 curl http://192.168.71.50:5000/v2/_catelog 5.配置pull和push,修改daemon.jsonvim /etc/docker/daemon.json { ....., "insecure-registries":\[ "http://192.168.71.50:5000"
}
:wq
6.修改了配置⽂件,重启docker服务
systemctl restart docker
7.启动registry容器
docker start r1
curl localhost:5000/v2/_catalog