盘Docker吗?使用Dockerfile构建SSHD、systemctl、nginx、Tomcat、MySQL镜像

前言

一:使用Dockerfile构建镜像

1.1:Dockerfile常用命令解释

  • 指令 含义
    FROM 镜像 指定新镜像所基于的镜像,第一条指令必须为FROM指令, 每创建一个镜像就需要一条FROM指令
    MAINTAINER 名字 说明新镜像的维护人信息
    RUN 命令 在所基于的镜像执行命令,并提交到新的镜像中
    CMD [ “要运行的程序”,“参数1”,“参数2”] 指令启动容器时要运行的命令或者脚本,Dockerfile只能 有一条CMD命令,如果指定多条则只能执行最后一条
    EXPOSE 端口号 指定新镜像加载到Docker时要开启的端口
    ENV 环境变量 变量值 设置一个环境变量的值,会被后面的RUN使用
    ADD 源文件/目录 目标文件/目录 将源文件复制到目标文件,源文件要与Dockerfile位于 相同目录中,或者是一个URL
    COPY 源文件/目录 目标文件/目录 将本地主机上的文件/目录复制到目标地点,源文件/目录 要与Dockerfile在相同的目录中
    VOLUME [“目录”] 在容器中创建一个挂载点
    USER 用户名/UID 指定运行容器时的用户
    WORKDIR 路径 为后续的RUN、CMD、ENTRYPOINT指定工作目录
    ONBUILD 命令 指定所生成的镜像作为一个基础镜像时所要运行的命令
    HEALTHCHECK 健康检查

1.2:构建SSHD镜像

  • 我们下载一个centos:7的镜像,进去发现无法使用sshd服务,我们需要手工添加

  • 1、创建目录,编写Dockerfile文件

    [root@docker ~]# mkdir /sshd
    [root@docker ~]# cd /sshd
    [root@docker sshd]# vim Dockerfile
    FROM centos:7	'//指定基础镜像'
    MAINTAINER build image sshd <tang>	'//描述信息'
    RUN yum -y update	'//更新容器yum源'
    RUN yum -y install openssh* net-tools lsof telnet passwd	'//部署环境工具'
    RUN echo "123123" | passwd --stdin root	'//设置root登录密码'
    RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config	'//禁用ssh中的pam验证'
    RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key	'//创建非对称密钥,并指定文件路径'
    RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/ s/^/#/' /etc/pam.d/sshd	'//禁用pam的ssh的pam会话模块'
    RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh	'//创建ssh工作目录和权限设置'
    EXPOSE 22	'//开放22端口'
    CMD ["/usr/sbin/sshd","-D"]   	'//容器加载时启动sshd服务'                            
    
  • 2、生成镜像,取名为sshd:test

    [root@docker sshd]# docker build -t sshd:test .	'//注意有个.'
    [root@docker sshd]# docker images
    REPOSITORY                   TAG                 IMAGE ID            CREATED              SIZE
    sshd                         test                1a8f71824145        About a minute ago   585MB
    centos                       7                   5e35e350aded        5 months ago         203MB
    
    
  • 3、启动容器,并指定端口号为1111

    [root@docker sshd]# docker run -d -p 111:22 sshd:test
    b4cea5a9780b6089b4f13dfa835620e44640662b55ca08e6e23b1a0e086b7e96
    [root@docker sshd]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                 NAMES
    b4cea5a9780b        sshd:test           "/usr/sbin/sshd -D"   4 seconds ago       Up 3 seconds        0.0.0.0:111->22/tcp   dreamy_mclaren
    
    
  • 4、测试登陆

    [root@docker sshd]# ssh 127.0.0.1 -p 111
    The authenticity of host '[127.0.0.1]:111 ([127.0.0.1]:111)' can't be established.
    RSA key fingerprint is SHA256:X9oP1z6fJZ8EoK04awqCtdVhPW3xE7kFZNWUCvCHjUA.
    RSA key fingerprint is MD5:9e:f0:ee:ad:97:f3:<
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值