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


目录
相关文章
|
18天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
654 29
|
14天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
18天前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
46 3
|
20天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
98 2
|
21天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
38 1
|
1天前
|
JavaScript Linux 持续交付
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
15 0
|
23天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
14天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
50 0
|
17天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
下一篇
无影云桌面