文章目录
前言
一:使用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