zoukankan      html  css  js  c++  java
  • 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] name=ftp baseurl=ftp://10.0.0.110/pub/centos6 gpgcheck=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

  • 相关阅读:
    JAVA学习日报 8.2
    软件工程书籍《大道至简》读后感
    【CSAPP】第三章 程序的机器级表示
    【算法】KMP
    【经验总结】CodeBlocks使用mingw64
    【C++】指针和函数
    【C++】字符串处理
    【C++】自定义数据类型
    【C++】STL容器
    【C++】STL算法
  • 原文地址:https://www.cnblogs.com/quzq/p/13442696.html
Copyright © 2011-2022 走看看