Docker镜像制作-使用容器制作镜像

1 基于容器制作镜像

 ssh例子:
 [root@docker ~]# docker rm -f `docker ps -qa`
 [root@docker ~]# docker run -it --name "oldguo_sshv1" centos:6.9 /bin/bash

# 登入系统设置密码, 配置本地局域网yum源后安装ssh服务并启动 [root@df8386465269
/]# passwd mv /etc/yum.repos.d/*.repo /tmp echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.110/pub/centos6\ngpgcheck=0" > /etc/yum.repos.d/ftp.repo
yum makecache fast && yum install openssh-server -y /etc/init.d/sshd start ----->重要:ssh第一次启动时,需要生成秘钥,生成pam验证配置文件 /etc/init.d/sshd stop
echo "12345" | passwd root --stdin ---->设定root密码
"hang" 运行sshd,并丢到后台 /usr/sbin/sshd -D ------>重要: 该命令会以前台方式执行启动ssh服务并夯住窗口(在启动容器时可指定命令) docker commit oldguo_sshv1 oldguo/sshd:v1
# commit一个容器为镜像; docker commit 容器名 镜像名(oldguo/sshd):targ
思考: 以上基于容器制作的镜像, 使用该镜像启动为容器后, 该容器只不过比原来的centos多了sshd服务, 并且该服务还没有启动(当然yum源也变了).
因为我们启动容器只是单纯的启动了, 没有让容器执行任何进程, 如不使用it交互启动的话, 还是会在启动的瞬间就结束的.
如何让其在启动后第一时间就执行我们指定的命令呢(比如启动ssh服务)?
docker container run -d --name=name 容器id /usr/sbin/sshd -D  ------>指定启动容器时执行的命令

 2 centos6和7的区别

1. 7中没有/etc/init.d/sshd start命令, 无法做生成密钥的操作, 如何解决?
  安装完上面的openssh-server服务后, 手动搞
  mkidr /var/run/sshd
  echo 'UseDNS no' >> /etc/ssh/sshd_config
  sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
  echo 'root:12345' | chpasswd
  /usr/bin/ssh-keygen -A
2. 3. 4.

 

 

 

 

 

 

 

 

 

66

posted @ 2020-08-05 21:05  叶落kiss  阅读(566)  评论(0编辑  收藏  举报