Linux环境部署:
1.初始化环境
安装docker服务
关闭防火墙,关闭selinux
2.环境搭建
a.初始化manager节点
docker swarm init --advertise-addr 10.1.1.2
b,初始化node节点,依赖上一步骤执行的命令
docker swarm join --token SWMTKN-1-1cqvxqya4jhuxuw-691w09ovwrturp2rygqioewj5 10.1.1.2:2377
3.使用操作
i.镜像要提前拉取,不会自动拉
docker pull nexus.mingyuanyun.com:5000/devops/nginx:latest
ii.创建实例
docker service create --replicas 3 --name nginx -p 8099:80 nexus.mingyuanyun.com:5000/devops/nginx:latest
image nexus.mingyuanyun.com:5000/devops/nginx:latest could not be accessed on a registry to record
its digest. Each node will access nexus.mingyuanyun.com:5000/devops/nginx:latest independently,
possibly leading to different nodes running different
versions of the image.
nmyxyyb00gstwt8prfwxrqbfk
overall progress: 3 out of 3 tasks
1/3: running [==================================================>]
2/3: running [==================================================>]
3/3: running [==================================================>]
verify: Service converged
实例创建完成之后,会分别在三个node节点上显示三个docker进程及启动三个8099端口
访问三台主机:
[root@swarm11220 ~]# curl 10.1.1.2:8099
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@swarm11220 ~]# curl 10.1.1.3:8099
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@swarm11220 ~]# curl 10.1.1.4:8099
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
iii.更新服务
使用redis镜像,先创建服务
[root@swarm11220 ~]# docker service create --replicas 1 --name redis -p 16379:6379 nexus.mingyuanyun.com:5000/devops/redis:6.0.6
image nexus.mingyuanyun.com:5000/devops/redis:6.0.6 could not be accessed on a registry to record
its digest. Each node will access nexus.mingyuanyun.com:5000/devops/redis:6.0.6 independently,
possibly leading to different nodes running different
versions of the image.
wl4rpvtdayccpzqq87yl1euxu
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
[root@swarm11220 ~]# docker ls
docker: 'ls' is not a docker command.
See 'docker --help'
[root@swarm11220 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
nmyxyyb00gst nginx replicated 3/3 nexus.mingyuanyun.com:5000/devops/nginx:latest *:8099->80/tcp
wl4rpvtdaycc redis replicated 1/1 nexus.mingyuanyun.com:5000/devops/redis:6.0.6 *:16379->6379/tcp
[root@swarm11220 ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4108/sshd
tcp6 0 0 :::2377 :::* LISTEN 12603/dockerd
tcp6 0 0 :::7946 :::* LISTEN 12603/dockerd
tcp6 0 0 :::22 :::* LISTEN 4108/sshd
tcp6 0 0 :::16379 :::* LISTEN 12603/dockerd
tcp6 0 0 :::8099 :::* LISTEN 12603/dockerd
[root@swarm11220 ~]# telnet 10.1.1.2 6379
Trying 10.1.1.2...
telnet: connect to address 10.1.1.2: Connection refused
[root@swarm11220 ~]# telnet 10.1.1.2 16379
Trying 10.1.1.2...
Connected to 10.1.1.2.
Escape character is '^]'.
set 123 123
+OK
get 123
$3
123
^]
telnet> quit
Connection closed.
[root@swarm11220 ~]# telnet 10.1.1.3 16379
Trying 10.1.1.3...
telnet: connect to address 10.1.1.3: Connection refused
[root@swarm11220 ~]# telnet 10.1.1.3 16379
Trying 10.1.1.3...
Connected to 10.1.1.3.
Escape character is '^]'.
get 123
$3
123
更新镜像
docker service update --image nexus.mingyuanyun.com:5000/devops/redis:6.0.7 redis
[root@swarm11220 ~]# docker service update --image nexus.mingyuanyun.com:5000/devops/redis:6.0.7 redis
image nexus.mingyuanyun.com:5000/devops/redis:6.0.7 could not be accessed on a registry to record
its digest. Each node will access nexus.mingyuanyun.com:5000/devops/redis:6.0.7 independently,
possibly leading to different nodes running different
versions of the image.
redis
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
[root@swarm11220 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
nmyxyyb00gst nginx replicated 3/3 nexus.mingyuanyun.com:5000/devops/nginx:latest *:8099->80/tcp
wl4rpvtdaycc redis replicated 1/1 nexus.mingyuanyun.com:5000/devops/redis:6.0.7 *:16379->6379/tcp
[root@swarm11220 ~]# telnet 10.1.1.3 16379
Trying 10.1.1.3...
Connected to 10.1.1.3.
Escape character is '^]'.
get 123
$-1
注意:持久化配置一定要挂磁盘
删除服务
docker service rm nginx
减少服务实例
docker service scale nginx=0
增加服务实例
docker service scale nginx=5
查看所有服务
docker service ls
查看服务的容器状态
docker service ps nginx
查看服务的详细信息。
docker service inspect nginx
docker volume --help
docker volume create --name testvolume
docker volume ls
docker volume inspect testvolume
第一种挂载方式:
docker service create --replicas 3 --mount type=volume,src=testvolume,dst=/zjz --name test_nginx nginx
第二种挂载方式:
命令格式:
docker service create --mount type=bind,target=/container_data/,source=/host_data/
其中,参数target表示容器里面的路径,source表示本地硬盘路径
网友评论