当前位置: 首页 > news >正文

Docker Compose、私有镜像站和Swam集群

Docker Compose

单机容器编排,一键批量管理多个容器,使用yaml格式:docker-compose.yml

  • Docker Compose V1(docker-compose

    • 命名形式:命令为 docker-compose(带连字符)。

    • 开发语言:基于 Python 开发,是独立于 Docker 引擎的第三方工具。

    • 在配置文件中显式指定 version 字段)。

使用dockercompose部署wordpress(单机Docker环境)

 # 创建一个名为docker-compose.yml的文件vim docker-compose.yml----------------------------------version: '3.8'services:db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: root123MYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: root123MYSQL_ROOT_HOST: '%'command: --default-authentication-plugin=mysql_native_password​wordpress:depends_on:- dbimage: wordpress:latestports:- "8000:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: root123WORDPRESS_DB_NAME: wordpressvolumes:- wp_data:/var/www/html​volumes:db_data:wp_data:--------------------------------------# 如果之前有下载过需要删除的(没有就省略)docker compose down -v# 启动服务docker compose up -d# 浏览器搜索192.168.221.21:8000


Docker私有镜像站-Harbor

私有镜像站,方便管理、下载部署内部的镜像;

 ## 下载Harborcd /optwget http://192.168.57.200/Software/harbor-offline-installer-v2.14.0.tgz## 安装Harbortar -xvf harbor-offline-installer-v2.14.0.tgz# 进入Harbor目录,后续都在这个目录里操作cd harbor/./install.sh# 最后出现两行这个就说明正确了# prepare base dir is set to /opt/harbor# no config file: /opt/harbor/harbor.yml# 修改配置文件中的主机名为本机IPcp harbor.yml.tmpl harbor.ymlvim harbor.yml第五行的hostname改为192.168.221.21## 创建密钥# 1.进入证书目录mkdir sslcd ssl/# 2.创建本地私有密钥openssl genrsa -out ssl.key 2048# 3.按提示输入即可openssl req -new -key ssl.key -out ssl.csr# 4.创建证书crtopenssl x509 -req -days 1460 -in ssl.csr -signkey ssl.key -out ssl.crt# 5.创建证书pemopenssl dhparam -out ssl.pem 2048# 后面就是一堆点了,等待......## 修改配置文件vim harbor.yml第17行的certificate改成/opt/harbor/ssl/ssl.crt第18行的private_key改成/opt/harbor/ssl/ssl.key第47行的密码可以改成root123,不改的话登陆密码就是原来的./install.sh# 最后出现✔ ----Harbor has been installed and started successfully.----docker compose up -d# 浏览器搜索IP就是Harbor的界面了​vim /etc/docker/daemon.json"insecure-registries": [在这个后面加两行"http://192.168.57.200:8099","http://192.168.221.21","https://192.168.221.21"]systemctl daemon-reloadsystemctl restart dockerdocker compose up -ddocker login http://192.168.221.21docker login https://192.168.221.21# 最后都出现Login Succeeded就对了# 在项目中标记镜像:docker tag SOURCE_IMAGE[:TAG] 192.168.221.21/library/REPOSITORY[:TAG]# 推送镜像到当前项目:docker push 192.168.221.21/library/REPOSITORY[:TAG]


Docker-Swarm

多主机容器集群管理工具;统一管理多台服务器上的Docker容器;

需要至少一个master节点:统一管理node节点和所有node节点上的容器;

相关命令

Docker Swarm命令:

 init        初始化一个Swarm。join        将Docker主机加入到Swarm作为工作节点或管理节点。leave       使节点离开Swarm。update      更新Swarm配置。

Docker Service命令:

 create      创建一个新的服务。inspect     检查一个或多个服务。update      更新一个服务。remove      移除一个或多个服务。tasks       列出一个或多个服务的任务。

Docker Node命令:

 accept      接受加入到Swarm的请求。promote     将节点提升为Swarm中的管理节点。demote      将管理节点降级为Swarm中的工作节点。inspect     检查一个或多个节点。update      更新一个节点。tasks       列出分配给一个或多个节点的任务。ls          列出Swarm中的节点。rm          从Swarm中移除一个或多个节点。

Docker Stack命令:

 config      输出最终的配置文件,在完成合并和插值后deploy      部署一个新的堆栈或更新现有的堆栈ls          列出堆栈ps          列出堆栈中的任务rm          移除一个或多个堆栈services    列出堆栈中的服务

swam集群部署

 - 192.168.221.21  Manager
 - 192.168.221.22  Node1
 - 192.168.221.23  Node2

 # 1.安装Dockerapt updateapt-get -y install ca-certificates curl gnupg lsb-releasecurl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"apt-get -y install docker-ce docker-ce-cli containerd.iosystemctl stop dockervim /etc/docker/daemon.json{"registry-mirrors": ["https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com","https://5tqw56kt.mirror.aliyuncs.com","https://docker.1panel.live","http://mirrors.ustc.edu.cn","http://mirror.azure.cn","https://hub.rat.dev","https://docker.chenby.cn","https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://dockerpull.org","https://dockerhub.icu","https://proxy.1panel.live","https://docker.1panel.top","https://docker.1ms.run","https://docker.ketches.cn"],"insecure-registries": ["http://192.168.57.200:8099"],"hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]}sed -i 's/ExecStart=\/usr\/bin\/dockerd -H fd:\/\/ --containerd=\/run\/containerd\/containerd.sock/ExecStart=\/usr\/bin\/dockerd --containerd=\/run\/containerd\/containerd.sock/' /lib/systemd/system/docker.servicesystemctl daemon-reloadsystemctl restart docker# 2.所有节点设置 hosts 解析cat >> /etc/hosts << EOF192.168.221.21 server01192.168.221.22 server02192.168.221.23 server03EOF## 接下来分开操作​# 在第一台manager机器上(192.168.221.21操作)# 3.初始化集群-initdocker swarm init --advertise-addr 192.168.221.21# 保存第三行的命令与token令牌,用于添加工作节点;添加Manager节点到Swarm集群时,执行'docker swarm join-token manager'获取令牌# 4.添加worker(node工作节点)到swarm集群(在另外两台22和23节点上操作)# 复制你自己上一步中输出的完整命令到工作节点中。docker swarm join --token SWMTKN-1-5q4ztzm6zd0fzdnxw7tprido1d2p38jb650mdujddianpo812n-b51z5ij8vqzlmcr56mluk4irg 192.168.221.21:2377第三台机器同理最后出现这一行 This node joined a swarm as a worker.# 验证加入情况,确保三台机器都在(192.168.221.21操作)docker node lsID                            HOSTNAME    STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSIONifo32t0qq63nl6c2t3a3kio2h *   server-21   Ready     Active         Leader           28.5.1shzi3kedbzdvn5lmy5ovgp59s     server-22   Ready     Active                          28.5.1lctl7rf6k96dnvqy4bmqiaxvs     server-23   Ready     Active                          28.5.1# 在Docker集群中运行容器((192.168.221.21操作)无需下载nginx镜像)# 1.在集群中创建overlay网络,让不同宿主上的容器可以在同一个网段内通信,方便搭建负载均衡docker network create -d overlay nginx_netdocker network ls | grep nginx_net会出现一行drht1x02my05   nginx_net     overlay   swarm# 2.使用service创建相同容器的集群,replicas 3表示至少需要3个副本(三个都running则成功)docker service create --replicas 3 --network nginx_net --name my_nginx -p 80:80 nginx# 3.验证集群信息# 查看正在运行服务的列表docker service ls# 查询Swarm中服务的信息(-pretty 使命令输出格式化为可读的格式,不加 --pretty 可以输出更详细的信息)docker service inspect --pretty my_nginx# 4.查看容器IDdocker psdocker exec -it 容器ID /bin/bashecho "nginx-1" > /usr/share/nginx/html/index.html# 5.查看浏览器(反复刷新)curl 192.168.221.21

扩容、缩容

scale是在Swarm中的动态扩展服务,它提供了容器复制的功能。 可以通过 docker service scale 命令来设置服务中容器的副本数。

 # 将上面的 my_nginx 容器动态扩展到6个docker service scale my_nginx=6# 将上面的 my_nginx 容器动态缩到2个docker service scale my_nginx=2

容器版本升级、回滚

 # 容器版本升级docker service update --image nginx:1.29 my_nginx# 回滚docker service update --image nginx:1.26 my_nginx# 查看版本可以加上参数-icurl -i 192.168.221.21

使用dockercompose部署wordpress(Docker Swarm集群)

 # 1)创建wordpress文件夹mkdir -p /data/wordpresscd /data/wordpress/# 2)编辑docker-compose.yml文件vim docker-compose.yml---------------------------------version: "3"​services:wordpress:image: wordpressports:- 8090:80networks:- overlayenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: root123deploy:mode: replicatedreplicas: 3​db:image: mysql:5.7networks:- overlayvolumes:- db-data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: root123MYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: root123deploy:placement:constraints: [node.role == manager]​visualizer:image: dockersamples/visualizer:stableports:- "8080:8080"stop_grace_period: 1m30svolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints: [node.role == manager]​volumes:db-data:networks:overlay:# 3)部署服务docker stack deploy -c docker-compose.yml wordpress# 部署服务使用docker stack deploy命令# -c:指定compose文件名docker stack ls# 4)查看效果打开浏览器输入 任一节点IP:8080 即可看到各节点运行状态

所有数据仅供实验参考,开发环境不要设置这么简单

http://www.dtcms.com/a/512422.html

相关文章:

  • 【STL——stack容器】
  • DeepSeek-OCR:上下文光学压缩
  • QML 模块解析:从核心模块分类介绍到实际应用的组件与功能说明(之二)
  • 凡科建设网站我对网站开发的反思
  • 东莞专业的网站设计价格领先的手机网站设计
  • SQLite数据库查询
  • Python列表(List)完全指南:从入门到实战优化
  • DeepSeek刚刚开源了一个3B的 OCR模型:什么是DeepSeek-OCR?单张A100-40G每天可以处理20万+页文档
  • html5企业网站赏析石家庄专门做网站
  • 颍上县住房和城乡建设局网站深圳网络工程公司
  • ESP32学习笔记(基于IDF):ESP32连接MQTT服务器
  • 网站建设敬请期待图片素材wordpress 获取菜单id
  • 做网站用什么源码最好wordpress建站优势
  • 网站图标 代码微信开发网站建设程序
  • 修改 Docker 容器中 MySQL 8.0 默认编码为 utf8mb4_unicode_ci
  • C# Dictionary 线程安全指南:多线程下操作 Dictionary<string, DateTime> 的加锁策略
  • 企业im聊天软件支持什么功能,应该怎么选?
  • 【Linux系统编程】权限的概念
  • githup网站建设网站营销站点有你想
  • 差分|递归
  • 如何通过纺织服装MES系统提升生产效率和管理水平?
  • 打通智慧高速核心系统:湖南某新建项目的收费、通信、监控一体化实践
  • 河南网站建设优化技术福建省建设干部网站
  • 智能机器人:今年双十一“减人增效”的AI智能客服机器人方案
  • 市环保局网站建设方案建站公司哪家好 知道万维科技
  • 房产中介网站建设的目的cms 美容网站 模版
  • vue开发中,如果出现了反显数据有问题(后端明明返回的有数据,但就是不反显,没有值)是什么原因
  • 【2025-系统规划与管理师】第12章:信息系统服务管理
  • C++---嵌套类型(Nested Types)封装与泛型的基石
  • Floyd判圈算法(Floyd Cycle Detection Algorithm)