相关命令:
docker build -t imagename . # 使用此.目录的 Dockerfile 创建镜像
docker tag <image> username/repository:tag # 标记 <image> 以上传到镜像库
docker push username/repository:tag # 将已标记的镜像上传到镜像库
服务与docker-compose.yml文件:
使用 Docker 平台定义、运行和扩展服务 – 只需编写一个 docker-compose.yml 文件即可。
docker-compose.yml 文件是一个 YAML 文件,用于定义 Docker 容器在生产中的行为方式。
version:"3"
services:
web:
# 将 username/repo:tag 替换为您的名称和镜像详细信息
image: username/repository:tag
deploy:
replicas:5
resources:
limits:
cpus:"0.1"
memory:50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
此 docker-compose.yml 文件会告诉 Docker 执行以下操作:
· 从镜像库中拉取我们在步骤 2 中上传的镜像。
· 将该镜像的五个实例作为服务 web 运行,并将每个实例限制为最多使用 10% 的 CPU(在所有核心中)以及 50MB RAM。
· 如果某个容器发生故障,立即重启容器。
· 将主机上的端口 80 映射到 web 的端口 80。
· 指示 web 容器通过负载均衡的网络 webnet 共享端口 80。(在内部,容器自身将在临时端口发布到 web 的端口 80。)
· 使用默认设置定义 webnet 网络(此为负载均衡的 overlay 网络)。
PS:docker-compose.yml有严格的缩进限制,冒号“:”后必须接空格!
需要先运行以下命令,然后才能使用 docker stack deploy 命令:
docker swarm init
现在,运行此命令。必须为应用指定一个名称。在此处该名称设置为“getstartedlab”:
docker stack deploy -c docker-compose.yml getstartedlab
查看刚才启动的五个容器的列表:
docker stack ps getstartedlab
扩展应用
可以通过在 docker-compose.yml 中更改 replicas 值,保存更改并重新运行 docker stack deploy 命令来扩展应用:
docker stack deploy -c docker-compose.yml getstartedlab
Docker 将执行原地更新,而无需先清除技术栈或终止任何容器。
现在,重新运行 docker stack ps 命令以查看经过重新配置的已部署实例。例如,如果扩展了从节点,将有更多处于运行状态的容器。
清除应用和 swarm
使用 docker stack rm 清除应用:
docker stack rm getstartedlab
这将删除应用,但我们的单节点 swarm 仍处于正常运行状态(如 docker node ls 所示)。使用
docker swarm leave --force清除 swarm。