Docker同时启动多个服务

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

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

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. FROM centos:centos6  
  2.   
  3. MAINTAINER Fanbin Kong "kongxx@hotmail.com"  
  4.   
  5. RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  
  6. RUN yum install -y openssh-server sudo mysql-server mysql supervisor  
  7. RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config   
  8.    
  9. RUN useradd admin  
  10. RUN echo "admin:admin" | chpasswd  
  11. RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers  
  12.    
  13. RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key  
  14. RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key  
  15. RUN mkdir /var/run/sshd  
  16.   
  17. RUN /etc/init.d/mysqld start &&\  
  18.     mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein';"&&\  
  19.     mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein';"&&\  
  20.     mysql -u root -pletmein -e "show databases;"  
  21.   
  22. RUN mkdir -p /var/log/supervisor  
  23. COPY supervisord.conf /etc/supervisord.conf  
  24.   
  25. EXPOSE 22 3306  
  26. CMD ["/usr/bin/supervisord"]  

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

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [supervisord]  
  2. nodaemon=true  
  3.   
  4. [program:sshd]  
  5. command=/usr/sbin/sshd -D  
  6.   
  7. [program:mysqld]  
  8. command=/usr/bin/mysqld_safe  

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

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. sudo docker build -t myserver .  

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

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  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服务了

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. ssh admin@<宿主机器> -p <宿主机器端口>  
  2. mysql -h <宿主机器> -u root -pletmein -P 49172  

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

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. ssh admin@<容器机器IP>   
  2. mysql -h <容器机器IP> -u root -pletmein   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值