8.27笔记

通过dockerfile创建⼀个在启动容器时,就可以启动httpd服务的镜像

步骤

1. 创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件

1. 在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂件

1. 使⽤docker build创建镜像

1. 使⽤创建的镜像启动容器(验证)

思考

1. 基础镜像

1. yum -y install httpd

1. 使⽤脚本启动服务(httpd -k start)

1. 应该将httpd服务放在前端执⾏

1. 暴露端⼝ 80/tcp

1. 添加⼀个测试⽂件,⽤于验证软件是否可⽤

过程

 
  1. # 1.创建⽬录

  2. [root@docker001 ~]# mkdir test

  3. # 2.跳转到⽬录中

  4. [root@docker001 ~]# cd test/

  5. # 3.编辑启动脚本

  6. [root@docker001 test]# vim start.sh

  7. [root@docker001 test]# cat start.sh

  8. ######################################

  9. #!/bin/bah

  10. rm -rf /run/httpd/*

  11. exec /sbin/httpd -D FOREGROUND

  12. ######################################

  13. # 4.编辑index.html⽂件

  14. [root@docker001 test]# vim index.html

  15. # 5.编辑Dockerfile

  16. [root@docker001 test]# vim Dockerfile

  17. ####################################

  18. FROM centos_yum:v0

  19. MAINTAINER "httpd server start

  20. 15773141955@163.com"

  21. RUN yum clean all

  22. RUN yum makecache

  23. RUN yum -y install httpd

  24. ADD start.sh /start.sh

  25. RUN chmod -v +x /start.sh

  26. Add index.html /var/www/html/

  27. EXPOSE 80

  28. WORKDIR /

  29. CMD ["/bin/bash","/start.sh"]

  30. ####################################

  31. # 6.创建镜像

  32. [root@docker001 test]# docker build -t

  33. centos:httpd .

  34. [+] Building 51.6s (12/12) FINISHED

  35. docker:default

  36. => [internal] load build definition from

  37. Dockerfile

  38. 0.0s

  39. => => transferring dockerfile: 309B

  40. 0.0s

  41. => [internal] load metadata for

  42. docker.io/library/centos_yum:v0

  43. 0.0s

  44. => [internal] load .dockerignore

  45. 0.0s

  46. => => transferring context: 2B

  47. 0.0s

  48. => [1/8] FROM docker.io/library/centos_yum:v0

  49. 0.0s

  50. => [internal] load build context

  51. 0.0s

  52. => => transferring context: 180B

  53. 0.0s

  54. => [2/8] RUN YUM clean all

  55. 2.3s

  56. => [3/8] RUN YUM makecache

  57. 42.7s

  58. => [4/8] RUN YUM -y install httpd

  59. 5.8s

  60. => [5/8] ADD START.SH /START.SH

  61. 0.0s

  62. => [6/8] RUN CHMOD -v +x /start.sh

  63. 0.2s

  64. => [7/8] ADD INDEX.HTML /VAR/WWW/HTML/

  65. 0.0s

  66. => exporting to image

  67. 0.5s

  68. => => exporting layers

  69. 0.4s

  70. => => writing image

  71. sha256:a488bc9f4cfb58a91baa57c2ab9faf615d457ff8714

  72. e4e958e7220a253469ed 0.0s

  73. => => naming to docker.io/library/centos:httpd

  74. # 7.查看镜像

  75. [root@docker001 test]# docker image ls

  76. REPOSITORY TAG IMAGE ID CREATED

  77. SIZE

  78. centos httpd a488bc9f4cfb About a

  79. minute ago 352MB

  80. centos nginx 12fea1b890de 41 hours ago

  81. 366MB

  82. centos java17 b6bf774de7bb 41 hours ago

  83. 550MB

  84. centos_yum v0 191d9c84f461 2 days ago

  85. 260MB

  86. mysql latest a82a8f162e18 4 weeks ago

  87. 586MB

  88. # 9.创建容器测试

  89. [root@docker001 test]# docker run -d --name c0

  90. centos:httpd

  91. c245d9f9f3e0d6526d80e117ebd7b4c2870a1e12558192f1da

  92. 1e681cabdc4e87

  93. [root@docker001 test]# docker ps --all

  94. CONTAINER ID IMAGE COMMAND

  95. CREATED STATUS PORTS

  96. NAMES

  97. c245d9f9f3e0 centos:httpd "/bin/bash

  98. /start.sh" 21 seconds ago Up 20 seconds

  99. 80/tcp c0

  100. # 10.查看ip地址

  101. [root@docker001 test]# docker inspect c0

  102. # 访问测试

  103. [root@docker001 test]# curl 172.17.0.2

  104. p

  105. pp

  106. ppp

  107. pppp

  108. ppppp

  109. pppppp

  110. ppppppp

  111. pppppppp

测试挂载其他项⽬

 
  1. [root@docker001 test]# docker run -d -v

  2. /opt:/var/www/html --name c1 centos:httpd

  3. 3c97af2d11a56b9c2f2ea4eb6bb0a7ff18d6f26d0f777f68a4

  4. eb4a20b9c61835

  5. [root@docker001 test]# eche

  6. "adsfadfafwqrdfqdsafdgdfsgda" > /opt/index.html

  7. -bash: eche: 未找到命令

  8. [root@docker001 test]# echo

  9. "adsfadfafwqrdfqdsafdgdfsgda" > /opt/index.html

  10. [root@docker001 test]# curl 172.17.0.3

  11. adsfadfafwqrdfqdsafdgdfsgda

  12. yum -y install yum-plugin-ovl

练习 配置nginx应⽤镜像

 
  1. FROM centos:latest

  2. MAINTAINER "NGINX"

  3. RUN rm -rf /etc/yum.repos.d/*

  4. RUN curl -o /etc/yum.repos.d/CentOS-Base.repo

  5. https://mirrors.aliyun.com/repo/Centos-vault-

  6. 8.5.2111.repo

  7. RUN yum clean all && yum makecache

  8. RUN yum -y install epel-release && yum -y

  9. install nginx

  10. RUN echo "daemon off;" >> /etc/nginx/nginx.conf

  11. WORKDIR /

  12. CMD /usr/sbin/nginx

  13. [root@docker001 ~]# docker run -d --name c1 -

  14. p80:80 -v /opt/:/usr/share/nginx/html/

  15. centos:nginx

  16. 948f20e1ed4758e78759de8f9ce9b34a7f44c431bc8ead75b6

  17. 70e1a5b488654c

创建私有仓库,在企业中分享项⽬

 
  1. # 安装仓库镜像

  2. [root@docker001 ~]# docker pull registry

  3. Using default tag: latest

  4. latest: Pulling from library/registry

  5. 930bdd4d222e: Pull complete

  6. a15309931e05: Pull complete

  7. 6263fb9c821f: Pull complete

  8. 86c1d3af3872: Pull complete

  9. a37b1bf6a96f: Pull complete

  10. Digest:

  11. sha256:12120425f07de11a1b899e418d4b0ea174c8d4d572d

  12. 45bdb640f93bc7ca06a3d

  13. Status: Downloaded newer image for registry:latest

  14. docker.io/library/registry:latest

  15. #查看新安装的镜像

  16. [root@docker001 ~]# docker images

  17. REPOSITORY TAG IMAGE ID CREATED

  18. SIZE

  19. registry latest cfb4d9904335 10 months

  20. ago 25.4MB

  21. centos latest 5d0da3dc9764 2 years ago

  22. 231MB

  23. # 创建挂载的⽬录

  24. [root@docker001 ~]# mkdir /opt/dockeregistry

  25. # 创建容器,映射端⼝,挂载⽂件

  26. [root@docker001 ~]# docker run -d --name c1 -

  27. p5000:5000 -v

  28. /opt/dockeregistry/:/var/lib/registry

  29. registry:latest

  30. 7ec28de22490aee02bd542ef22076f8ba746f7513cf96bf501

  31. d817bc07b38f27

  32. [root@docker001 ~]# docker ps

  33. CONTAINER ID IMAGE COMMAND

  34. CREATED STATUS PORTS

  35. NAMES

  36. 7ec28de22490 registry:latest "/entrypoint.sh

  37. /etc…" 13 seconds ago Up 12 seconds

  38. 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp c1

  39. # 访问⽬录⻚

  40. [root@docker001 ~]# curl

  41. http://10.1.1.50:5000/v2/_catalog

  42. {"repositories":[]}

  43. # 创建仓库

  44. [root@docker001 ~]# vim /etc/docker/daemon.json

  45. [root@docker001 ~]# cat /etc/docker/daemon.json

  46. {

  47. "insecure-registries":[

  48. "http://10.1.1.50:5000"

  49. ],

  50. "registry-mirrors": [

  51. "https://do.nark.eu.org",

  52. "https://dc.j8.work",

  53. "https://docker.m.daocloud.io",

  54. "https://dockerproxy.com",

  55. "https://docker.mirrors.ustc.edu.cn",

  56. "https://docker.nju.edu.cn"

  57. ],

  58.  
  59. "hosts": [

  60. "tcp://0.0.0.0:2375",

  61. "unix:///var/run/docker.sock"

  62. ]

  63.  
  64. }

  65. # 重启docker服务

  66. [root@docker001 ~]# systemctl restart

  67. docker.service

  68. # 查看镜像

  69. [root@docker001 ~]# docker images

  70. REPOSITORY TAG IMAGE ID CREATED

  71. SIZE

  72. registry latest cfb4d9904335 10 months

  73. ago 25.4MB

  74. centos latest 5d0da3dc9764 2 years ago

  75. 231MB

  76. # 为要上传的镜像添加标记

  77. [root@docker001 ~]# docker tag centos:latest

  78. 10.1.1.50:5000/centos:v0

  79. [root@docker001 ~]# docker images

  80. REPOSITORY TAG IMAGE ID

  81. CREATED SIZE

  82. registry latest cfb4d9904335

  83. 10 months ago 25.4MB

  84. 10.1.1.50:5000/centos v0 5d0da3dc9764 2

  85. years ago 231MB

  86. centos latest 5d0da3dc9764 2

  87. years ago 231MB

  88. 10.1.1.50/centos v0 5d0da3dc9764 2

  89. years ago 231MB

  90. [root@docker001 ~]# docker push

  91. 10.1.1.50:5000/centos:v0

  92. The push refers to repository

  93. [10.1.1.50:5000/centos]

  94. Get "http://10.1.1.50:5000/v2/": dial tcp

  95. 10.1.1.50:5000: connect: connection refused

  96. [root@docker001 ~]# docker start c1

  97. c1

  98. [root@docker001 ~]# docker ps

  99. CONTAINER ID IMAGE COMMAND

  100. CREATED STATUS PORTS

  101. NAMES

  102. 7ec28de22490 registry:latest "/entrypoint.sh

  103. /etc…" 16 minutes ago Up 4 seconds

  104. 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp c1

  105. [root@docker001 ~]# docker push

  106. 10.1.1.50:5000/centos:v0

  107. The push refers to repository

  108. [10.1.1.50:5000/centos]

  109. 74ddd0ec08fa: Pushed

  110. v0: digest:

  111. sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c8386

  112. 3037fa3aab063a7fdb9dc size: 529

  113. [root@docker001 ~]# ls /opt/

  114. 1.png assets dist

  115. index.html

  116. 2.png containerd dockeregistry

  117. nohup.out

  118. application.properties cvloume favicon.ico

  119. Project_ExamSystem-V1.0.0.war

  120. [root@docker001 ~]# ls /opt/dockeregistry/

  121. docker

  122. [root@docker001 ~]# ls /opt/dockeregistry/docker/

  123. registry

  124. [root@docker001 ~]# ls

  125. /opt/dockeregistry/docker/registry/

  126. v2

  127. [root@docker001 ~]# ls

  128. /opt/dockeregistry/docker/registry/v2/

  129. blobs repositories

  130. [root@docker001 ~]# ls

  131. /opt/dockeregistry/docker/registry/v2/repositories

  132. /

  133. centos

  134. [root@docker001 ~]#

1.拉取registry

docker pull registry

2.创建挂载⽬录

mkdir /regist

3.启动容器,映射端⼝,挂载⽬录

 
  1. docker run -d --name c0 -v

  2. /regist/:/var/lib/rigistry/ -p5000:5000

  3. registry:latest

4.访问仓库

curl http://192.168.71.50:5000/v2/_catelog

5.配置pull和push,修改daemon.json

 
  1. vim /etc/docker/daemon.json

  2. {

  3. .....,

  4. "insecure-registries":[

  5. "http://192.168.71.50:5000"

  6. ]

  7. }

  8. :wq

6.修改了配置⽂件,重启docker服务

systemctl restart docker

7.启动registry容器

 
  1. docker start r1

  2. curl localhost:5000/v2/_catalog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值