• 制作centos8基础镜像


    使用Dockerfile 文件制作基础镜像

    环境地址:

    ip:x.x.x.x

    目录:/data/cus_images

    步骤详情:

    1. 创建子目录 execute,在这个目录下制作执行制作镜像的步骤,在这个目录里再新建 userfiles 目录,制作镜像需要的文件都放到这里。

      拷贝文件:

      cp /root/scripts/upgrade/* /data/cus_images/execute/userfiles/

    2. Dockerfile路径:/data/cus_images/execute,拷贝和复制文件到Dockerfile 中的话,不能到Dockerfile 以外的文件中去复制。

      FROM centos:latest
      
      RUN rm -rf /etc/yum.repos.d/CentOS-Linux-AppStream.repo
      RUN rm -rf /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
      RUN rm -rf /etc/yum.repos.d/CentOS-Linux-Extras.repo
      # ADD 和 COPY 指令不能复制 Dockerfile 父目录之外的文件,所以创建 userfiles 文件夹,拷贝需要的问题
      ADD ./userfiles/Centos-8.repo /etc/yum.repos.d/
      RUN yum clean all && yum makecache
      
      
      
    3. 非交互式创建密钥对,开启sshd 服务,但是CMD指令后使用的并不生效,需要 写在 /etc/bashrc 中才能生效

      ssh-keygen -t rsa -q -N '' -f /etc/ssh/ssh_host_rsa_key
      ssh-keygen -t ecdsa -q -N '' -f /etc/ssh/ssh_host_ecdsa_key
      ssh-keygen -t ed25519 -q -N '' -f /etc/ssh/ssh_host_ed25519_key
      
      #配置sshd 服务,使用CMD指令启动不会生效
      #RUN echo "/usr/sbin/sshd" >> /etc/bashrc
      EXPOSE 22
      CMD ["/usr/sbin/sshd"]
      
    4. 修改root 用户密码

      RUN echo '123456' | passwd --stdin "root"
      
    5. dockerfile 中修改 主机名,

      实验多次,/etc/hostname 中的文件都会被覆盖掉

      解决方案:使用hostname 命令修改主机名,写在一个shell 脚本中,开机执行。

      但是必须要有以下3个条件才能实现

      • hostname 命令必须在shell 脚本中执行
      • 在脚本中必须再 调用一次 bash 环境出来
      • 创建容器的的时候必须给容器扩展权限,也就是 --privileged=true 必须开启

      在dockerfile 中的实现方式如下:

      # 脚本中 rm $0 表示执行后删除本文件
      # echo 后面一定要接单引号,表示弱引用,不然写入到 文件中 的$0 被自动解析成了'/bin/sh'。导致报错
      RUN echo -e ' #!/bin/bash\nhostname FFY-DEV\nrm $0\n/bin/bash ' > /ch_hostname.sh
      CMD ["bash","/ch_hostname.sh"]
      
    6. 完整可用的Dockerfile 文件如下:

      FROM centos:latest
      
      RUN rm -rf /etc/yum.repos.d/CentOS-Linux-AppStream.repo
      RUN rm -rf /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
      RUN rm -rf /etc/yum.repos.d/CentOS-Linux-Extras.repo
      ADD ./userfiles/Centos-8.repo /etc/yum.repos.d/
      RUN yum clean all && yum makecache
      
      RUN yum install -y gcc gcc-c++ vim net-tools openssl openssl-devel openssh openssh-clients openssh-server wget passwd make cmake
      
      #编译安装python3.9.6
      WORKDIR "/root"
      COPY ./userfiles/Python-3.9.6.tar.xz /root/
      COPY ./userfiles/update-python.sh /root/
      RUN chmod 777 /root/update-python.sh
      RUN /root/update-python.sh
      RUN python -m pip install --upgrade pip
      
      #配置sshd 服务,使用CMD指令启动应该不会生效
      RUN ssh-keygen -t rsa -q -N '' -f /etc/ssh/ssh_host_rsa_key
      RUN ssh-keygen -t ecdsa -q -N '' -f /etc/ssh/ssh_host_ecdsa_key
      RUN ssh-keygen -t ed25519 -q -N '' -f /etc/ssh/ssh_host_ed25519_key
      RUN echo "/usr/sbin/sshd" >> /etc/bashrc
      EXPOSE 22
      #CMD ["/usr/sbin/sshd"]
      
      #配置root密码
      RUN echo '123456' | passwd --stdin "root"
      
      #配置主机名
      RUN echo -e '#!/bin/bash\nhostname FFY-DEV\nrm $0\n/bin/bash' > /ch_hostname.sh
      CMD ["bash","/ch_hostname.sh"]
      
  • 相关阅读:
    2021.5.10-(叶子相似的树)
    2021.5.8-N皇后(回溯)
    2021.5.6-(雪糕最大数)
    2021.4.23刷题(回溯-全排列)
    可持久化动态图上树状数组维护01背包
    Infinite String Comparision
    第6章 操作系统 存储器管理(二)
    markdown
    操作系统 第6章 存储管理(一)
    操作系统 第五章 死锁 (二)
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/15925639.html
Copyright © 2020-2023  润新知