最近由于工作原因,需要对Docker镜像进行制作,这里记录下,也许对大家也有一定帮助!
写在前面:本文docker镜像制作方法更适用于基于已有docker镜像一次性修改。
推荐用Docker File制作docker镜像。
原理是一样的,但是用docker file制作docker镜像能够记录下操作步骤,方便以后更改或者镜像丢失后重新创建。
本文以Ubuntu为基础镜像,预启动一个django项目和ssh服务,制作一个新的镜像。
1、基础镜像
我选用的是从Docker官网下载的ubuntu镜像。
docker run ubuntu
或者
docker pull ubuntu
2、安装ssh服务
docker run -i -t ubuntu /bin/bash #创建一个容器,-t是临时终端。
进入ubuntu后,安装openssh
apt-get install openssh-server #安装ssh
#需要修改/etc/sshd/sshd_config文件中内容
PermitRootLogin yes
UsePAM no
修改ubuntu的root用户密码,以便以后ssh登陆:
sudo passwd root
3、制作新的镜像
到此,我们需要把这个带有ssh服务的容器提交成一个镜像,方便以后在这个基础上各种改造:
docker commit
4、基于现有ssh服务的Ubuntu镜像,加入django项目,并设置随容器自启动
ok,经过以上步骤,doker images可以查看,新提交的doker镜像已经在里面了,例如image name为ssh-ubuntu的新镜像。
最基础的Ubuntu容器已经没有作用了
利用
doker stop
doker rm
清楚刚刚启动的最基础的Ubuntu容器
下面,要基于我们新的ssh-ubuntu进行个性化定制,首先,要将这个镜像运行起来
docker run -d -p 5001:22 ssh-ubuntu /usr/sbin/sshd -D
(-p为端口映射 容器中22端口应射程主机5001端口 || /usr/sbin/sshd -D是指定容器启动后要运行的command,本处是启动ssh服务)
容器启动后,我们可以通过ssh的方式,登陆到容器中
ssh root@doker0_ip -p 5001(22映射端口)
进入到容器后,就可以进行下一步个性化定制了。例如我要把我的django项目放到镜像中,并随着容器启动而启动。
(1)把django项目拷贝到容器中,用scp命令即可。
(2)比较通用的开机启动进程方法:
安装supervisor!
apt-get update && apt-get install supervisor
(如果apt-get install找不到包,先update一下)
然后编辑配置文件,vi /etc/supervisord.conf
[supervisord]nodaemon=true[program:sshd]command=/usr/sbin/sshd -D[program:tomcat]command=python ~/manager.py runserver 0.0.0.0:9999
评论列表()