当前位置:   article > 正文

docker【安装、存储、镜像、仓库、网络、监控】_docker version 24.0.7

docker version 24.0.7

 

docker-0110.0.0.51
docker-0210.0.0.52
docker-0310.0.0.53

【1】docker安装

docker-01

  1. [root@docker-01 ~]# vim /etc/yum.conf
  2. [main]
  3. cachedir=/var/cache/yum/$basearch/$releasever
  4. keepcache=1
  5. debuglevel=2
  6. logfile=/var/log/yum.log
  7. exactarch=1
  8. obsoletes=1
  9. gpgcheck=1
  10. plugins=1
  11. installonly_limit=5
  12. bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
  13. distroverpkg=centos-release
  14. [root@docker-01 ~]# wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  15. [root@docker-01 ~]# sed -i 's+donload.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
  16. [root@docker-01 ~]# yum -y install docker-ce
  17. ## 安装包的存放路径
  18. [root@docker-01 ~]# mkdir docker-ce
  19. [root@docker-01 ~]# find /var/cache/yum/x86_64/7/ -type f -name "*.rpm" | xargs mv -t docker-ce/
  20. [root@docker-01 ~]# docker version
  21. Client: Docker Engine - Community
  22. Version: 24.0.4
  23. API version: 1.43
  24. Go version: go1.20.5
  25. Git commit: 3713ee1
  26. Built: Fri Jul 7 14:54:21 2023
  27. OS/Arch: linux/amd64
  28. Context: default
  29. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  30. [root@docker-01 ~]# systemctl start docker
  31. [root@docker-01 ~]# systemctl enable docker
  32. Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  33. [root@docker-01 ~]# tar -zcvf docker-ce.tar.gz docker-ce/
  34. [root@docker-01 ~]# scp -rp docker-ce.tar.gz root@10.0.0.52:/root/
  35. root@10.0.0.52's password:
  36. docker-ce.tar.gz

docker-02、docker-03 

  1. [root@docker-02 ~]# tar xf docker-ce.tar.gz
  2. [root@docker-02 ~]# cd docker-ce/
  3. [root@docker-02 docker-ce]# yum localinstall -y *.rpm
  4. [root@docker-02 docker-ce]# systemctl start docker
  5. [root@docker-02 docker-ce]# systemctl enable docker
  6. Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  7. [root@docker-02 docker-ce]# docker version
  8. Client: Docker Engine - Community
  9. Version: 24.0.4
  10. API version: 1.43
  11. Go version: go1.20.5
  12. Git commit: 3713ee1
  13. Built: Fri Jul 7 14:54:21 2023
  14. OS/Arch: linux/amd64
  15. Context: default

【2】volume-存储

容器数据本地目录位置 

  1. [root@docker-01 ~]# docker run -dit --name test-01 alpine:latest
  2. 5d65a22c730e215414da92c6c79836cf4dd1402bc4b56e701f38aac84e8ab2bb
  3. [root@docker-01 ~]# docker ps -a
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 5d65a22c730e alpine:latest "/bin/sh" 8 seconds ago Up 7 seconds test-01
  6. c6b42128a328 registry:latest "/entrypoint.sh /etc…" 16 minutes ago Up 11 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
  7. [root@docker-01 ~]# docker exec -it test-01 /bin/sh
  8. / # touch test
  9. / # exit
  10. [root@docker-01 ~]# cd /var/lib/docker/
  11. [root@docker-01 docker]# find ./ -type f -name "test"
  12. ./overlay2/84bae6ec2e284fa10c371fcb97e993c1f1b6d342344e8a6c839c6b0e5157d383/diff/test
  13. ./overlay2/84bae6ec2e284fa10c371fcb97e993c1f1b6d342344e8a6c839c6b0e5157d383/merged/test

 将本地目录挂载到容器中

  1. [root@docker-01 ~]# mkdir test
  2. [root@docker-01 ~]# docker run -dit --name test-01 -v ./test:/opt/test/ alpine:latest
  3. fd79df1b5127cfcd0902c4193317a8191c79f2a87a1197400ae3005ce63d7495
  4. [root@docker-01 ~]# echo "111" > test/file
  5. [root@docker-01 ~]# docker exec -it test-01 cat opt/test/file
  6. 111

使用volume卷做数据持久化

  • 即使容器被删除, volume卷还会存在,一直保存,除非把卷删除
  • volume会将容器目录内容保存到本地,前提是卷是空内容,如果卷中有数据,他会将容器目录覆盖
  • volume也可以数据共享,支持多个容器可以挂载相同的卷
  1. [root@docker-01 ~]# docker volume ls
  2. DRIVER VOLUME NAME
  3. [root@docker-01 ~]# docker volume create test
  4. test
  5. [root@docker-01 ~]# docker volume ls
  6. DRIVER VOLUME NAME
  7. local test
  8. [root@docker-01 ~]# docker run -dit --name test-01 -v test:/opt alpine:latest
  9. 1e53144cdc60a7b26f673bd9191ce9c84fac5ff3ea22c7cc938884cb7463d3fb
  10. [root@docker-01 ~]# cd /var/lib/docker/volumes/test/_data/
  11. [root@docker-01 _data]# mkdir ff
  12. [root@docker-01 _data]# docker exec -it test-01 ls opt/
  13. ff

【3】 制作镜像

dockerfile-自动制作镜像

  1. FROM # 使用的基础容器
  2. RUN # 下载服务
  3. CMD # 容器启动的基础命令,容易被替换
  4. ENTPRYOINT # 容器启动的基础命令,不能被替换,如果和CMD同时使用,CMD会成为他的参数
  5. ADD # 拷贝,自动解压
  6. COPY # 拷贝,不解压
  7. WORKDIR # 指定默认的工作目录
  8. EXPOSE # 暴露的端口
  9. VOLUME # 持久化卷
  10. ENV # 环境变量(ssh密码。数据库密码)
  11. LABEL # 镜像的tags
  12. MAINTAINER # 管理者标识

构建单服务镜像-nginx

  1. [root@docker-01 nginx]# vim dockerfile
  2. FROM alpine:latest
  3. RUN apk add nginx
  4. RUN mv /etc/nginx/http.d/default.conf /etc/nginx/http.d/default.conf_bak
  5. COPY test.conf /etc/nginx/http.d
  6. RUN mkdir /usr/share/nginx/html
  7. RUN echo "TSET" >> /usr/share/nginx/html/index.html
  8. WORKDIR /root
  9. EXPOSE 80
  10. VOLUME /var/log/nginx
  11. CMD ["nginx","-g","daemon off;"]
  12. [root@docker-01 nginx]# docker build -t nginx:v1 ./
  13. [+] Building 1.0s (12/12) FINISHED docker:default
  14. => [internal] load build definition from dockerfile 0.0s
  15. => => transferring dockerfile: 345B 0.0s
  16. => [internal] load .dockerignore 0.0s
  17. => => transferring context: 2B 0.0s
  18. => [internal] load metadata for docker.io/library/alpine:latest 0.0s
  19. => [1/7] FROM docker.io/library/alpine:latest 0.0s
  20. => [internal] load build context 0.0s
  21. => => transferring context: 31B 0.0s
  22. => CACHED [2/7] RUN apk add nginx 0.0s
  23. => CACHED [3/7] RUN mv /etc/nginx/http.d/default.conf /etc/nginx/http.d/default.conf_bak 0.0s
  24. => CACHED [4/7] COPY test.conf /etc/nginx/http.d 0.0s
  25. => CACHED [5/7] RUN mkdir /usr/share/nginx/html 0.0s
  26. => CACHED [6/7] RUN echo "TSET" >> /usr/share/nginx/html/index.html 0.0s
  27. => [7/7] WORKDIR /root 0.0s
  28. => exporting to image 1.0s
  29. => => exporting layers 1.0s
  30. => => writing image sha256:5245200f87f20a09cc398ccb99149915d04c148942fe8367fe41ff3dcba8c321 0.0s
  31. => => naming to docker.io/library/nginx:v1
  32. [root@docker-01 nginx]# docker images
  33. REPOSITORY TAG IMAGE ID CREATED SIZE
  34. nginx v1 5245200f87f2 32 seconds ago 10.7MB
  35. [root@docker-01 nginx]# docker run -dit -p 80:80 --name nginx nginx:v1
  36. 079dbb6b8ae89070c42da5526be09430ec68b956b00173562953a07dee0ed820
  37. [root@docker-01 nginx]# docker ps -a
  38. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  39. 079dbb6b8ae8 nginx:v1 "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
  40. [root@docker-01 nginx]# docker volume ls
  41. DRIVER VOLUME NAME
  42. local 2e2c3c34b376dc4b59b0415d68a1478aee43d0c8c86f05ffab621cf6b4694ba0
  43. [root@docker-01 nginx]# ls /var/lib/docker/volumes/2e2c3c34b376dc4b59b0415d68a1478aee43d0c8c86f05ffab621cf6b4694ba0/_data/
  44. access.log error.log

 制作基础镜像centos:7

  1. [root@docker-01 centos7]# vim dockerfile
  2. FROM scratch
  3. ADD centos_rootfs.tar.xz /
  4. CMD ["/bin/sh"]
  5. [root@docker-01 centos7]# docker build -t centos:7 ./
  6. [+] Building 16.6s (5/5) FINISHED docker:default
  7. => [internal] load build definition from dockerfile 0.0s
  8. => => transferring dockerfile: 93B 0.0s
  9. => [internal] load .dockerignore 0.0s
  10. => => transferring context: 2B 0.0s
  11. => [internal] load build context 0.7s
  12. => => transferring context: 73.57MB 0.7s
  13. => [1/1] ADD centos_rootfs.tar.xz / 14.0s
  14. => exporting to image 1.9s
  15. => => exporting layers 1.9s
  16. => => writing image sha256:88149b5f20e7ac45d64059685021e08274c2459404a0fe815aa3aea66885fe89 0.0s
  17. => => naming to docker.io/library/centos:7 0.0s
  18. [root@docker-01 centos7]# docker images
  19. REPOSITORY TAG IMAGE ID CREATED SIZE
  20. centos 7 88149b5f20e7 10 seconds ago 402MB

 查看镜像的构建历史

  1. [root@docker-01 centos7]# docker history centos:7
  2. IMAGE CREATED CREATED BY SIZE COMMENT
  3. 88149b5f20e7 About a minute ago CMD ["/bin/sh"] 0B buildkit.dockerfile.v0
  4. <missing> About a minute ago ADD centos_rootfs.tar.xz / # buildkit 402MB buildkit.dockerfile.v0

 制作nginx+ssh的镜像

  1. [root@docker-01 nginx-ssh]# vim dockerfile
  2. FROM centos7:v1
  3. RUN yum -y install epel-release
  4. RUN yum clean all
  5. RUN yum -y install nginx
  6. RUN yum -y install openssh-server
  7. RUN yum -y install initscripts
  8. RUN /usr/sbin/sshd-keygen
  9. RUN /usr/sbin/sshd
  10. RUN echo '111' | passwd --stdin root
  11. ADD init.sh /init.sh
  12. EXPOSE 80 22
  13. WORKDIR /root
  14. CMD ["/bin/bash","/init.sh"]
  15. [root@docker-01 nginx-ssh]# vim init.sh
  16. #!/bin/bash
  17. nginx
  18. /usr/sbin/sshd -D
  19. ## 构建
  20. [root@docker-01 nginx-ssh]# docker build -t nginx_ssh:v1 ./
  21. [+] Building 40.6s (16/16) FINISHED docker:default
  22. => [internal] load build definition from dockerfile 0.0s
  23. => => transferring dockerfile: 354B 0.0s
  24. => [internal] load .dockerignore 0.0s
  25. => => transferring context: 2B 0.0s
  26. => [internal] load metadata for docker.io/library/centos7:v1 0.0s
  27. => CACHED [ 1/11] FROM docker.io/library/centos7:v1 0.0s
  28. => [internal] load build context 0.0s
  29. => => transferring context: 28B 0.0s
  30. => [ 2/11] RUN yum -y install epel-release 1.2s
  31. => [ 3/11] RUN yum clean all 0.3s
  32. => [ 4/11] RUN yum -y install nginx 24.3s
  33. => [ 5/11] RUN yum -y install openssh-server 4.3s
  34. => [ 6/11] RUN yum -y install initscripts 4.3s
  35. => [ 7/11] RUN /usr/sbin/sshd-keygen 0.2s
  36. => [ 8/11] RUN /usr/sbin/sshd 0.1s
  37. => [ 9/11] RUN echo '111' | passwd --stdin root 0.1s
  38. => [10/11] ADD init.sh /init.sh 0.0s
  39. => [11/11] WORKDIR /root 0.0s
  40. => exporting to image 5.7s
  41. => => exporting layers 5.7s
  42. => => writing image sha256:c002c1a89ce1980238236701efa0f496f25c8f925603fbfa666a4b1beee41228 0.0s
  43. => => naming to docker.io/library/nginx_ssh:v1
  44. [root@docker-01 nginx-ssh]# docker images
  45. REPOSITORY TAG IMAGE ID CREATED SIZE
  46. nginx_ssh v1 c002c1a89ce1 55 seconds ago 1.09GB
  47. ## 启动容器测试验证
  48. [root@docker-01 nginx-ssh]# docker run -dit -P nginx_ssh:v1
  49. 72eb999e39d4227419934fa2adbd3bb8b3be874f01350647015db149aad2d41e
  50. [root@docker-01 nginx-ssh]# docker ps -a
  51. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  52. 72eb999e39d4 nginx_ssh:v1 "/bin/bash /init.sh" 12 seconds ago Up 11 seconds 0.0.0.0:32769->22/tcp, :::32769->22/tcp, 0.0.0.0:32768->80/tcp, :::32768->80/tcp quirky_swartz
  53. [root@docker-01 nginx-ssh]# curl -I 10.0.0.51:32768
  54. HTTP/1.1 200 OK
  55. Server: nginx/1.20.1
  56. Date: Thu, 03 Aug 2023 11:13:45 GMT
  57. Content-Type: text/html
  58. Content-Length: 4833
  59. Last-Modified: Fri, 16 May 2014 15:12:48 GMT
  60. Connection: keep-alive
  61. ETag: "53762af0-12e1"
  62. Accept-Ranges: bytes
  63. [root@docker-01 nginx-ssh]# ssh root@10.0.0.51:32769
  64. ssh: Could not resolve hostname 10.0.0.51:32769: Name or service not known
  65. [root@docker-01 nginx-ssh]# ssh root@10.0.0.51 -p 32769
  66. The authenticity of host '[10.0.0.51]:32769 ([10.0.0.51]:32769)' can't be established.
  67. ECDSA key fingerprint is af:86:56:c1:7a:91:b4:49:73:7f:93:b4:de:69:b0:a5.
  68. Are you sure you want to continue connecting (yes/no)? yes
  69. Warning: Permanently added '[10.0.0.51]:32769' (ECDSA) to the list of known hosts.
  70. root@10.0.0.51's password:
  71. [root@72eb999e39d4 ~]# ls
  72. [root@72eb999e39d4 ~]#

ENTRYPOINT

  • 使用CMD,我们启动容器时还可以指定初始命令,会覆盖掉
  • CMD CMD ["/bin/bash"]
  • docker run -dit -P test:v1 sleep 10
  • 那么他的初始命令就是 sleep 10
  • 使用ENTRYPOINT指定初始命令,我们启动容器时还可以指定初始命令,会作为参数使用 ENTRYPOINT ["/bin/bash"]
  • docker run -dit -P test:v1 sleep 10
  • 那么他的初始命令就是 /bin/bash sleep 10

【4】--link

不使用link的容器,ping主机名是不通的

使用link后,会将容器的主机名和ip记录在hosts文件。

所以以后链接容器不需要使用ip地址,使用主机名,因为主机名是固定不变的,IP地址容器重启后会变化

  1. [root@docker-01 nginx-ssh]# docker run -dit --name test-01 alpine:latest
  2. d2ab4cfdb93362b2a3f5bfe05e7a20d007201309792f233cc6c450349c8be747
  3. [root@docker-01 nginx-ssh]# docker run -dit --name test-02 --link test-01:nginx alpine:latest
  4. 9c5cc9918eb770772e94ded90e49dfa0857014eac2022790f60da9fde78da337
  5. [root@docker-01 nginx-ssh]# docker exec -it test-02 ping test-01
  6. PING test-01 (172.17.0.3): 56 data bytes
  7. 64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.104 ms
  8. 64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.049 ms
  9. ^C
  10. --- test-01 ping statistics ---
  11. 2 packets transmitted, 2 packets received, 0% packet loss
  12. round-trip min/avg/max = 0.049/0.076/0.104 ms

【5】docker-registry(轻量级私有仓库)

启动registry仓库 

  1. [root@docker-01 ~]# docker pull registry
  2. Using default tag: latest
  3. latest: Pulling from library/registry
  4. 31e352740f53: Already exists
  5. 7f9bcf943fa5: Pull complete
  6. 3c98a1678a82: Pull complete
  7. 51f7a5bb21d4: Pull complete
  8. 3f044f23c427: Pull complete
  9. Digest: sha256:9977826e0d1d0eccc7af97017ae41f2dbe13f2c61e4c886ec28f0fdd8c4078aa
  10. Status: Downloaded newer image for registry:latest
  11. docker.io/library/registry:latest
  12. [root@docker-01 ~]# docker run -dit -p 5000:5000 --name registry --restart=always -v /opt/myregistry:/var/lib/registry registry:latest
  13. ba4e887ad630f68d761266fc568c38a363b7a16a5ed732da0d097b0367c344c7
  14. [root@docker-01 ~]# docker ps -a -l
  15. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  16. ba4e887ad630 registry:latest "/entrypoint.sh /etc…" 19 seconds ago Up 17 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry

上传镜像 

  • 第一次推送会报错,原因是启动仓库容器时没有指定http协议,我们推送时使用的是http协议,他让使用https协议,修改配置文件,受信赖的
  1. [root@docker-01 ~]# docker tag alpine_nginx:v1 10.0.0.51:5000/test/alpine_nginx:v1
  2. [root@docker-01 ~]# docker push 10.0.0.51:5000/test/alpine_nginx:v1
  3. The push refers to repository [10.0.0.51:5000/test/alpine_nginx]
  4. Get "https://10.0.0.51:5000/v2/": http: server gave HTTP response to HTTPS client
  5. ## 添加受信赖的地址
  6. [root@docker-01 ~]# vim /etc/docker/daemon.json
  7. {
  8. "registry-mirrors": [
  9. "http://hub-mirror.c.163.com",
  10. "https://docker.mirrors.ustc.edu.cn",
  11. "https://registry.docker-cn.com"
  12. ],
  13. "insecure-registries": [
  14. "10.0.0.51:5000"
  15. ]
  16. }
  17. [root@docker-01 ~]# systemctl daemon-reload
  18. [root@docker-01 ~]# systemctl restart docker.service
  19. [root@docker-01 ~]# systemctl status docker.service
  20. ## 再次上传镜像
  21. [root@docker-01 ~]# docker push 10.0.0.51:5000/test/alpine_nginx:v1
  22. The push refers to repository [10.0.0.51:5000/test/alpine_nginx]
  23. ea6e7cf61351: Pushed
  24. 22802b4d26c0: Pushed
  25. v1: digest: sha256:0b806a3059535ed9ee2d882b35bc790cabe850036eb6f32073579c059885c513 size: 740
  26. ## 仓库目录,查看仓库中镜像有哪些版本
  27. [root@docker-01 ~]# ls /opt/myregistry/docker/registry/v2/repositories/test/alpine_nginx/_manifests/tags/
  28. v1

 

下载镜像 

  1. [root@docker-01 ~]# docker pull 10.0.0.51:5000/test/alpine_nginx:v1
  2. v1: Pulling from test/alpine_nginx
  3. Digest: sha256:0b806a3059535ed9ee2d882b35bc790cabe850036eb6f32073579c059885c513
  4. Status: Downloaded newer image for 10.0.0.51:5000/test/alpine_nginx:v1
  5. 10.0.0.51:5000/test/alpine_nginx:v1

删除仓库中的镜像 

  1. [root@docker-01 ~]# docker exec -it registry /bin/sh
  2. ## 删除repo
  3. / # rm -rf /var/lib/registry/docker/registry/v2/repositories/test/alpine_nginx
  4. ## 清除blob,释放占用的空间
  5. / # registry garbage-collect /etc/docker/registry/config.yml
  6. 0 blobs marked, 4 blobs and 0 manifests eligible for deletion
  7. blob eligible for deletion: sha256:0b806a3059535ed9ee2d882b35bc790cabe850036eb6f32073579c059885c513
  8. INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/0b/0b806a3059535ed9ee2d882b35bc790cabe850036eb6f32073579c059885c513 go.version=go1.19.9 instance.id=6293eedf-a5eb-4961-a272-cf87d6d96821 service=registry
  9. blob eligible for deletion: sha256:1ce4f7c3383cd71be7eab3bdbf6d981c1bc28ad8cb13bfb0d038ee56b0337279
  10. INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/1c/1ce4f7c3383cd71be7eab3bdbf6d981c1bc28ad8cb13bfb0d038ee56b0337279 go.version=go1.19.9 instance.id=6293eedf-a5eb-4961-a272-cf87d6d96821 service=registry
  11. blob eligible for deletion: sha256:53c99a3b3b9e83fffdc609a144ec3dc2b7a2fe73cfc3fca4153061cfda745ff8
  12. INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/53/53c99a3b3b9e83fffdc609a144ec3dc2b7a2fe73cfc3fca4153061cfda745ff8 go.version=go1.19.9 instance.id=6293eedf-a5eb-4961-a272-cf87d6d96821 service=registry
  13. blob eligible for deletion: sha256:b8c1726d143fc87168c5a6602f314b687af9e1518fdfb6465cce9791cb6ec91a
  14. INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/b8/b8c1726d143fc87168c5a6602f314b687af9e1518fdfb6465cce9791cb6ec91a go.version=go1.19.9 instance.id=6293eedf-a5eb-4961-a272-cf87d6d96821 service=registry

【6】docker-harbor(企业级私有仓库)

docker-01

  1. ## 安装docker-compose
  2. [root@docker-01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  3. [root@docker-01 ~]# yum -y install docker-compose
  4. [root@docker-01 ~]# mv harbor-offline-installer-v2.5.0.tgz /usr/src/
  5. [root@docker-01 ~]# cd /usr/src/
  6. [root@docker-01 src]# tar xf harbor-offline-installer-v2.5.0.tgz
  7. [root@docker-01 src]# cd harbor/
  8. [root@docker-01 harbor]# cp harbor.yml.tmpl harbor.yml
  9. [root@docker-01 harbor]# vim harbor.yml
  10. hostname: 10.0.0.51
  11. # http related config
  12. http:
  13. # port for http, default is 80. If https enabled, this port will redirect to https port
  14. port: 80
  15. 注释掉https,因为上面已经使用了http协议
  16. # https related config
  17. #https:
  18. # https port for harbor, default is 443
  19. # port: 443
  20. # The path of cert and key files for nginx
  21. # certificate: /your/certificate/path
  22. # private_key: /your/private/key/path
  23. .....
  24. harbor_admin_password: admin
  25. ## 安装harbor
  26. [root@docker-01 harbor]# ./install.sh
  27. [Step 0]: checking if docker is installed ...
  28. Note: docker version: 24.0.5
  29. [Step 1]: checking docker-compose is installed ...
  30. Note: docker-compose version: 1.18.0
  31. [Step 2]: loading Harbor images ...

  1. [root@docker-01 harbor]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 90b46e74919f goharbor/nginx-photon:v2.5.0 "nginx -g 'daemon of…" 12 seconds ago Up 11 seconds (health: starting) 0.0.0.0:80->8080/tcp, :::80->8080/tcp nginx
  4. 0f9d3bf2bd1b goharbor/harbor-jobservice:v2.5.0 "/harbor/entrypoint.…" 12 seconds ago Up 11 seconds (health: starting) harbor-jobservice
  5. 89dfacb33a8d goharbor/harbor-core:v2.5.0 "/harbor/entrypoint.…" 12 seconds ago Up 11 seconds (health: starting) harbor-core
  6. dfe33ae77b76 goharbor/harbor-db:v2.5.0 "/docker-entrypoint.…" 13 seconds ago Up 11 seconds (health: starting) harbor-db
  7. a29a64e88a60 goharbor/harbor-portal:v2.5.0 "nginx -g 'daemon of…" 13 seconds ago Up 11 seconds (health: starting) harbor-portal
  8. fc937964ac33 goharbor/redis-photon:v2.5.0 "redis-server /etc/r…" 13 seconds ago Up 11 seconds (health: starting) redis
  9. 3ec1b5c820c5 goharbor/registry-photon:v2.5.0 "/home/harbor/entryp…" 13 seconds ago Up 11 seconds (health: starting) registry
  10. e3ecd2b0c3d3 goharbor/harbor-registryctl:v2.5.0 "/home/harbor/start.…" 13 seconds ago Up 12 seconds (health: starting) registryctl
  11. d696cd56240c goharbor/harbor-log:v2.5.0 "/bin/sh -c /usr/loc…" 13 seconds ago Up 12 seconds (health: starting) 127.0.0.1:1514->10514/tcp harbor-log

 systemctl管理harbor

  1. [root@docker-01 harbor]# vim /usr/lib/systemd/system/harbor.service
  2. [Unit]
  3. Description=Harbor
  4. After=docker.service systemd-networkd.service systemd-resolved.service
  5. Requires=docker.service
  6. Documentation=http://github.com/vmware/harbor
  7. [Service]
  8. Type=simple
  9. Restart=on-failure
  10. RestartSec=5
  11. ExecStart=/usr/bin/docker-compose -f /usr/src/harbor/docker-compose.yml up
  12. ExecStop=/usr/bin/docker-compose -f /usr/src/harbor/docker-compose.yml down
  13. [Install]
  14. WantedBy=multi-user.target
  15. [root@docker-01 harbor]# systemctl daemon-reload
  16. [root@docker-01 harbor]# systemctl restart harbor.service

 docker-02:上传镜像到harbor仓库

  1. [root@docker-02 ~]# vim /etc/docker/daemon.json
  2. {
  3. "registry-mirrors": [
  4. "http://hub-mirror.c.163.com",
  5. "https://docker.mirrors.ustc.edu.cn",
  6. "https://registry.docker-cn.com"
  7. ],
  8. "insecure-registries": [
  9. "10.0.0.51:5000",
  10. "10.0.0.51"
  11. ]
  12. }
  13. [root@docker-02 ~]# systemctl daemon-reload
  14. [root@docker-02 ~]# systemctl restart docker.service
  15. [root@docker-02 ~]# docker tag alpine:latest 10.0.0.51/library/alpine:latest
  16. [root@docker-02 ~]# docker login 10.0.0.51
  17. Username: admin
  18. Password:
  19. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  20. Configure a credential helper to remove this warning. See
  21. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  22. Login Succeeded
  23. [root@docker-02 ~]# docker push 10.0.0.51/library/alpine:latest
  24. The push refers to repository [10.0.0.51/library/alpine]
  25. 78a822fe2a2d: Pushed
  26. latest: digest: sha256:25fad2a32ad1f6f510e528448ae1ec69a28ef81916a004d3629874104f8a7f70 size: 528

【7】 将registry仓库的镜像迁移到harbor仓库中

 

【8】docker-网络配置 与使用

01-基础网络和自定义网络

  1. bridge # 默认网络,NAT模式,bridge类型网络如果想要被外界访问需要做端口映射
  2. host # 使用宿主机的网络,性能最高
  3. container # 使用其他容器公用网络,K8S中使用
  4. none # 没有网络,自定义

02-host网络类型:使用宿主机网络,使用宿主机的IP地址、主机名、host解析

  • 公用网络的缺点:如果宿主机把某些端口占用,容器就不能使用
  1. [root@docker-01 harbor]# docker run -it --network host --name host alpine:latest
  2. / # ip a
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
  4. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5. inet 127.0.0.1/8 scope host lo
  6. valid_lft forever preferred_lft forever
  7. inet6 ::1/128 scope host
  8. valid_lft forever preferred_lft forever
  9. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  10. link/ether 00:0c:29:59:33:5b brd ff:ff:ff:ff:ff:ff
  11. inet 10.0.0.51/24 brd 10.0.0.255 scope global eth0
  12. valid_lft forever preferred_lft forever
  13. inet6 fe80::504b:4ae0:fa14:28c7/64 scope link
  14. valid_lft forever preferred_lft forever
  15. 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
  16. link/ether 02:42:44:29:af:0b brd ff:ff:ff:ff:ff:ff
  17. inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
  18. valid_lft forever preferred_lft forever
  19. inet6 fe80::42:44ff:fe29:af0b/64 scope link
  20. valid_lft forever preferred_lft forever

 

03-container网络类型:使用其他容器相同的网络、主机名、host解析 

  1. [root@docker-01 harbor]# docker run -dit --name test alpine:latest
  2. 5aaf372430af13710d4bae966def3d25f67c62f28445fad1b19d1959de1f93cc
  3. [root@docker-01 harbor]# docker run -dit --network container:test --name test-02 alpine:latest
  4. ebd43f2f636bec2f32e7d1ca3e20c36e4f52b0dcb3bb7df86ed1c68c8e6caddf
  5. [root@docker-01 harbor]# docker inspect test | grep -i ipaddr
  6. "SecondaryIPAddresses": null,
  7. "IPAddress": "172.17.0.2",
  8. "IPAddress": "172.17.0.2",
  9. [root@docker-01 harbor]# docker inspect test-02 | grep -i ipaddr
  10. "SecondaryIPAddresses": null,
  11. "IPAddress": "",
  12. [root@docker-01 harbor]# docker inspect test-02 | grep -i hostname
  13. "HostnamePath": "/var/lib/docker/containers/5aaf372430af13710d4bae966def3d25f67c62f28445fad1b19d1959de1f93cc/hostname",
  14. "Hostname": "5aaf372430af",
  15. [root@docker-01 harbor]# docker inspect test | grep -i hostname
  16. "HostnamePath": "/var/lib/docker/containers/5aaf372430af13710d4bae966def3d25f67c62f28445fad1b19d1959de1f93cc/hostname",
  17. "Hostname": "5aaf372430af",

04-none网络类型:没有网络,空 

创建自定义网络类型 

  1. [root@docker-01 harbor]# docker network ls
  2. NETWORK ID NAME DRIVER SCOPE
  3. 85f75ec95148 bridge bridge local
  4. f6174556c9bd harbor_harbor bridge local
  5. e5afa29cdc9d host host local
  6. 6dee573ffc75 none null local
  7. [root@docker-01 harbor]# docker network create -d bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 test
  8. 11c946eafd311ec4370bd5a6112fa234413b44875dd28a4ef147420f34c654c3
  9. [root@docker-01 harbor]# docker network ls
  10. NETWORK ID NAME DRIVER SCOPE
  11. 85f75ec95148 bridge bridge local
  12. f6174556c9bd harbor_harbor bridge local
  13. e5afa29cdc9d host host local
  14. 6dee573ffc75 none null local
  15. 11c946eafd31 test bridge local
  16. [root@docker-01 harbor]# docker run -dit --network test --name test-01 alpine:latest
  17. 2afc379d4b918947ebe7307a78eb2ea98d489aa4ca6dbe4902c4804b4b5c1a30
  18. [root@docker-01 harbor]# docker run -dit --network test --name test-02 alpine:latest
  19. 413153cdecc6e87aaff2e902a6af57d48e9ad70f2cb135ef4dced2e7e02b70d8
  20. [root@docker-01 harbor]# docker inspect test-01 | grep -i ipaddr
  21. "SecondaryIPAddresses": null,
  22. "IPAddress": "",
  23. "IPAddress": "172.18.0.2",
  24. [root@docker-01 harbor]# docker inspect test-02 | grep -i ipaddr
  25. "SecondaryIPAddresses": null,
  26. "IPAddress": "",
  27. "IPAddress": "172.18.0.3",
  28. [root@docker-01 harbor]# docker exec -it test-01 ping test-02
  29. PING test-02 (172.18.0.3): 56 data bytes
  30. 64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.049 ms
  31. ^C
  32. --- test-02 ping statistics ---
  33. 1 packets transmitted, 1 packets received, 0% packet loss
  34. round-trip min/avg/max = 0.049/0.049/0.049 ms
  35. [root@docker-01 harbor]# docker exec -it test-02 ping test-01
  36. PING test-01 (172.18.0.2): 56 data bytes
  37. 64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.034 ms
  38. ^C
  39. --- test-01 ping statistics ---
  40. 1 packets transmitted, 1 packets received, 0% packet loss
  41. round-trip min/avg/max = 0.034/0.034/0.034 ms

【9】docker-none配置桥接网络

(可以通过容器IP直接访问容器中的资源) 

缺点:docker重启后就失效了

01-启动容器,使用none网络

  1. [root@docker-01 ~]# docker run -dit --network none nginx:latest
  2. c65f03b113bde2f957bcc971f0705292151a9a84009a390963a12adee210e8d9
  3. [root@docker-01 ~]# docker exec -it festive_yalow hostname -I
  4. [root@docker-01 ~]#
  1. [root@docker-01 ~]# cd /etc/sysconfig/network-scripts/
  2. [root@docker-01 network-scripts]# cp ifcfg-eth0 ifcfg-br0
  3. [root@docker-01 network-scripts]# vim ifcfg-br0
  4. TYPE=BRIDGE
  5. BOOTPROTO=none
  6. DEFROUTE=yes
  7. PEERDNS=yes
  8. PEERROUTES=yes
  9. IPV4_FAILURE_FATAL=no
  10. IPV6INIT=yes
  11. IPV6_AUTOCONF=yes
  12. IPV6_DEFROUTE=yes
  13. IPV6_PEERDNS=yes
  14. IPV6_PEERROUTES=yes
  15. IPV6_FAILURE_FATAL=no
  16. IPV6_ADDR_GEN_MODE=stable-privacy
  17. NAME=br0
  18. DEVICE=br0
  19. ONBOOT=yes
  20. IPADDR=10.0.0.51
  21. NETMASK=255.255.255.0
  22. GATEWAY=10.0.0.254
  23. DNS1=10.0.0.254
  24. [root@docker-01 network-scripts]# systemctl restart network
  25. ## 修改eth0网卡配置
  26. ## 添加BRIDGE=br0,设置访问的IP是br0网卡接收
  27. [root@docker-01 network-scripts]# systemctl restart networ
  28. [root@docker-01 ~]# ip a| grep br0
  29. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
  30. 162: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
  31. inet 10.0.0.51/24 brd 10.0.0.255 scope global br0
  32. [root@docker-01 ~]# ip a| grep eth0
  33. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000

 

  1. [root@docker-01 ~]# yum -y install unzip
  2. [root@docker-01 ~]# unzip pipework-master.zip
  3. Archive: pipework-master.zip
  4. fb03d42746a31729f3e3ddd4963e4eeaeed76714
  5. creating: pipework-master/
  6. extracting: pipework-master/.gitignore
  7. inflating: pipework-master/LICENSE
  8. inflating: pipework-master/README.md
  9. inflating: pipework-master/docker-compose.yml
  10. creating: pipework-master/doctoc/
  11. inflating: pipework-master/doctoc/Dockerfile
  12. inflating: pipework-master/pipework
  13. inflating: pipework-master/pipework.spec
  14. [root@docker-01 ~]# mv pipework-master /usr/src/
  15. [root@docker-01 ~]# ln -s /usr/src/pipework-master/pipework /usr/local/bin/
  16. [root@docker-01 ~]# which pipwork
  17. /usr/bin/which: no pipwork in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
  18. [root@docker-01 ~]# pipework br0 festive_yalow 10.0.0.10/24@10.0.0.254
  19. [root@docker-01 ~]# docker exec -it festive_yalow hostname -I
  20. 10.0.0.10
  21. [root@docker-01 ~]#

【10】docker-macvlan(跨宿主机容器之间相互通讯)

  • macvlan的缺点:宿主机无法访问到容器,大规模使用非常麻烦,也不会解决IP冲突的问题
  1. ## docker-01 创建macvlan
  2. [root@docker-01 ~]# docker network ls
  3. NETWORK ID NAME DRIVER SCOPE
  4. e8c1e9f4cb1b bridge bridge local
  5. e5afa29cdc9d host host local
  6. 6dee573ffc75 none null local
  7. [root@docker-01 ~]#
  8. [root@docker-01 ~]# docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan-01
  9. ef4be34e90d59c1966451b6e79b1e321d46bd3b7f9bbf8bc56ecf32fd5cd3419
  10. [root@docker-01 ~]# docker network ls
  11. NETWORK ID NAME DRIVER SCOPE
  12. e8c1e9f4cb1b bridge bridge local
  13. e5afa29cdc9d host host local
  14. ef4be34e90d5 macvlan-01 macvlan local
  15. 6dee573ffc75 none null local
  16. ## docker-02 创建macvlan
  17. [root@docker-02 ~]# docker network ls
  18. NETWORK ID NAME DRIVER SCOPE
  19. e2dc92e248a6 bridge bridge local
  20. 8128c95017cd host host local
  21. 95f3f6f65a18 none null local
  22. [root@docker-02 ~]#
  23. [root@docker-02 ~]# docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan-01
  24. 32a1ca08b526e0651f9a53120e9d6e451076e1d270605f4c8a9c39b3ddd1d91c
  25. [root@docker-02 ~]# docker network ls
  26. NETWORK ID NAME DRIVER SCOPE
  27. e2dc92e248a6 bridge bridge local
  28. 8128c95017cd host host local
  29. 32a1ca08b526 macvlan-01 macvlan local
  30. 95f3f6f65a18 none null local
  31. ## docker-01启动容器,容器固定使用IP地址
  32. [root@docker-01 ~]# docker run -dit --network macvlan-01 --ip 10.0.0.100 alpine:latest
  33. 18cee62da7666e7348b7d43d45a087beed1786b1a60a32252cca71fc9412f411
  34. [root@docker-01 ~]# docker ps -a
  35. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  36. 18cee62da766 alpine:latest "/bin/sh" 6 seconds ago Up 4 seconds amazing_dhawan
  37. [root@docker-01 ~]# docker inspect amazing_dhawan | grep -i ipaddr
  38. "SecondaryIPAddresses": null,
  39. "IPAddress": "",
  40. "IPAddress": "10.0.0.100",
  41. ## docker-02启动容器,容器固定使用IP地址
  42. [root@docker-02 ~]# docker run -dit --network macvlan-01 --ip 10.0.0.111 alpine:latest
  43. 87ed8fe21caa986eb05581789ce8205e30b2b5f81fc2e5793fbb79210d7d7a01
  44. [root@docker-02 ~]# docker ps -a
  45. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  46. 87ed8fe21caa alpine:latest "/bin/sh" 5 seconds ago Up 3 seconds charming_khorana
  47. [root@docker-02 ~]# docker inspect charming_khorana | grep -i ipaddr
  48. "SecondaryIPAddresses": null,
  49. "IPAddress": "",
  50. "IPAddress": "10.0.0.111",

 访问测试-外界访问容器 

测试访问-macvlan网络缺点:容器访问外界或宿主机是不通的 

【11】docker-weave(跨宿主机网络、第三方网络插件)

docker-01安装weave插件

  1. [root@docker-01 ~]# docker network ls
  2. NETWORK ID NAME DRIVER SCOPE
  3. 1cbbe7acab5c bridge bridge local
  4. e5afa29cdc9d host host local
  5. 6dee573ffc75 none null local
  6. [root@docker-01 ~]# wget https://gitcode.net/mirrors/weaveworks/weave/-/archive/latest_release/weave-latest_release.tar.gz
  7. [root@docker-01 ~]# tar xf weave-latest_release.tar.gz -C /usr/src/
  8. [root@docker-01 ~]# cd /usr/src/weave-latest_release/
  9. [root@docker-01 weave-latest_release]# cp weave /usr/local/bin/
  10. [root@docker-01 weave-latest_release]# which weave
  11. /usr/local/bin/weave
  12. ## 安装weave
  13. [root@docker-01 weave-latest_release]# weave version
  14. weave script unreleased
  15. Unable to find image 'weaveworks/weaveexec:latest' locally
  16. latest: Pulling from weaveworks/weaveexec
  17. 21c83c524219: Pull complete
  18. 02ec35b6f627: Pull complete
  19. c40f141adde9: Pull complete
  20. a63db11be476: Pull complete
  21. e8d3a1b4fb09: Pull complete
  22. a32777c54c9c: Pull complete
  23. 62ae831e3996: Pull complete
  24. 4dce36b0e389: Pull complete
  25. 6f3464413eb4: Pull complete
  26. Digest: sha256:847cdb3eb0d38ff6590b6066ec0f6b02ced47c1d76a78f3f93d8ca6145aecaa5
  27. Status: Downloaded newer image for weaveworks/weaveexec:latest
  28. weave git-34de0b10a69c
  29. ## 启动
  30. [root@docker-01 weave-latest_release]# weave launch
  31. latest: Pulling from weaveworks/weave
  32. latest: Pulling from weaveworks/weave
  33. 21c83c524219: Already exists
  34. 02ec35b6f627: Already exists
  35. c40f141adde9: Already exists
  36. a63db11be476: Already exists
  37. e8d3a1b4fb09: Already exists
  38. Digest: sha256:a4f1dd7b4fcd3a391c165f1ab20c5f72330c22fe0918c899be67763717bb2a28
  39. Status: Downloaded newer image for weaveworks/weave:latest
  40. docker.io/weaveworks/weave:latest
  41. latest: Pulling from weaveworks/weavedb
  42. a53a673d456f: Pull complete
  43. Digest: sha256:69451a2121b288e09329241de9401af1aeddd05d93f145764bbb735a4ea05c76
  44. Status: Downloaded newer image for weaveworks/weavedb:latest
  45. docker.io/weaveworks/weavedb:latest
  46. d0c0b0e24094755002c7338d101a656e5c511af932a55014a5cb8a3439530f17
  47. [root@docker-01 weave-latest_release]# docker ps -a
  48. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  49. d0c0b0e24094 weaveworks/weave:latest "/home/weave/weaver …" 31 seconds ago Up 30 seconds weave
  50. 4dc0487ac570 weaveworks/weaveexec:latest "data-only" 31 seconds ago Created weavevolumes-latest
  51. 957be4362c63 weaveworks/weavedb:latest "data-only" 31 seconds ago Created weavedb
  52. [root@docker-01 weave-latest_release]# docker network ls
  53. NETWORK ID NAME DRIVER SCOPE
  54. 1cbbe7acab5c bridge bridge local
  55. e5afa29cdc9d host host local
  56. 6dee573ffc75 none null local
  57. b9fde5aa55c8 weave weavemesh local

docker-02安装weave 插件

  1. [root@docker-02 ~]# docker network ls
  2. NETWORK ID NAME DRIVER SCOPE
  3. e2dc92e248a6 bridge bridge local
  4. 8128c95017cd host host local
  5. 95f3f6f65a18 none null local
  6. [root@docker-02 ~]# wget https://gitcode.net/mirrors/weaveworks/weave/-/archive/latest_release/weave-latest_release.tar.gz
  7. [root@docker-02 ~]# tar xf weave-latest_release.tar.gz -C /usr/src/
  8. [root@docker-02 ~]# cd /usr/src/weave-latest_release/
  9. [root@docker-02 weave-latest_release]# cp weave /usr/local/bin/
  10. [root@docker-02 weave-latest_release]# which weave
  11. /usr/local/bin/weave
  12. ## 安装weave
  13. [root@docker-02 weave-latest_release]# weave version
  14. weave script unreleased
  15. Unable to find image 'weaveworks/weaveexec:latest' locally
  16. latest: Pulling from weaveworks/weaveexec
  17. 21c83c524219: Pull complete
  18. 02ec35b6f627: Pull complete
  19. c40f141adde9: Pull complete
  20. a63db11be476: Pull complete
  21. e8d3a1b4fb09: Pull complete
  22. a32777c54c9c: Pull complete
  23. 62ae831e3996: Pull complete
  24. 4dce36b0e389: Pull complete
  25. 6f3464413eb4: Pull complete
  26. Digest: sha256:847cdb3eb0d38ff6590b6066ec0f6b02ced47c1d76a78f3f93d8ca6145aecaa5
  27. Status: Downloaded newer image for weaveworks/weaveexec:latest
  28. weave git-34de0b10a69c
  29. ## 启动weave
  30. [root@docker-02 weave-latest_release]# weave launch
  31. latest: Pulling from weaveworks/weave
  32. latest: Pulling from weaveworks/weave
  33. 21c83c524219: Already exists
  34. 02ec35b6f627: Already exists
  35. c40f141adde9: Already exists
  36. a63db11be476: Already exists
  37. e8d3a1b4fb09: Already exists
  38. Digest: sha256:a4f1dd7b4fcd3a391c165f1ab20c5f72330c22fe0918c899be67763717bb2a28
  39. Status: Downloaded newer image for weaveworks/weave:latest
  40. docker.io/weaveworks/weave:latest
  41. latest: Pulling from weaveworks/weavedb
  42. a53a673d456f: Pull complete
  43. Digest: sha256:69451a2121b288e09329241de9401af1aeddd05d93f145764bbb735a4ea05c76
  44. Status: Downloaded newer image for weaveworks/weavedb:latest
  45. docker.io/weaveworks/weavedb:latest
  46. 1cf777979aaf506941f53e67ea0349458b8a285f745b9bdd116f06c98c81a0c9
  47. [root@docker-02 weave-latest_release]# docker ps -a
  48. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  49. 1cf777979aaf weaveworks/weave:latest "/home/weave/weaver …" 8 seconds ago Up 7 seconds weave
  50. d1855505eee5 weaveworks/weaveexec:latest "data-only" 8 seconds ago Created weavevolumes-latest
  51. c7830a306f15 weaveworks/weavedb:latest "data-only" 8 seconds ago Created weavedb
  52. [root@docker-02 weave-latest_release]# docker network ls
  53. NETWORK ID NAME DRIVER SCOPE
  54. e2dc92e248a6 bridge bridge local
  55. 8128c95017cd host host local
  56. 95f3f6f65a18 none null local
  57. f68122130ccc weave weavemesh local

将各个宿主机的weave互联

  1. ## docker-01 执行
  2. [root@docker-01 weave-latest_release]# weave connect 10.0.0.52
  3. [root@docker-01 weave-latest_release]#
  4. ## docker-02 执行
  5. [root@docker-02 weave-latest_release]# weave connect 10.0.0.51
  6. [root@docker-02 weave-latest_release]#

 docker-01启动一个容器,为容器划分网络

  1. [root@docker-01 ~]# docker run -dit --name test-01 alpine:latest
  2. b0f74c404f9011c35a8a1450c6c38100f7350e5f82cbceafe7eff352e2b296a9
  3. [root@docker-01 ~]# weave attach 172.10.3.23/24 test-01
  4. 172.10.3.23
  5. [root@docker-01 ~]# docker exec -it test-01 ip a
  6. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
  7. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  8. inet 127.0.0.1/8 scope host lo
  9. valid_lft forever preferred_lft forever
  10. 15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
  11. link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
  12. inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
  13. valid_lft forever preferred_lft forever
  14. 17: ethwe@if18: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1376 qdisc noqueue state UP
  15. link/ether 1a:7a:40:92:39:b4 brd ff:ff:ff:ff:ff:ff
  16. inet 172.10.3.23/24 brd 172.10.3.255 scope global ethwe
  17. valid_lft forever preferred_lft forever

 docker-02启动一个容器,为容器划分网络

  1. [root@docker-02 ~]# docker run -dit --name test-02 alpine:latest
  2. e140c3376180cc443d2ce23aae1b731124b3412f0550265a792df18ee3450c03
  3. [root@docker-02 ~]# weave attach 172.10.3.24/24 test-02
  4. 172.10.3.24
  5. [root@docker-02 ~]# docker exec -it test-02 ip a
  6. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
  7. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  8. inet 127.0.0.1/8 scope host lo
  9. valid_lft forever preferred_lft forever
  10. 15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
  11. link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
  12. inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
  13. valid_lft forever preferred_lft forever
  14. 17: ethwe@if18: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1376 qdisc noqueue state UP
  15. link/ether 92:ea:f5:1f:22:41 brd ff:ff:ff:ff:ff:ff
  16. inet 172.10.3.24/24 brd 172.10.3.255 scope global ethwe
  17. valid_lft forever preferred_lft forever

测试验证容器之间是否能通信 

  1. ## docker -01
  2. [root@docker-01 ~]# docker exec -it test-01 ping 172.10.3.24
  3. PING 172.10.3.24 (172.10.3.24): 56 data bytes
  4. 64 bytes from 172.10.3.24: seq=0 ttl=64 time=2.490 ms
  5. 64 bytes from 172.10.3.24: seq=1 ttl=64 time=1.111 ms
  6. ^C
  7. --- 172.10.3.24 ping statistics ---
  8. 2 packets transmitted, 2 packets received, 0% packet loss
  9. round-trip min/avg/max = 1.111/1.800/2.490 ms
  10. ## docker -02
  11. [root@docker-02 ~]# docker exec -it test-02 ping 172.10.3.23
  12. PING 172.10.3.23 (172.10.3.23): 56 data bytes
  13. 64 bytes from 172.10.3.23: seq=0 ttl=64 time=1.766 ms
  14. 64 bytes from 172.10.3.23: seq=1 ttl=64 time=1.385 ms
  15. ^C
  16. --- 172.10.3.23 ping statistics ---
  17. 2 packets transmitted, 2 packets received, 0% packet loss
  18. round-trip min/avg/max = 1.385/1.575/1.766 ms

【12】docker-overlay(跨宿主机网络) 

Docker跨主机网络(overlay)是Docker提供的一种跨主机的网络解决方案,它允许用户在多台Docker主机上创建一个虚拟网络,在这个虚拟网络中的容器可以像在同一主机上一样互相通信,而不需要基于传统的网络设备、路由、NAT等一系列复杂的配置,从而解决了跨主机的网络通信问题。

001-创建docker-swarm集群 

  1. ## docker-01
  2. [root@docker-01 ~]# docker swarm init --advertise-addr 10.0.0.51
  3. Swarm initialized: current node (a7e5s8wciulvyrg4pgdv83lwu) is now a manager.
  4. To add a worker to this swarm, run the following command:
  5. docker swarm join --token SWMTKN-1-2zhl0zla5y6nn2hrswec6tts5yvyjlq96numxewxpi900065qs-81pajrurl9khn194e9ql1f35w 10.0.0.51:2377
  6. To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  7. [root@docker-01 ~]# docker node ls
  8. ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
  9. a7e5s8wciulvyrg4pgdv83lwu * docker-01 Ready Active Leader 24.0.5
  10. ## docker-02、docker-03 加入集群
  11. [root@docker-02 ~]# docker swarm join --token SWMTKN-1-2zhl0zla5y6nn2hrswec6tts5yvyjlq96numxewxpi900065qs-81pajrurl9khn194e9ql1f35w 10.0.0.51:2377
  12. This node joined a swarm as a worker.
  13. ## docker-01查看集群节点
  14. [root@docker-01 ~]# docker node ls
  15. ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
  16. a7e5s8wciulvyrg4pgdv83lwu * docker-01 Ready Active Leader 24.0.5
  17. o6u5wepq22grh9n5vzv3ymiz3 docker-02 Ready Active 24.0.5
  18. 292u87wndtqjh5velgh2tngcy docker-03 Ready Active 24.0.5

002-在manager端中创建overlay网络 

  1. [root@docker-01 ~]# docker network ls
  2. NETWORK ID NAME DRIVER SCOPE
  3. 1cbbe7acab5c bridge bridge local
  4. bded221fbed9 docker_gwbridge bridge local
  5. e5afa29cdc9d host host local
  6. 81vbjl2qgv5q ingress overlay swarm
  7. 6dee573ffc75 none null local
  8. [root@docker-01 ~]# docker network create -d overlay --attachable my-overlay
  9. yxnhx5v7sy8a93blqg5mnq2or
  10. [root@docker-01 ~]# docker network ls
  11. NETWORK ID NAME DRIVER SCOPE
  12. 1cbbe7acab5c bridge bridge local
  13. bded221fbed9 docker_gwbridge bridge local
  14. e5afa29cdc9d host host local
  15. 81vbjl2qgv5q ingress overlay swarm
  16. yxnhx5v7sy8a my-overlay overlay swarm
  17. 6dee573ffc75 none null local

003-docker-02、docker-03验证网络是否可用 

  1. ## docker-02 验证
  2. [root@docker-02 ~]# docker run -it --network=my-overlay --name test-02 alpine:latest
  3. / # ping test-03
  4. PING test-03 (10.0.1.6): 56 data bytes
  5. 64 bytes from 10.0.1.6: seq=0 ttl=64 time=0.262 ms
  6. 64 bytes from 10.0.1.6: seq=1 ttl=64 time=0.319 ms
  7. ^C
  8. --- test-03 ping statistics ---
  9. 2 packets transmitted, 2 packets received, 0% packet loss
  10. round-trip min/avg/max = 0.262/0.290/0.319 ms
  11. ## docker-03 验证
  12. [root@docker-03 ~]# docker run -it --network=my-overlay --name test-03 alpine:latest
  13. / # ping test-02
  14. PING test-02 (10.0.1.4): 56 data bytes
  15. 64 bytes from 10.0.1.4: seq=0 ttl=64 time=0.437 ms
  16. 64 bytes from 10.0.1.4: seq=1 ttl=64 time=0.625 ms
  17. ^C
  18. --- test-02 ping statistics ---
  19. 2 packets transmitted, 2 packets received, 0% packet loss
  20. round-trip min/avg/max = 0.437/0.531/0.625 ms

 ## 如果没有使用my-overlay网络,容器之间时不能使用主机名访问的

【13】prometheus-监控宿主机与容器

  • 采集数据:node-exporter、mysql-exporter、cadvisor
  • 收集数据:job_name(声明:监控的目标、报警程序)
  • 存储数据:自带的时间序列数据库(本地)
  • 报警程序:alterManager(邮件、钉钉)
  • 图形展示:grafana
  • 拉取数据:pushgateway(prometheus会自动拉取数据,但是某些程序不允许拉取,可以将数据先放到pushteway中,在拉取)

docker-01安装prometheus-server (9090)

  1. ## docker-01
  2. [root@docker-01 ~]# tar xf prometheus-2.46.0.linux-amd64.tar.gz -C /usr/src
  3. [root@docker-01 ~]# cd /usr/src/
  4. [root@docker-01 src]# mv prometheus-2.46.0.linux-amd64/ prometheus
  5. ## 启动
  6. [root@docker-01 prometheus]# cd prometheus/
  7. [root@docker-01 prometheus]# ./prometheus --config.file="prometheus.yml" &

 常用的命令

  1. ./prometheus -h
  2. --config.file="prometheus.yml" # 指定配置文件
  3. --web.listen-address="0.0.0.0:9090" # 监听地址或端口
  4. --log.level=info # 日志级别
  5. --alertmanager.timeout=10s # 与配置组件的超时时间
  6. --storage.tsdb.path="data/" # 指定数据目录
  7. --storage.tsdb.retention.time=15d # 数据保存的时间。默认时15天

 使用systemctl管理:

  1. [root@docker-01 prometheus]# vim /usr/lib/systemd/system/prometheus.service
  2. [Unit]
  3. Description=prometheus
  4. [Service]
  5. ExecStart=/usr/src/prometheus/prometheus --config.file=/usr/src/prometheus/prometheus.yml
  6. ExecReload=/bin/kill -HUP $MAINPID
  7. killMode=process
  8. Restart=on-failure
  9. [Install]
  10. WantedBy=multi-user.target
  11. [root@docker-01 prometheus]# kill 10579
  12. [root@docker-01 prometheus]# systemctl daemon-reload
  13. [root@docker-01 prometheus]# systemctl start prometheus.service
  14. [root@docker-01 prometheus]# systemctl enable prometheus.service
  15. Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /usr/lib/systemd/system/prometheus.service.
  16. [root@docker-01 prometheus]# netstat -lntp
  17. Active Internet connections (only servers)
  18. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  19. tcp 0 0 172.17.0.1:53 0.0.0.0:* LISTEN 4674/weaver
  20. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1898/sshd
  21. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2079/master
  22. tcp 0 0 127.0.0.1:6782 0.0.0.0:* LISTEN 4674/weaver
  23. tcp 0 0 127.0.0.1:6784 0.0.0.0:* LISTEN 4674/weaver
  24. tcp6 0 0 :::7946 :::* LISTEN 2866/dockerd
  25. tcp6 0 0 :::8080 :::* LISTEN 2866/dockerd
  26. tcp6 0 0 :::22 :::* LISTEN 1898/sshd
  27. tcp6 0 0 ::1:25 :::* LISTEN 2079/master
  28. tcp6 0 0 :::6783 :::* LISTEN 4674/weaver
  29. tcp6 0 0 :::9090 :::* LISTEN 10781/prometheus
  30. tcp6 0 0 :::2377 :::* LISTEN 2866/dockerd
  31. [root@docker-01 prometheus]#

安装exporter(9100)、cadvisor(8080)监控node节点(宿主机、容器) 

  • node-exporter:用户监控宿主机(cpu、mem、disk、network 文件描述符、系统负载、系统服务)
  • cadvisor:可以用于监控容器的所有信息
  1. ## docker-01、docker-02、docker-03 全部安装node_exporter
  2. [root@docker-01 ~]# tar xf node_exporter-1.6.1.linux-amd64.tar.gz -C /usr/src/
  3. [root@docker-01 ~]# cd /usr/src/
  4. [root@docker-01 src]# mv node_exporter-1.6.1.linux-amd64/ node_exporter
  5. [root@docker-01 src]# vim /usr/lib/systemd/system/node_exporter.service
  6. [Unit]
  7. Description=node_exporter
  8. [Service]
  9. ExecStart=/usr/src/node_exporter/node_exporter
  10. ExecReload=/bin/kill -HUP $MAINPID
  11. killMode=process
  12. Restart=on-failure
  13. [Install]
  14. WantedBy=multi-user.target
  15. [root@docker-01 src]# systemctl daemon-reload
  16. [root@docker-01 src]# systemctl start node_exporter.service
  17. [root@docker-01 src]# systemctl enable node_exporter.service
  18. Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
  19. [root@docker-01 src]# netstat -lntp
  20. Active Internet connections (only servers)
  21. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  22. tcp 0 0 172.17.0.1:53 0.0.0.0:* LISTEN 4674/weaver
  23. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1898/sshd
  24. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2079/master
  25. tcp 0 0 127.0.0.1:6782 0.0.0.0:* LISTEN 4674/weaver
  26. tcp 0 0 127.0.0.1:6784 0.0.0.0:* LISTEN 4674/weaver
  27. tcp6 0 0 :::7946 :::* LISTEN 2866/dockerd
  28. tcp6 0 0 :::9100 :::* LISTEN 11022/node_exporter
  29. tcp6 0 0 :::8080 :::* LISTEN 2866/dockerd
  30. tcp6 0 0 :::22 :::* LISTEN 1898/sshd
  31. tcp6 0 0 ::1:25 :::* LISTEN 2079/master
  32. tcp6 0 0 :::6783 :::* LISTEN 4674/weaver
  33. tcp6 0 0 :::9090 :::* LISTEN 10781/prometheus
  34. tcp6 0 0 :::2377 :::* LISTEN 2866/dockerd
  35. ## docker-01、docker-02、docker-03 全部安装cadvisor
  36. [root@docker-01 src]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys/:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro -p 8080:8080 -d --restart=always --name=cadvisor google/cadvisor:latest
  37. 6384088b943acdeca3a945b120bcc896d9ab69f6b5ddf85205b152e60a5bdb34
  38. [root@docker-01 src]# docker ps -a -l
  39. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  40. 6384088b943a google/cadvisor:latest "/usr/bin/cadvisor -…" 20 seconds ago Up 20 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cadvisor

访问测试,取值页面是否有数据 (cadvisor、node_exporter)

 

 

 docker-01:修改prometheus的主配值文件(收集数据源):

  1. ## docker-01
  2. [root@docker-01 src]# vim prometheus/prometheus.yml
  3. .......
  4. .......
  5. scrape_configs:
  6. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  7. - job_name: "prometheus"
  8. static_configs:
  9. - targets: ["localhost:9090"]
  10. - job_name: "cadvisor"
  11. static_configs:
  12. - targets: ['10.0.0.51:8080','10.0.0.52:8080','10.0.0.53:8080']
  13. - job_name: "host_resource"
  14. static_configs:
  15. - targets: ['10.0.0.51:9100','10.0.0.52:9100','10.0.0.53:9100']
  16. ## 修改配置文件需要重启服务,也可以配置动态配置文件
  17. [root@docker-01 src]# systemctl restart prometheus.service

   

动态配置文件,不需要每次修改配置文件重启服务 

  1. [root@docker-01 src]# vim prometheus/prometheus.yml
  2. ......
  3. ......
  4. scrape_configs:
  5. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  6. - job_name: "prometheus"
  7. static_configs:
  8. - targets: ["localhost:9090"]
  9. - job_name: "cadvisor"
  10. file_sd_configs:
  11. - files:
  12. - /opt/prometheus/file_sd/cadvisor.json
  13. refresh_interval: 10s
  14. - job_name: "host_resource"
  15. file_sd_configs:
  16. - files:
  17. - /opt/prometheus/file_sd/host_resource.json
  18. refresh_interval: 10s
  19. [root@docker-01 src]# mkdir prometheus/file_sd
  20. [root@docker-01 src]# vim prometheus/file_sd/cadvisor.json
  21. [
  22. {
  23. "targets": ["10.0.0.51:8080","10.0.0.52:8080","10.0.0.53:8080"]
  24. }
  25. ]
  26. [root@docker-03 opt]# vim prometheus/file_sd/cadvisor.json
  27. [
  28. {
  29. "targets": ["10.0.0.51:9100","10.0.0.52:9100","10.0.0.53:9100"]
  30. }
  31. ]
  32. [root@docker-03 prometheus]# systemctl restart prometheus.service
  33. ## 后续有节点接入,添加IP地址,不用重启prometheus服务了

【14】接入邮件报警-alertmanager (9093、9094)

  1. ## docker-01 安装alertmanager
  2. [root@docker-01 ~]# tar xf alertmanager-0.25.0.linux-amd64.tar.gz -C /usr/src/
  3. [root@docker-01 ~]# cd /usr/src/
  4. [root@docker-01 src]# mv alertmanager-0.25.0.linux-amd64/ alertmanager
  5. ## 修改配置文件
  6. [root@docker-01 src]# cd alertmanager/
  7. [root@docker-01 alertmanager]# cp alertmanager.yml{,.bak}
  8. [root@docker-01 alertmanager]# vim alertmanager.yml
  9. global:
  10. global:
  11. resolve_timeout: 5m
  12. smtp_from: '*********@qq.com'
  13. smtp_smarthost: 'smtp.qq.com:465'
  14. smtp_auth_username: '*********@qq.com'
  15. smtp_auth_password: 'vgoejqgxmrbtbcfg'
  16. smtp_require_tls: false
  17. smtp_hello: 'qq.com'
  18. route:
  19. group_by: ['alertname']
  20. group_wait: 5s
  21. group_interval: 5s
  22. repeat_interval: 5m
  23. receiver: 'email'
  24. receivers:
  25. - name: 'email'
  26. email_configs:
  27. - to: '************@163.com'
  28. inhibit_rules:
  29. - source_match:
  30. severity: 'critical'
  31. target_match:
  32. severity: 'warning'
  33. equal: ['alertname', 'dev', 'instance']
  34. ## 启动服务
  35. [root@docker-01 alertmanager]# vim /usr/lib/systemd/system/alertmanager.service
  36. [Unit]
  37. Description=alertmanager
  38. [Service]
  39. ExecStart=/usr/src/alertmanager/alertmanager --config.file=/usr/src/alertmanager/alertmanager.yml
  40. ExecReload=/bin/kill -HUP $MAINPID
  41. killMode=process
  42. Restart=on-failure
  43. [Install]
  44. WantedBy=multi-user.target
  45. [root@docker-01 alertmanager]# systemctl daemon-reload
  46. [root@docker-01 alertmanager]# systemctl start alertmanager.service
  47. [root@docker-01 alertmanager]# systemctl enable alertmanager.service
  48. Created symlink from /etc/systemd/system/multi-user.target.wants/alertmanager.service to /usr/lib/systemd/system/alertmanager.service.
  49. [root@docker-01 alertmanager]# netstat -lntp
  50. Active Internet connections (only servers)
  51. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  52. tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 11287/docker-proxy
  53. tcp 0 0 172.17.0.1:53 0.0.0.0:* LISTEN 4674/weaver
  54. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1898/sshd
  55. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2079/master
  56. tcp 0 0 127.0.0.1:6782 0.0.0.0:* LISTEN 4674/weaver
  57. tcp 0 0 127.0.0.1:6784 0.0.0.0:* LISTEN 4674/weaver
  58. tcp6 0 0 :::7946 :::* LISTEN 2866/dockerd
  59. tcp6 0 0 :::9100 :::* LISTEN 11022/node_exporter
  60. tcp6 0 0 :::8080 :::* LISTEN 11292/docker-proxy
  61. tcp6 0 0 :::22 :::* LISTEN 1898/sshd
  62. tcp6 0 0 ::1:25 :::* LISTEN 2079/master
  63. tcp6 0 0 :::6783 :::* LISTEN 4674/weaver
  64. tcp6 0 0 :::9090 :::* LISTEN 11933/prometheus
  65. tcp6 0 0 :::9093 :::* LISTEN 12845/alertmanager
  66. tcp6 0 0 :::9094 :::* LISTEN 12845/alertmanager
  67. tcp6 0 0 :::2377 :::* LISTEN 2866/dockerd

修改prometheus配置 

  1. [root@docker-01 ~]# vim /usr/src/prometheus/prometheus.yml
  2. ......
  3. ......
  4. alerting:
  5. alertmanagers:
  6. - static_configs:
  7. - targets:
  8. - 10.0.0.51:9093
  9. rule_files:
  10. - "node-up.rules"
  11. ......
  12. ......
  13. ## 编辑报警规则
  14. [root@docker-01 ~]# vim /usr/src/prometheus/node-up.rules
  15. groups:
  16. - name: node-up
  17. rules:
  18. - alert: node-up
  19. expr: up{job="host_resource"} == 0
  20. for: 15s
  21. labels:
  22. severity: 1
  23. team: node
  24. annotations:
  25. summary: "{{ $labels.instance }} 已停止 15s! "

重启prometheus服务 

  1. [root@docker-01 ~]# systemctl restart prometheus.service
  2. [root@docker-01 ~]# netstat -lntp
  3. Active Internet connections (only servers)
  4. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  5. tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 11287/docker-proxy
  6. tcp 0 0 172.17.0.1:53 0.0.0.0:* LISTEN 4674/weaver
  7. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1898/sshd
  8. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2079/master
  9. tcp 0 0 127.0.0.1:6782 0.0.0.0:* LISTEN 4674/weaver
  10. tcp 0 0 127.0.0.1:6784 0.0.0.0:* LISTEN 4674/weaver
  11. tcp6 0 0 :::7946 :::* LISTEN 2866/dockerd
  12. tcp6 0 0 :::9100 :::* LISTEN 11022/node_exporter
  13. tcp6 0 0 :::8080 :::* LISTEN 11292/docker-proxy
  14. tcp6 0 0 :::22 :::* LISTEN 1898/sshd
  15. tcp6 0 0 ::1:25 :::* LISTEN 2079/master
  16. tcp6 0 0 :::6783 :::* LISTEN 4674/weaver
  17. tcp6 0 0 :::9090 :::* LISTEN 13410/prometheus
  18. tcp6 0 0 :::9093 :::* LISTEN 12845/alertmanager
  19. tcp6 0 0 :::9094 :::* LISTEN 12845/alertmanager
  20. tcp6 0 0 :::2377 :::* LISTEN 2866/dockerd

 

测试验证报警是否正常 

[root@docker-02 src]# systemctl stop node_exporter.service

 

 

【15】钉钉报警配置

  1. global:
  2. resolve_timeout: 5m
  3. smtp_from: '*********@qq.com' # 发件人
  4. smtp_smarthost: 'smtp.qq.com:465'
  5. smtp_auth_username: '*********@qq.com'
  6. smtp_auth_password: 'vgoejqgxmrbtbcfg'
  7. smtp_require_tls: false
  8. smtp_hello: 'qq.com'
  9. route:
  10. group_by: ['alertname']
  11. group_wait: 5s
  12. group_interval: 5s
  13. repeat_interval: 5m
  14. receiver: 'dingding'
  15. receivers:
  16. - name: 'dingding'
  17. dingding_configs:
  18. - url: localhost:80/dingtalk/webook/send # 钉钉的机器人地址
  19. inhibit_rules:
  20. - source_match:
  21. severity: 'critical'
  22. target_match:
  23. severity: 'warning'
  24. equal: ['alertname', 'dev', 'instance']

【16】接入grafan(3000)

  1. ## docker-02
  2. [root@docker-02 ~]# wget http://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/grafana-9.5.7-1.x86_64.rpm
  3. [root@docker-02 ~]# yum -y localinstall grafana-9.5.7-1.x86_64.rpm
  4. [root@docker-02 ~]# systemctl start grafana-server.service
  5. [root@docker-02 ~]# systemctl enable grafana-server.service
  6. Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
  7. [root@docker-02 ~]# netstat -lntp
  8. Active Internet connections (only servers)
  9. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  10. tcp 0 0 172.17.0.1:53 0.0.0.0:* LISTEN 3563/weaver
  11. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1923/sshd
  12. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2023/master
  13. tcp 0 0 127.0.0.1:6782 0.0.0.0:* LISTEN 3563/weaver
  14. tcp 0 0 127.0.0.1:6784 0.0.0.0:* LISTEN 3563/weaver
  15. tcp6 0 0 :::7946 :::* LISTEN 2082/dockerd
  16. tcp6 0 0 :::9100 :::* LISTEN 10947/node_exporter
  17. tcp6 0 0 :::22 :::* LISTEN 1923/sshd
  18. tcp6 0 0 :::3000 :::* LISTEN 11412/grafana
  19. tcp6 0 0 ::1:25 :::* LISTEN 2023/master
  20. tcp6 0 0 :::6783 :::* LISTEN 3563/weaver

安装插件、数据源、dashboard 

 

 docker服务-node-exporter、cadvisor服务的图形展示

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/47815
推荐阅读
相关标签
  

闽ICP备14008679号