注意:是docker / swarm的新手。
我已经按照https://docs.docker.com/compose/wordpress/在Azure上运行的docker swarm模式下创建了WordPress / mysql容器。
根据https://docs.docker.com/docker-for-azure/
创建了集群这是我的dockerfile:
======================
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
=======================
根据官方文档,我可以使用--published
标志发布端口,但是,我需要知道如何将其包含在Dockerfile中。
正在运行的应用 现在,您可以开始创建容器和服务了。
$ docker run hello-world
您也可以运行网站。用--publish公开的端口是通过平台负载平衡器自动公开的:
$ docker service create --name nginx --publish published=80,target=80 nginx
一旦找到,请在AWS或Azure门户中找到DefaultDNSTarget输出以访问该站点。
使用docker ps,我可以看到它正在监听0.0.0.0:8000->80,但是,如果没有服务,它将不会自动为容器创建天蓝色的负载平衡规则。
swarm-manager000000:~/compose$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c94587acd97 wordpress:latest "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 0.0.0.0:8000->80/tcp compose_wordpress_1
aff61e0022a8 mysql:5.7 "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 3306/tcp, 33060/tcp compose_db_1
5d2fdb3d75c4 docker4x/l4controller-azure:18.09.2-ce-azure1 "loadbalancer run --…" 2 hours ago Up 2 hours editions_controller
d5f0a8a91f66 docker4x/meta-azure:18.09.2-ce-azure1 "metaserver -iaas_pr…" 2 hours ago Up 2 hours 10.0.0.4:9024->8080/tcp meta-azure
93c6571b6ee6 docker4x/guide-azure:18.09.2-ce-azure1 "/entry.sh" 2 hours ago Up 2 hours editions_guide
b6cad5676b10 docker4x/logger-azure:18.09.2-ce-azure1 "python /server.py" 2 hours ago Up 2 hours 0.0.0.0:514->514/udp editions_logger
d2a74fe21751 docker4x/agent-azure:18.09.2-ce-azure1 "supervisord --confi…" 2 hours ago Up 2 hours agent
swarm-manager000000:~/compose$
例如,如果我尝试创建一个映射到新图像的服务,即nginx。这将立即在Azure负载平衡器中创建入站规则。
$ docker service create --name nginx --publish published=80,target=80 nginx
请告知如何将服务映射到现有的WordPress容器,或如何更新Dockerfile来创建服务并使用--published
。
谢谢
答案 0 :(得分:0)
我没有将docker服务映射到现有容器的经验。据我所知,它在群体中的作用与docker run
命令相同。您可以查看其中的description。
如果您真的想将服务映射到容器,我建议使用AKS而不是Azure中的Docker Swarm,那么对服务和容器来说,它更易于管理。它可以将服务映射到容器,无论它是现有容器还是创建新容器。
有关发布端口的问题。您可以通过在--publish
命令中使用参数docker run
来实现它,如下所示:
docker run -d -p 80:80 my_image
或者您可以在撰写文件中执行以下操作:
ports:
- "8000:80"
但是您不能在Dockerfile中发布端口,您只能使用EXPOSE
告诉容器应用程序侦听的端口。看看Expose vs publish: Docker port commands explained simply,您会知道的。