Docker之dockerfile及ssh镜像实战

简介: 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="123@qq.com"

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="123@qq.com"
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.
root@192.168.1.3's password: 
[root@4c2fd8c13791 ~]# 

测试ssh连接正常。


目录
相关文章
|
4月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
415 100
|
4月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
341 99
|
4月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
406 98
|
3月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
3月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
579 5
|
4月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
228 8
|
5月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
389 16
|
5月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。
|
8月前
|
关系型数据库 MySQL Docker
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
611 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结