使用Docker快速部署不同版本CentOS容器
本文是快速部署CentOS系列Docker容器的快速指南
下载各个系列CentOS docker基础镜像
下载CentOS 5/6/7 版本基础镜像
sudo docker pull centos:5
sudo docker pull centos:6
sudo docker pull centos:7检查下载的镜像:
sudo docker images可以看到如下输出
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 7 196e0ce0c9fb 5 weeks ago 197 MB
docker.io/centos 6 5dedbd63518e 6 weeks ago 194 MB
docker.io/centos 5 1ae98b2c895d 14 months ago 285 MB启动各版本创建一个基础容器
CentOS5容器
sudo docker run -it --hostname centos5 --name centos5 docker.io/centos:5 /bin/bash注意:CentOS 5已经停止镜像,但是可以通过 http://vault.centos.org/5.11/ 下载更新,所以编辑 /etc/yum.repos.d/CentOS-Vault.repo(只需要这个配置文件就可以)
这里同时激活了
base-source和updates-source源,可以方便下载SRPM进行自己的编译安装。补充:
但是CentOS 5系列依然缺少一些基础软件(例如
git),可参考CentOS 5平台通过yum安装git方法,添加EPEL的软件仓库作为补充:
CentOS6容器
CentOS7容器
升级和安装
进入容器安装必要的软件包
默认的docker镜像中不安装ssh客户端(5)或ssh服务器(7),并且CentOS 7不安装
initscripts软件包,则会缺乏/etc/rc.d/init.d/functions这样的/etc/init.d目录下sysv基础脚本,会导致一些传统脚本失效或报错(例如,无法执行sshd-keygen)。
CentOS 5/6激活sshd
CentOS 7激活sshd
CentOS 7上也可以使用
sshd-keygen来生成服务器的key,然后就可以启动/usr/sbin/sshd实际轻量级微服务部署的docker,不需要安装如此多的软件,应该部署一个精简容器,只启动必要的服务 - 下次实践一个Django容器
制作镜像
此后检查镜像
使用镜像创建容器
centos 5
centos 6
centos 7
添加ssh密钥
通过Dockerfilei添加ssh密钥
为了实现ssh登陆到docker容器中,建议使用的是密钥登陆方式。docker支持将host主机中的文件添加到容器中,可以在Dockerfile使用的指令是ADD。此外,在docker build指令时候,也可以通过--build-arg将host主机上的密钥内容转换成变量传递给docker,以便在Dockerfile中引用。
举例,以下添加一个github账号的私钥到容器中,以便能够方便开发
以下Dockerfile中将源代码目录复制到docker容器中,并且将私钥复制到容器中,安装nodejs模块,映射端口,最后启动服务,是一个比较完整的案例,值得参考
在Using SSH Private keys securely in Docker build也有一个比较有意思的解决方法,是通过在docker容器中运行wget,从host主机的一个本地运行的web服务器上下载密钥,也算一种解决方法:
通过Dockerfile创建镜像
上述手工完成的工作,可以改写成Dockerfile如下
Dockerfile
执行命令
从构建的镜像启动容器
Last updated
Was this helpful?