docker swarm

修改主机名称

#修改主机名称
hostname # 主机名称
hostnamectl set-hostname node1

关闭防火墙

#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

init swarm

#init swarm
docker swarm init

创建网络

#创建网络
docker network create -d overlay mynet

docker ui界面

# docker ui界面
#创建
docker service create \
 --name=viz \
 --publish=8080:8080/tcp \
 --constraint=node.role==manager \
 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock,readonly \
 dockersamples/visualizer

docker ui界面 portainer

# docker ui界面 portainer
docker service create \
 --name=portainer \
 --publish=9000:9000 \
 --constraint=node.role==manager \
 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
 --mount type=volume,src=portainer_data,dst=/data \
 --mount type=volume,src=portainer_public,dst=/public \
 portainer/portainer

docker in docker 的思路

#docker in docker 的思路
#关键点是:将宿主机 docker.sock 文件挂载到容器,
#实现容器内 docker 操作宿主机 docker 的目的
docker run -it \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
dockerindocker:1.0 /bin/bash

docker run -it \
--name dind \
--mount type=bind,src=/usr/bin/docker,dst=/usr/bin/docker,readonly \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock,readonly \
openjdk /bin/bash

docker service create \
--name dind \
--mount type=bind,src=/usr/bin/docker,dst=/usr/bin/docker,readonly \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock,readonly \
--network mynet \
--constraint=node.role==manager \
openjdk

查看服务

#查看服务
docker service ls

查询日志

#查询日志
docker service logs -f --tail=n 服务名称

docker service logs -f --tail=20 viz

创建测试

#创建测试 --replicas=1 
docker service create --network mynet --name nginx2 zhaokuner/nginx

创建数据卷

docker volume create myregistry

使用http

#使用http,修改insecure-registries,加入 ip:port  or domain:port
vim /etc/docker/daemon.json 
"insecure-registries": ["registry.access.redhat.com","quay.io","myregistry:5000"],

创建私有仓库

# 创建数据卷 type=volume,src=volume名称,dst=容器目录
docker service create \
--network mynet \
--mount type=volume,src=myregistr,dst=/var/lib/registry \
-p 5000:5000 \
--name myregistry \
registry:2

docker run -d -p 5000:5000 --mount type=volume,src=myregistry,dst=/var/lib/registry  --restart=always --name myregistry registry:2

#查看
http://172.16.34.149:5000/v2/

#安装界面
docker pull hyper/docker-registry-web

docker run -d --restart=always -p 8080:8080 --name registry-web --link myregistry -e REGISTRY_URL=http://myregistry:5000/v2 -e REGISTRY_NAME=myregistry:5000 hyper/docker-registry-web

#添加删除功能
#第一步,修改registry,开启删除功能
https://docs.docker.com/registry/configuration/#delete
/etc/docker/registry/config.yml
storage:
  delete:
    enabled: true

#第二步,修改docker-registry-web,关闭只读
https://hub.docker.com/r/hyper/docker-registry-web
/conf/config.yml

readonly: false

config配置

echo "This is a config" | docker config create myconfig -
docker config create tomcat-server ./server.xml
#使用
docker service create --name masl --config source=tomcat-server,target=/usr/local/apache-tomcat-8.5.50/conf/server.xml --replicas 2 -p 8080:8080 tomcat

secret配置

echo '123456' | docker secret create mypwd -
#使用
docker service create --name db --secret mypwd -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mypwd mysql:5.7.27
#查看指定的密码 进入容器
cat /run/secrets/mypwd

执行compose.yml

docker stack deploy -c docker-compose.yml
上一篇:docker swarm 实验一 docker services 入门


下一篇:01 Kubernetes概述