Docker同时启动多个服务

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

前几篇Docker的文章介绍启动容器时都是只启动一个后台服务,今天来说说怎样通过supervisor来启动多个服务

1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下

FROM centos:centos6MAINTAINER Fanbin Kong "kongxx@hotmail.com"RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmRUN yum install -y openssh-server sudo mysql-server mysql supervisorRUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config  RUN useradd adminRUN echo "admin:admin" | chpasswdRUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_keyRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN mkdir /var/run/sshdRUN /etc/init.d/mysqld start &&\    mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein';"&&\    mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein';"&&\    mysql -u root -pletmein -e "show databases;"RUN mkdir -p /var/log/supervisorCOPY supervisord.conf /etc/supervisord.confEXPOSE 22 3306CMD ["/usr/bin/supervisord"]

2. 在Dockerfile所在目录下创建supervisord.conf文件,内容如下:

[supervisord]nodaemon=true[program:sshd]command=/usr/sbin/sshd -D[program:mysqld]command=/usr/bin/mysqld_safe

3. 在Dockerfile所在目录下运行build命令来生成image文件,这里使用mysql_server作为image文件名

sudo docker build -t myserver .

4. 启动容器
4.1 首先使用下面的命令来启动容器

sudo docker run --name=myserver -d -P myserver

4.2 启动完容器后,可以使用“sudo docker ps”来查看,此时可以看PORTS列内容为
“0.0.0.0:49171->22/tcp, 0.0.0.0:49172->3306/tcp”
容器的22端口和3306端口会被映射到宿主机器的49171和49172端口。

4.3 此时就可以通过下面的命令来访问ssh和mysql服务了

ssh admin@<宿主机器> -p <宿主机器端口>mysql -h <宿主机器> -u root -pletmein -P 49172

4.4 当然也可以使用“sudo docker inspect myserver | grep IPAddress”来查看容器IP地址,然后通过下面命令访问ssh和mysql服务

ssh admin@<容器机器IP> mysql -h <容器机器IP> -u root -pletmein 


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
### 启动多个 Docker 容器的方法 在 Docker 中,可以通过多种方式同时启动多个容器。最常见的方式是使用 `docker-compose` 工具,它允许通过一个 `docker-compose.yml` 配置文件定义并管理多个容器服务[^2]。这种方式简化了多容器应用的部署流程,使用户可以一次性启动、停止和管理整个应用的所有容器。 #### 使用 Docker Compose 启动多个容器 Docker Compose 的核心在于 `docker-compose.yml` 文件,该文件以 YAML 格式定义了服务(Service)、网络(Network)和卷(Volume)等配置。每个服务代表一个多个运行相同镜像的容器实例[^2]。 以下是一个典型的 `docker-compose.yml` 示例: ```yaml version: '3.0' services: tomcat: container_name: tomcat image: tomcat:9 ports: - "8081:8080" nginx: container_name: nginx image: nginx:1.21 ports: - "80:80" ``` 保存上述内容为 `docker-compose.yml` 文件后,执行以下命令即可一次性启动所有定义的服务: ```bash docker-compose up -d ``` 其中 `-d` 参数表示以“分离模式”后台运行容器。 #### 使用 `docker run` 启动多个容器(手动方式) 如果不使用 Docker Compose,也可以通过多次执行 `docker run` 命令来启动多个容器。例如: ```bash docker run -d --name container1 nginx:latest docker run -d --name container2 redis:latest ``` 此外,为了确保多个容器之间的通信,应将它们连接到同一个自定义网络中。例如: ```bash docker network create mynetwork docker run -d --name container1 --network mynetwork nginx:latest docker run -d --name container2 --network mynetwork redis:latest ``` 这样可以实现容器间的网络互通[^3]。 #### 多容器编排的优势 使用 Docker Compose 或其他编排工具可以显著提高开发效率,特别是在处理微服务架构或多组件系统时。它可以统一管理依赖关系、端口映射、数据持久化等复杂配置[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值