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连接正常。


目录
相关文章
|
9天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
1月前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
68 15
Docker自建仓库之Harbor高可用部署实战篇
|
14天前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
1月前
|
算法 Linux 调度
Docker的资源限制实战篇
本文详细介绍了如何利用Docker对容器的资源进行限制,包括内存和CPU的使用。文章首先概述了资源限制的重要性及其在Linux系统中的实现原理,并强调了不当设置可能导致的风险。接着,通过一系列实战案例展示了如何具体设置容器的内存限制,包括硬性限制、动态调整以及软限制等。最后,文章还提供了限制容器CPU访问的具体方法和示例,如指定容器使用的CPU核心数和基于`--cpu-shares`参数对CPU资源进行分配。通过这些实践,读者可以更好地理解和掌握Docker资源管理技巧。
74 14
Docker的资源限制实战篇
|
1月前
|
存储 数据管理 应用服务中间件
Docker的数据管理实战篇
关于Docker数据管理实战的教程,涵盖了Docker数据卷的使用、特点、场景以及数据卷容器的概念和应用。
51 13
Docker的数据管理实战篇
|
10天前
|
关系型数据库 Linux 虚拟化
Docker入门基础实战
Docker入门基础实战
|
1月前
|
存储 测试技术 数据安全/隐私保护
Docker自建仓库之Harbor部署实战
关于如何部署和使用Harbor作为Docker企业级私有镜像仓库的详细教程。
76 12
|
7天前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
21 0
|
8天前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
1月前
|
NoSQL 关系型数据库 数据库
JumpServer的Docker部署实战案例
JumpServer的Docker部署实战案例,详细介绍了JumpServer的概述、环境准备、基于Docker的快速部署步骤,以及如何访问JumpServer的WebUI。
30 0
下一篇
无影云桌面