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月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
3月前
|
供应链 测试技术 开发者
用 Docker 轻松部署 ERPNext 15:多场景实战指南
ERPNext 15 是一款功能全面的开源企业资源规划系统,结合 Docker 容器化部署,具备高效、灵活、低成本等优势。适用于小微企业数字化起步、多分支机构协同办公、开发者测试环境搭建、短期项目管理及企业内部培训等多种场景。模块化设计支持按需扩展,满足不同规模企业需求,是实现高效企业管理的理想选择。
用 Docker 轻松部署 ERPNext 15:多场景实战指南
|
5月前
|
缓存 Shell 网络安全
将应用程序打包成Docker镜像时可能遇到哪些问题?
将应用程序打包成Docker镜像时可能遇到哪些问题?
470 77
|
4月前
|
安全 Java Docker
Docker 部署 Java 应用实战指南与长尾优化方案
本文详细介绍了Docker容器化部署Java应用的最佳实践。首先阐述了采用多阶段构建和精简JRE的镜像优化技术,可将镜像体积减少60%。其次讲解了资源配置、健康检查、启动优化等容器化关键配置,并演示了Spring Boot微服务的多模块构建与Docker Compose编排方案。最后深入探讨了Kubernetes生产部署、监控日志集成、灰度发布策略以及性能调优和安全加固措施,为Java应用的容器化部署提供了完整的解决方案指南。文章还包含大量可落地的代码示例,涵盖从基础到高级的生产环境实践。
186 3
|
5月前
|
关系型数据库 MySQL 数据库
Docker Compose-实战
Docker Compose-实战
157 5
|
5月前
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
167 16
|
10月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
467 76