作者:JC and lixh
1、关闭宿主主机的SELinux
如果不关闭宿主主机的SELinux服务,在下面修改容器内服务器的密码,会出现错误。修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。
# 编辑SELinux配置文件
vi /etc/selinux/config
# 重新启动服务器
reboot
2、启动基本镜像并安装相应服务
我们在启启动基本镜像前,需要pull一个镜像,目前我们的镜像已经成功下载,启动并进入bash模式下。
# 启动基本镜像,进入bash模式
docker run -it -p 10080:80 centos:latest /bin/bash
3、安装配置所必要的命令及服务
# 安装相关命令及服务
yum install vi httpd -y
4、启动服务并测试
# 启动Apache服务
/usr/sbin/httpd
接下来就可以通过外部主机进行访问了,需要通过你宿主主机的IP或域名,加端口号,就可以成功访问,下例使用IP地址访问。
5、退出容器并保存镜像
# 退出当前容器
exit
# 查看容器信息,主要查看ID
docker ps -al
# 保存当前容器
docker commit -m ‘apache-server’ -a ‘lixh’ 81a39bcb2a69 httpd:centos
6、特殊说明
每次容器退之后,容器中的服务也会相应的关闭,虽然我们将容器进行了存储,但在没有运行的情况下,服务是不启动的。那如何解决这种问题呢?
方法一:
# 以后台模式运行容器
docker run -itd -p 10080:80 httpd:centos
# 查看容器ID
docker ps
# 再次进入一个正在运行的容器
docker attach 69356a83ef77
# 启动相应服务…
…
# 退出容器保持后台运行
Ctrl + P + Q
方法二:
# 运行容器
docker run -it -p 10080:80 httpd:centos
# 启动相应服务…
…
# 退出容器保持后台运行
Ctrl + P + Q
上面提到的docker attach,在进入容器后,用exit会退出容器同时也会停止相应的服务,所以必须用Ctrl + P + Q退出才能继续后台运行,在docker 中有一个docker exec用exit也不会真正退出容器,服务会继续后台运行使用方法如下:
docker exec -it httpd:centos /bin/bash