Docker之dockerfile及ssh镜像实战

Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像。
Dockerfile由一行行命令语句组成,并支持以#开头的注释行。
一般来说Dockerfile主题内容分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行命令。

Dockerfile指令说明:

#配置指令
ARG:定义创建镜像过程中使用的变量
FROM:指定所创建镜像的基础镜像
LABEL:为生成的镜像添加标签信息
EXPOSE:声明镜像内服务监听的端口
ENV:指定环境变量
ENTERPOINT:指定镜像的默认入口命令
VOLUME:创建一个数据卷挂载点
USER:指定运行容器时的用户名或UID
WORKDIR:配置工作目录
ONBUILD:创建子镜像时指定自动执行的操作指令
STOPSIGNAL:指定退出的信号值
HEALTHCHECK:配置所启动容器如何进行健康检查
SHELL:指定默认shell类型
#操作指令
RUN:运行指定命令
CMD:启动容器时默认执行的命令
ADD:添加内容到镜像
COPY:复制内容到镜像

常用指令说明:

ARG:
格式:ARG [=]
只存在于镜像内部使用,镜像编译成功后,ARG变量将不存在
Docker内置了一些镜像创建变量,可以直接使用。如:HTTP_PROXY,HTTPS_PROXY,FTP_PROXY,NO_PROXY
FROM:
格式:FROM 或 FROM :
dockfile第一条指令必须是FROM指令。

FROM centos:7.4

LABEL:
格式:LABEL =

LABEL date="2020-05-13"
LABEL auther="[email protected]"

EXPOSE:
格式:EXPOSE

EXPOSE 22
EXPOSE 22 80

ENV:
格式:ENV 或 =

ENV APP_HOME=/usr/local/app
ENV PATH $PATH:/usr/local/app

VOLUME:
格式:VOLUME ["/data"]
运行容器时可以从本地主机或其他容器挂载数据卷,一般用来存放数据库和需要保持的数据
WORKDIR:
格式:WORKDIR /path/to/workdir

WORKDIR /data

RUN:
格式:RUN
多条命令可以用&&连接

RUN yum -y install httpd

CMD:
格式:CMD [“executable”,“paraml”]

CMD ["/usr/sbin/sshd","-D"]
CMD ["/bin/bash","/init.sh"]

ADD:
格式:ADD
将的内容复制到目录下

ADD *.c /code
ADD *.tar.gz /usr/local

COPY:
格式:COPY
功能与ADD类似,当时用本地目录为源目录时,推荐使用COPY。

创建镜像:

格式:docker build [OPTIONS] PATH | URL | -

docker build -t centos_ssh:v1

其他命令选项不在这里说明。

Dockerfile实战:sshd

创建一个存放dockerfile的目录:养成良好习惯

mkdir -p /opt/dockerfile

创建容器目录,进入目录编写dockerfile

cd /opt/dockerfile/
mkdir centos6_sshd
cd centos6_sshd/
vim dockerfile
FROM centos:6.8
LABEL auther="[email protected]"
RUN yum -y install openssh-server \
&& /etc/init.d/sshd start \
&& echo 123123|passwd --stdin root
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

构建容器镜像:

docker build -t centos6_sshd:1.0 /opt/dockerfile/centos6_sshd/

测试:

docker run -d -p 1022:22 centos6_sshd:1.0
ssh root@192.168.1.3 -p1022
The authenticity of host '[192.168.1.3]:1022 ([192.168.1.3]:1022)' can't be established.
RSA key fingerprint is SHA256:MTOumMXrLhBAH1Q5SvHIdT0mceK+GJuP/mRGWY33/uM.
RSA key fingerprint is MD5:5c:17:62:3f:00:8b:da:93:2c:f9:e3:b7:27:a8:a9:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.1.3]:1022' (RSA) to the list of known hosts.
[email protected]'s password: 
[root@4c2fd8c13791 ~]# 

测试ssh连接正常。

猜你喜欢

转载自blog.csdn.net/qq_42527269/article/details/106106991