翼度科技»论坛 云主机 LINUX 查看内容

实验

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
1:在离线的环境中导入镜像

在无法访问外网的情况下,通过将docker镜像导出为一个包,然后导入到另外的一台计算机上面,从而实现了不用访问外网就能拉取镜像了
  1. #将镜像输出到这个tar包
  2. [root@cleint ~]# docker save -o centos.tar centos
  3. #通过第三方的工具将这个tar包传输到其他机器上面,然后进行导入
  4. [root@cleint ~]# docker images
  5. REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
  6. [root@cleint ~]# ls
  7. anaconda-ks.cfg  centos.tar  docker-hello  project  qcy-centos
  8. [root@cleint ~]# docker load -i centos.tar
  9. Loaded image: centos:latest
  10. [root@cleint ~]# docker images
  11. REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
  12. centos       latest    5d0da3dc9764   2 years ago   231MB
  13. #因此实现了不能访问外网的情况下,拉取镜像了
复制代码
2:使用dockercommit命令基于容器构建镜像

有一个容器做成了web页面,所有的虚拟机都想要这个web页面的功能,直接基于这个提供web页面的容器做成一个镜像,然后虚拟机直接基于这个web容器镜像构建一个容器,从而提供了web页面
  1. #搭建一个提供web页面的容器
  2. [root@cleint ~]# docker run -tid --name 8080-nginx -p 8080:80 nginx /bin/bash
  3. a9161cf2c12713f4ec492b2e9c32aa75d1c8556457db07f33689282adcaf4d9c
  4. #进行访问
  5. [root@cleint ~]# curl http://127.0.0.1:8080
  6. <!DOCTYPE html>
  7. <html>
  8. <head>
  9. <title>Welcome to nginx!</title>
  10. </head>
  11. <body>
  12. <h1>Welcome to nginx!</h1>
  13. <p>If you see this page, the nginx web server is successfully installed and
  14. working. Further configuration is required.</p>
  15. <p>For online documentation and support please refer to
  16. <a target="_blank" target="_blank" href="http://nginx.org/">nginx.org</a>.<br/>
  17. Commercial support is available at
  18. <a target="_blank" target="_blank" href="http://nginx.com/">nginx.com</a>.</p>
  19. <p><em>Thank you for using nginx.</em></p>
  20. </body>
  21. </html>
  22. #基于这个容器做成一个镜像
  23. [root@cleint ~]# docker commit 8080-nginx  web-nginx
  24. sha256:c072b790098d75f0082adb87b0abc0d9757c4db74f1ce9018854cae7ae22dccf
  25. [root@cleint ~]# docker images
  26. REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
  27. web-nginx    latest    c072b790098d   3 seconds ago   187MB
  28. nginx        latest    92b11f67642b   6 weeks ago     187MB
  29. centos       latest    5d0da3dc9764   2 years ago     231MB
  30. [root@cleint ~]# docker run -tid --name q1 -p 7777:80 web-nginx /bin/bash
  31. a66b1611c6cea9276f904f5fb410f632d325066939c72e221906e6607f0ef3b8
  32. [root@cleint ~]# docker ps
  33. CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                   NAMES
  34. a66b1611c6ce   web-nginx   "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   0.0.0.0:7777->80/tcp, :::7777->80/tcp   q1
  35. a9161cf2c127   nginx       "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   8080-nginx
  36. #进入这个容器里面,需要打开这个容器的服务nginx
  37. #进行访问
  38. [root@cleint ~]# curl http://127.0.0.1:7777
  39. <!DOCTYPE html>
  40. <html>
  41. <head>
  42. <title>Welcome to nginx!</title>
  43. </head>
  44. <body>
  45. <h1>Welcome to nginx!</h1>
  46. <p>If you see this page, the nginx web server is successfully installed and
  47. working. Further configuration is required.</p>
  48. <p>For online documentation and support please refer to
  49. <a target="_blank" target="_blank" href="http://nginx.org/">nginx.org</a>.<br/>
  50. Commercial support is available at
  51. <a target="_blank" target="_blank" href="http://nginx.com/">nginx.com</a>.</p>
  52. <p><em>Thank you for using nginx.</em></p>
  53. </body>
  54. </html>
  55. #从而实现了基于这个已有的容器做成一个镜像,然后再来生成一个容器,这个容器会保留之前所做的一些操作  
复制代码
3:使用第三方容器仓库

使用第三方的仓库,进行上传镜像,下载镜像
这个非常的遍历,就是使用这个仓库的话,因为网络的容器仓库有的属于国外的,所以的话拉取镜像的速度就比较的慢,需要自己的仓库即可
 操作步骤:
  1. #登录第三方的容器仓库
  2. docker login uhub.service.ucloud.cn
  3. username 邮箱
  4. password 密码
  5. #对于要推送的镜像打上标签,只有标签是一致的,才能实现上传
  6. #格式为 uhub.service.ucloud.cn这个
  7. docker tag centos:latest uhub.service.ucloud.cn/admins/centos:latest
  8. #然后拉取镜像,从镜像仓库里面进行拉取
  9. [root@cleint yum.repos.d]# docker pull uhub.service.ucloud.cn/admins/centos:latest
  10. latest: Pulling from admins/centos
  11. Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
  12. Status: Downloaded newer image for uhub.service.ucloud.cn/admins/centos:latest
  13. uhub.service.ucloud.cn/admins/centos:latest
  14. #查看容器镜像仓库
  15. 可以使用skopeo这个命令进行查看远程的容器仓库
复制代码
4:使用docker build命令基于dockerfile构建镜像

案例:使用dockerfile来构建一个镜像,然后里面有nginx.repo源,然后进行访问即可
  1. #首先创建一个nginx.repo文件
  2. #创建一个dockerfile文件
  3. [root@cleint dockerfile-test]# ls
  4. dockerfile  nginx.repo
  5. [root@cleint dockerfile-test]# pwd
  6. /root/dockerfile-test
  7. [root@cleint dockerfile-test]# cat dockerfile
  8. FROM centos
  9. RUN rm -rf /etc/yum.repos.d/*.repo
  10. COPY ./nginx.repo  /etc/yum.repos.d/
  11. RUN  yum clean all && yum makecache
  12. RUN yum -y install nginx
  13. RUN echo "Hello this is nginx server" > /usr/share/nginx/html/index.html
  14. EXPOSE 80
  15. CMD ["nginx","-g","daemon off;"]
  16. [root@cleint dockerfile-test]# cat nginx.repo
  17. [nginx]
  18. name=nginx
  19. baseurl=http://nginx.org/packages/centos/$releasever/$basearch
  20. gpgcheck=0
  21. enabled=1
  22. #然后使用dockerfile来创建一个镜像
  23. [root@cleint dockerfile-test]# docker build  -t centos-nginx .
  24. #创建一个容器
  25. [root@cleint dockerfile-test]# docker run -tid --name c1  -p 8080:80 centos-nginx
  26. 110106833b9569158312a08a32898da18af450d93ab135c080a23337486c06b1
  27. [root@cleint dockerfile-test]# docker ps -a
  28. CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS        PORTS                                   NAMES
  29. 110106833b95   centos-nginx   "nginx -g 'daemon of…"   2 seconds ago   Up 1 second   0.0.0.0:8080->80/tcp, :::8080->80/tcp   c1
  30. #访问
  31. [root@cleint dockerfile-test]# curl 0.0.0.0:8080
  32. Hello this is nginx server
复制代码
5:当容器内部无法进行上网的操作
  1. yum -y install  autoconf
  2. yum -y install gcc
  3. wget  http://mirrors.edge.kernel.org/pub/linux/utils/net/bridge-utils/bridge-utils-1.6.tar.gz
  4. tar  -xvf bridge-utils-1.6.tar.gz
  5. cd bridge-utils-1.6/
  6. autoconf
  7. ./configure
  8. make
  9. make install
  10. systemctl stop docker
  11. ip link  set dev docker0 down
  12. brctl delbr docker0
  13. systemctl restart docker
复制代码
6:创建一个自定义的桥接网络

网段为192.168.107.0/24 网关为192.168.107.254
  1. [root@cleint dockerfile-test]# docker network create  --driver bridge  --subnet 192.168.107.0/24 --gateway 192.168.107.254 n1
  2. 8aec3d57d238b34eb6e0cb31b71775511bddfefebe8f87cb309150909c1fc646
  3. [root@cleint dockerfile-test]# docker network ls
  4. NETWORK ID     NAME      DRIVER    SCOPE
  5. d1ea2ab3dab8   bridge    bridge    local
  6. 5f3fcf22894d   host      host      local
  7. 8aec3d57d238   n1        bridge    local
  8. b99add30e794   none      null      local
  9. [root@cleint dockerfile-test]# docker inspect n1
  10. [
  11.     {
  12.         "Name": "n1",
  13.         "Id": "8aec3d57d238b34eb6e0cb31b71775511bddfefebe8f87cb309150909c1fc646",
  14.         "Created": "2024-04-23T20:06:37.31247228+08:00",
  15.         "Scope": "local",
  16.         "Driver": "bridge",
  17.         "EnableIPv6": false,
  18.         "IPAM": {
  19.             "Driver": "default",
  20.             "Options": {},
  21.             "Config": [
  22.                 {
  23.                     "Subnet": "192.168.107.0/24",
  24.                     "Gateway": "192.168.107.254"
  25.                 }
  26.             ]
  27.         },
  28.         "Internal": false,
  29.         "Attachable": false,
  30.         "Ingress": false,
  31.         "ConfigFrom": {
  32.             "Network": ""
  33.         },
  34.         "ConfigOnly": false,
  35.         "Containers": {},
  36.         "Options": {},
  37.         "Labels": {}
  38.     }
  39. ]
  40. #创建一个容器,连接到这个n1的桥接网卡上面
  41. [root@cleint dockerfile-test]# docker run -tid --name q1 --network n1  centos /bin/bash
  42. d098c15e25afd7d39a672f8193a658249016cfecd3e62f309cae4c7a317b94a9
  43. [root@cleint dockerfile-test]# docker ps
  44. CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                   NAMES
  45. d098c15e25af   centos         "/bin/bash"              3 seconds ago   Up 2 seconds                                           q1
  46. 110106833b95   centos-nginx   "nginx -g 'daemon of…"   6 minutes ago   Up 6 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   c1
  47. [root@cleint dockerfile-test]# docker exec -ti q1 /bin/bash
  48. [root@d098c15e25af /]# ping www.baidu.com
  49. PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data.
  50. 64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=1 ttl=127 time=48.10 ms
  51. ^C
  52. --- www.a.shifen.com ping statistics ---
  53. 1 packets transmitted, 1 received, 0% packet loss, time 0ms
  54. rtt min/avg/max/mdev = 48.952/48.952/48.952/0.000 ms
  55. #查看容器的ip信息
  56. [root@cleint dockerfile-test]# docker inspect q1 | grep  -i address
  57.             "LinkLocalIPv6Address": "",
  58.             "SecondaryIPAddresses": null,
  59.             "SecondaryIPv6Addresses": null,
  60.             "GlobalIPv6Address": "",
  61.             "IPAddress": "",
  62.             "MacAddress": "",
  63.                     "MacAddress": "02:42:c0:a8:6b:01",
  64.                     "IPAddress": "192.168.107.1",
  65.                     "GlobalIPv6Address": "",
复制代码
 
 
 
 

来源:https://www.cnblogs.com/qw77/p/18101007
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具