使docker容器内的服务自启
剖出一个问题:如何让docker容器内的服务自启动?比如说容器启动,apache2服务随之启动,解答如下:
假如说我们已经拉去Ubuntu并且在Ubuntu里面下载了Apache服务,那么我们在容器里面创建脚本(start.sh)用来启动服务,我这里是在/home目录下创建的start.sh文件,文件内容如下:
systemctl restart apache2
tail -f /etc/passwd
有一点需要注意,运行在后台的程序,容器启动后会立刻退出,这种情况我一般会在启动服务命令执行后,执行 tail -f /etc/passwd来防止容器自动退出
把这个容器另存为一个镜像(docker commit
),下面的test镜像
接着写一个Dockerfile ,Dockerfile中使用CMD / ENTRYPOINT命令,启动容器的时候就可以拉起服务
FROM test:apache
EXPOSE 80
CMD ["/bin/sh","/home/start.sh"]
运行如下命令:生成test2:apache镜像
docker build -t test2:apache .
接着用这个test2镜像创建容器
可以看到成功了