怎么查询网站是哪家公司做的,wordpress修改发帖时间,国内室内设计网站推荐,怎么上不到建设银行网站Docker
名词解释
镜像#xff08;image#xff09;#xff1a;Docker镜像就是一个模板#xff0c;可以通过这个模板来创建容器服务。容器#xff08;container#xff09;#xff1a;Docker利用容器技术#xff0c;独立运行一个或者一组应用#xff0c;通过镜像创建…Docker
名词解释
镜像imageDocker镜像就是一个模板可以通过这个模板来创建容器服务。容器containerDocker利用容器技术独立运行一个或者一组应用通过镜像创建。仓库repository仓库就是存放镜像的地方仓库分为公有仓库和私有仓库Docker Hub默认是国外的阿里云有容器服务器配置镜像加速。
安装Docker
# 卸载旧版本命令
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
# 安装yum-utils包
yum install -y yum-utils
# 设置阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引到最新
yum makecache fast
# 安装Docker docker-ce 社区版 ee 企业版
yum install docker-ce docker-ce-cli containerd.io
# 启动Docker
systemctl start docker
# 查看是否安装成功
docker version卸载Docker
# 卸载Docker
yum remove docker-ce docker-ce-cli containerd.io
# 主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷
rm -rf /var/lib/docker
rm -rf /var/lib/containerd镜像加速器 常用命令
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息包括镜像和容器的数量
docker 命令 --help # 帮助命令帮助文档地址 https://docs.docker.com/engine/reference/commandline/docker/
镜像命令
docker search mysql # 搜索镜像
docker pull mysql # 下载镜像
docker rmi -f 镜像id # 删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker images -aq) # 删除全部的镜像容器命令
docker run [可选参数] image
# 参数说明
--nameName 容器名字
-d 后台方式运行
-it 使用交互方式运行进入容器查看内容
-p 指定容器端口
-P 随机指定端口
# 列出所有运行的容器
docker ps
# 参数说明
-a # 列出当前正在运行的容器带出历史运行过的容器
-n? # 显示最近创建的容器
-q # 只显示容器的编号
# 退出容器
exit # 直接容器停止并退出
ctrl P Q # 容器不停止退出
# 删除容器
docker rm 容器id # 删除指定容器不能删除正在运行的容器如果要强制删除 rm -f
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q | xargs docker rm # 删除所有容器
# 启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前正在运行的容器
# 查看日志
docker logs
-tf # 显示日志
--tail number # 要显示的日志条数
docker logs -tf --tail 10 容器id
# 查看容器中进程信息
docker top 容器id
# 查看镜像的元数据
docker inspect 容器id
# 进入当前正在运行的容器
docker exec -it 容器id /bin/bash
docker attach 容器id
# docker exec 和 docker attach 的区别
docker attach 进入容器再退出会导致容器停止docker exec 进入容器再退出不会导致容器停止
# 从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的地主机路径部署ES
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e discovery.typesingle-node -e ES_JAVA_OPTS-Xms512m -Xmx512m elasticsearch:7.6.2可视化
portainer
docker run -d -p 8088:9000 --restartalways -v /var/run/docker.sock:/var/run/docker.sock --privilegedtrue portainer/portainerRancher
commit镜像
docker commit -m提交的描述信息 -a作者 容器id 目标镜像名:[TAG]容器数据卷
什么是容器数据卷
Docker 是将应用和环境打包成一个镜像。
这样数据就不应该保存在容器中否则容器删除数据就会丢失有着非常大的风险。
为此容器和主机之间需要有一个数据共享技术使得在 Docker 容器中产生的数据能够同步到本地。
这就是数据卷技术。其本质上是一个目录挂载将容器内的目录挂载到主机上。
使用数据卷
docker run -it -v 主机目录:容器内目录MySQL容器数据持久化
# 拉取MySQL镜像
docker pull mysql:5.7
# 启动MySQL容器
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORDsunhui0805 --name mysql mysql:5.7具名和匿名挂载
匿名挂载-v只写了容器内路径没有写容器外路径
具名挂载-v指定卷名:容器内路径
所有docker容器内的卷没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data
通过具名挂载可以方便的找到数据卷
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径::容器内路径 # 指定路径挂载
# 通过-v 容器内路径:ro rw 改变读写权限
ro readonly # 只读
rw readwrite # 读写
# ro说明这个路径只能通过宿主机来操作容器内部无法操作数据卷容器
# docker02公用docker01的数据卷
docker run -it --name docker02 --volumes-from docker01 sonki/centos:1.0
# 数据卷容器的生命周期会一直持续到没有容器使用为止但是一旦持久化到本地本地的数据是不会删除的Dockerfile
Dockerfile是用来构建Docker镜像的文件可以理解为命令参数脚本
规则 每个指令都必须是大写字母。 按照从上到下顺序执行。 # 表示注释。 每一条指令都会创建一个新的镜像层。 解释 FROM基础镜像比如 centos。 MAINTAINER镜像是谁写的。建议以此格式姓名邮箱。 RUN镜像构建时需要运行的命令。 ADD添加比如添加一个 tomcat 压缩包。 WORKDIR镜像的工作目录。 VOLUME挂载的目录。 EXPOSE指定暴露端口跟 -p 一个道理。 RUN最终要运行的。 CMD指定这个容器启动的时候要运行的命令只有最后一个会生效而且可被替代。 ENTRYPOINT指定这个容器启动的时候要运行的命令可以追加命令。 ONBUILD当构建一个被继承Dockerfile 这个时候运行ONBUILD指定触发指令。 COPY将文件拷贝到镜像中。 ENV构建的时候设置环境变量。 创建包含vim命令的centos镜像 FROM centos
MAINTAINER sonki286752446qq.com
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo ---end---
CMD /bin/bash自定义tomcat环境镜像 Dockerfile FROM centos
MAINTAINER sonki286752446qq.com
ENV MYPATH /usr/local
WORKDIR $MYPATH
ADD jdk-8u311-linux-x64.tar.gz $MYPATH/
ADD apache-tomcat-8.5.81.tar.gz $MYPATH/
ENV JAVA_HOME $MYPATH/jdk1.8.0_311
ENV CLASSPATH $JAVA_HOME/lib/
ENV CATALINA_HOME $MYPATH/apache-tomcat-8.5.81
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD $CATALINA_HOME/bin/startup.sh tail -F $CATALINA_HOME/logs/catalina.out使用Dockerfile构建镜像 # -f指定要使用的Dockerfile路径
# -t: 镜像的名字及标签通常name:tag或者name格式
docker build -f dockerfile-tomcat -t sonki-tomcat .启动容器 docker run -d -p 8080:8080 --name sonki-tomcat -v /usr/local/sonki-tomcat/webapps:/usr/local/apache-tomcat-8.5.81/webapps -v /usr/local/sonki-tomcat/logs:/usr/local/apache-tomcat-8.5.81/logs sonki-tomcat发布镜像 登录docker hub账号 docker login -u shsmy1314 -p sunhui0805提交镜像 docker tag 2cccf1e24966 shsmy1314/tomcat:1.0
docker push shsmy1314/tomcat:1.0提交镜像到阿里云镜像仓库 登录阿里云 找到容器镜像服务 创建命名空间 创建镜像仓库 提交镜像 Docker网络
在Docker安装后主机会为Docker分配一个网卡名为docker0。 该网卡使用桥接模式使用的是veth-pair技术。
启动两个容器
[rootsail ~]# docker run -d -p 8081:8080 --nametomcat01 tomcat
29a06eab16e73f34458b77a520081083fe536d8eb34eb67dbb9c6632fc720687[rootsail ~]# docker run -d -p 8082:8080 --nametomcat02 tomcat
442add0d94cef631e0f531dff9d8f55b7e2f1aaeb088f742c3d8e240d4f9cc7d[rootsail ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
442add0d94ce tomcat catalina.sh run 4 seconds ago Up 3 seconds 0.0.0.0:8082-8080/tcp tomcat02
29a06eab16e7 tomcat catalina.sh run 15 seconds ago Up 14 seconds 0.0.0.0:8081-8080/tcp tomcat01查看Linux网络
[rootsail tomcat]# ip addr
1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:16:3e:30:01:20 brd ff:ff:ff:ff:ff:ffinet 172.24.19.94/18 brd 172.24.63.255 scope global dynamic eth0valid_lft 310199524sec preferred_lft 310199524sec
3: docker0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:23:ae:ac:24 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever
7: veth4a18f1bif110: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 52:69:3c:bc:83:4a brd ff:ff:ff:ff:ff:ff link-netnsid 0
9: veth296fd0dif112: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 76:3c:34:e8:c4:90 brd ff:ff:ff:ff:ff:ff link-netnsid 1Docker每启动一个容器就会分配一个IP。
查看容器的内部网络
[rootsail ~]# docker exec -it tomcat01 ip addr
1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
6: eth0if7: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever[rootsail ~]# docker exec -it tomcat02 ip addr
1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
8: eth0if9: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever可以看到容器内IP与本机IP成对出现这就是veth-pair技术。
容器访问docker0测试
[rootsail ~]# docker exec -it tomcat01 ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq1 ttl64 time0.845 ms
64 bytes from 172.17.0.1: icmp_seq2 ttl64 time0.139 ms
64 bytes from 172.17.0.1: icmp_seq3 ttl64 time0.130 ms
64 bytes from 172.17.0.1: icmp_seq4 ttl64 time0.134 ms
64 bytes from 172.17.0.1: icmp_seq5 ttl64 time0.119 ms
64 bytes from 172.17.0.1: icmp_seq6 ttl64 time0.082 ms容器与docker0之间是可以访问的。
容器与容器之间访问
docker0相当于一个路由器各个容器都与docker0相连容器之间的通信通过路由器来转发。 Docker中的所有网络接口都是虚拟的相当于内网传递。 只要删除容器对应网络就会删除。
容器间网络连接
docker run --link—link本质就是修改host映射。
自定义网络
创建自定义网络
[rootsail ~]# docker network create -d bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
801fbbe1b38c81b12ce90aa9139561b5843dca64b4b17718b6e2622369f9be67
- -d网络模式
- -subnet子网
- -gateway网关查看创建的网络
[rootsail ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f3eeb014197a bridge bridge local
28d77e958643 host host local
801fbbe1b38c mynet bridge local
c3ff850e96f0 none null local[rootsail ~]# docker network inspect 801fbbe1b38c
[{Name: mynet,Id: 801fbbe1b38c81b12ce90aa9139561b5843dca64b4b17718b6e2622369f9be67,Created: 2021-12-30T17:39:43.10070563208:00,Scope: local,Driver: bridge,EnableIPv6: false,IPAM: {Driver: default,Options: {},Config: [{Subnet: 192.168.0.0/16,Gateway: 192.168.0.1}]},Internal: false,Attachable: false,Ingress: false,ConfigFrom: {Network: },ConfigOnly: false,Containers: {},Options: {},Labels: {}}
]启动镜像
[rootsail ~]# docker run -d -P --netmynet --nametomcat01 tomcat
f3fad0c65fc3eb9a39b1189a25f5a7f664a0b9415df05cca5ee6edb6b7cc1915
[rootsail ~]# docker run -d -P --netmynet --nametomcat02 tomcat
68a78759663854c6d83a14fcc0cf45515e61c5e81d10799e96b22ef79c0d478f连接测试
[rootsail ~]# docker exec -it tomcat01 ping tomcat02
64 bytes from tomcat02.mynet (192.168.0.3): icmp_seq1 ttl64 time0.187 ms
64 bytes from tomcat02.mynet (192.168.0.3): icmp_seq2 ttl64 time0.147 ms
^C
--- tomcat02 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 4ms
rtt min/avg/max/mdev 0.147/0.167/0.187/0.020 ms这种方式可以实现不同集群使用不同的网络保证集群网络的安全。 如Redis集群在192.160.0.0/16网段下MySQL集群在192.161.0.0/16网段下
网络连通
docker network connect建立连接
[rootsail ~]# docker run -d -P --nametomcat02-net tomcat
5a02cd4172daccc5073907ee6b063560687db5ffdd5041b18fd3ff1055a8984c[rootsail ~]# docker network connect mynet tomcat02-net[rootsail ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f3eeb014197a bridge bridge local
28d77e958643 host host local
801fbbe1b38c mynet bridge local
c3ff850e96f0 none null local[rootsail ~]# docker network inspect 801fbbe1b38c
[{Name: mynet,Id: 801fbbe1b38c81b12ce90aa9139561b5843dca64b4b17718b6e2622369f9be67,Created: 2021-12-30T17:39:43.10070563208:00,Scope: local,Driver: bridge,EnableIPv6: false,IPAM: {Driver: default,Options: {},Config: [{Subnet: 192.168.0.0/16,Gateway: 192.168.0.1}]},Internal: false,Attachable: false,Ingress: false,ConfigFrom: {Network: },ConfigOnly: false,Containers: {5a02cd4172daccc5073907ee6b063560687db5ffdd5041b18fd3ff1055a8984c: {Name: tomcat02-net,EndpointID: e6503138bcb91a7693576e324df75d1dff594f1c5aa3e08397802c38133eb0e9,MacAddress: 02:42:c0:a8:00:05,IPv4Address: 192.168.0.5/16,IPv6Address: }},Options: {},Labels: {}}
]这样也可以实现容器连接到自定义网络。
Docker Compose
使用Docker的时候定义Dockerfile文件然后使用docker build、docker run等命令操作容器。 然而微服务架构的应用系统一般包含若干个微服务每个微服务一般都会部署多个实例如果每个微服务都要手动启停这样效率很低也不方便管理。 使用Docker Compose可以轻松、高效的管理容器它是一个用于定义和运行多容器Docker的应用程序工具。
yaml官方示例
https://docs.docker.com/compose/compose-file/compose-file-v3/#compose-file-structure-and-examples
version: # 版本
services: # 服务服务1: webimagesbuildnetwoerk服务2: redis...
# 其他配置 网络/卷、全局规则
volumes:
networks:
config:安装Docker Compose
安装
Docker Compose是Docker的一个开源项目目前托管到了GitHub需要前往GitHub下载。
sudo curl -L https://github.com/docker/compose/releases/download/2.2.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose推荐使用道客提供的Docker极速下载进行安装。
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-uname -s-uname -m /usr/local/bin/docker-compose授权
chmod x /usr/local/bin/docker-compose查看版本
[rootsail bin]# docker-compose version
Docker Compose version v2.2.3卸载
rm /usr/local/bin/docker-compose启动
# 在项目目录中运行docker-compose up来启动应用程序
docker-compose up停止
[rootsail docker-compose]# docker-compose stop
[] Running 2/2
⠿ Container docker-compose-redis-1 Stopped 0.2s
⠿ Container docker-compose-web-1 Stopped停止并删除容器和网络
[rootsail docker-compose]# docker-compose down
[] Running 3/3
⠿ Container docker-compose-web-1 Removed 10.2s
⠿ Container docker-compose-redis-1 Removed 0.2s
⠿ Network docker-compose_default RemovedDocker Swarm
swarm 可以简单理解为简单版k8s采用管理节点工作节点的方式
初始化一个swarm集群
[rootlocalhost ~]# docker swarm init --advertise-addr 192.168.106.131
Swarm initialized: current node (uuak4q55jejkbj654yhry6vvh) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-0itq4kr7g74p1lk90syomkp7duqg040eli9stpuxscno1q8ben-a88didzcmnbfzi5pi020bjzia 192.168.106.131:2377To add a manager to this swarm, run docker swarm join-token manager and follow the instructions.生成增加manager节点的命令 [rootlocalhost ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:docker swarm join --token SWMTKN-1-0itq4kr7g74p1lk90syomkp7duqg040eli9stpuxscno1q8ben-3l2s23nmszm5u8cvdi9kql9eo 192.168.106.131:2377[rootlocalhost ~]# 生成增加work节点的命令
[rootlocalhost ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-0itq4kr7g74p1lk90syomkp7duqg040eli9stpuxscno1q8ben-a88didzcmnbfzi5pi020bjzia 192.168.106.131:2377[rootlocalhost ~]#
然后在需要加入集群的机器执行上述对应命令即可
查看当前swarm集群节点状态
[rootlocalhost ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
uuak4q55jejkbj654yhry6vvh * localhost.localdomain Ready Active Leader 20.10.7
[rootlocalhost ~]#
双主双从集群时节点宕机时如果只存在一个manager节点则整个集群不可用 需大多数节点存活整个集群才可用节点数 3
节点离开集群
如果离开的是manager节点会有警告可使用 -f 强制离开
docker swarm leaveSwarm 部署应用动态扩缩容 docker启动应用方式
1.docker run: 启动一个容器
2.docker-compose up : 启动一组由 docker-compose.yml 编排的容器
3.docker swarm docker service run : 启动应用集群
服务集群提供一个服务可以是一个容器也可以是一组相同的容器 集群中节点的分布可能在不同机器上也可能在一个机器上的不同容器
docker run - 启动一个容器不具有扩缩容
docker service create - 启动一个服务可以是一个容器也可以是多个容器具有扩缩容特性即集群的概念docker service
1.启动一个服务
[rootswarm01 ~]# docker service create --helpUsage: docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]Create a new serviceeg: docker service create --name my-nginx -p 18080:80 nginx在当前节点启动容器不一定会分布到当前节点可能是集群中的任何节点
2.查看服务列表
[rootswarm01 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
pl07nc4j4jpp my-nginx replicated 1/1 nginx:latest *:18080-80/tcp
3.查看服务运行状态
[rootswarm01 ~]# docker service ps my-nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
navzuz169o9g my-nginx.1 nginx:latest swarm03 Running Running 2 minutes ago
4.更新现有服务
docker service update [OPTIONS] SERVICE扩容为3个副本原有那个不变新增两个
[rootswarm01 ~]# docker service update --replicas 3 my-nginx
my-nginx
overall progress: 3 out of 3 tasks
1/3: running []
2/3: running []
3/3: running []
verify: Service converged
查看扩容后的状态
[rootswarm01 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
pl07nc4j4jpp my-nginx replicated 3/3 nginx:latest *:18080-80/tcp
[rootswarm01 ~]# docker service ps my-nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
navzuz169o9g my-nginx.1 nginx:latest swarm03 Running Running about an hour ago
ganoswo1p7tq my-nginx.2 nginx:latest swarm04 Running Running about a minute ago
mt0gjzwqa7o5 my-nginx.3 nginx:latest swarm02 Running Running about a minute ago
可以看到扩容之后新增的两个节点分布在02 04 上面此时通过集群内所有节点都可以访问 my-nginx 服务。因为我们访问的是集群而集群内部的路由转发这些都是由docker-swarm 去完成的 看到这里对于普通的 docker run 可能会存在 端口冲突的问题但是这里采用的是以服务方式启动单个容器是不会暴露服务端口的端口是由docker swarm 集群去暴露的也就不存在端口冲突的问题 此时的容器是这样的
[rootswarm01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
943072cfc92d nginx:latest /docker-entrypoint.… About a minute ago Up About a minute 80/tcp my-nginx.6.8qu4v48614zb9h00koi45jb9b
58ce7df6d2d7 nginx:latest /docker-entrypoint.… About a minute ago Up About a minute 80/tcp my-nginx.5.w73pj7s2ad9bu8n9qdft9ofj1
扩容和缩容是一个相对的概念docker service update --replicas 增加/减少都可以
5.其他命令参考
docker service --help
6.专门扩缩容的命令update 本意是更新服务顺带可以扩缩容
docker service scale --helpUsage: docker service scale SERVICEREPLICAS [SERVICEREPLICAS...]Scale one or multiple replicated servicesOptions:-d, --detach Exit immediately instead of waiting for the service to converge
eg:设置副本数为 5
[rootswarm01 ~]# docker service scale my-nginx5
my-nginx scaled to 5
overall progress: 5 out of 5 tasks
1/5: running []
2/5: running []
3/5: running []
4/5: running []
5/5: running []
verify: Service converged
集群内任意节点都可以访问服务服务副本可以动态扩缩容非常方便达到高可用
7.移除一个服务
[rootswarm01 ~]# docker service rm my-nginx
my-nginx
移除后整个集群内服务下的所有容器及整个服务全部移除
[rootswarm01 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
[rootswarm01 ~]# [rootswarm01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[rootswarm01 ~]#
Docker Swarm 基本使用 搭建集群启停服务动态扩缩容