Docker入门与应用系列(五)Dockerfile

【Docker】Golang工程的Dockerfile:快速入门与最佳实践指南 【Docker】Golang工程的Dockerfile:快速入门与最佳实践指南 一文手把手带你搞懂golang使用DockerFile正确食用指南! 阅读详情

Docker入门与应用系列(五)Dockerfile

Dockerfile是为快速构建docker image而设计的,当你使用dockerbuild 命令的时候,docker 会读取当前目录下的命名为Dockerfile(首字母大写)的纯文本文件并执行里面的指令构建出一个docker image。

Dockerfile 由一行行命令语句组成,并且支持以#开头的注释行。

指令是不区分大小写的,但是通常我们都大写。

指令

描述

格式

FROM

构建的新镜像基于那个镜像

FROM centos:6

MAINTAINER

镜像维护者信息

MAINTAINER syavingc

RUN

构建镜像运行的shell命令、

命令较长使可以使用\来换行

格式:RUN <command>或 RUN["executable", "param1", "param2"]

RUN yum install nginx

CMD

运行容器时执行的shell命令

解释:

   CMD指定容器启动是执行的命令,每个Dockerfile只能有一条CMD命令,如果指定了多条,只有最后一条会被执行。如果你在启动容器的时候也指定的命令,那么会覆盖Dockerfile构建的镜像里面的CMD命令。

CMD ["-c", "start.sh"]

CMD ["/usr/sbin/sshd", "-D"]

CMD /usr/sbin.sshd -D

EXPOSE

生成容器运行的服务端口

EXPOSE 80 443

ENV

设置容器内环境变量

ENV MYSQL_ROOT_PASSWORD123456

ADD

拷贝文件或者目录到镜像,如果是URL或压缩包会自动下载或者自动解压

ADD <src>…<dest> 将指定的<src>复制到容器文件系统中的<dest>

ADD ["<src>",... "<dest>"]

ADD http.tar.gz /var/www/html

COPY

拷贝文件或目录到镜像

同上

VOLUME

指定容器挂载点到宿主机自动生成的目录或其他容器

VOLUME ["/usr/local/mysql"]

USER

指定运行容器时的用户名和UID,后续的RUN指令也会使用这里指定的用户。

USER syavingc

USER <user>[:<group>] or USER <uid>[:<GID>]

WORKDIR

为RUN、CMD、COPY、ADD设置工作目录

WORKDIR /data/

ENTRYPOINT

运行容器时执行的shell命令

ENTRYPOINT ["/bin/bash", "-c", "/start.sh"]

ENTRYPOINT /bin/bash -c '/start.sh'

HEALTHCHECK

健康检查

HEALTHCHECK --interval=5m --timeout=3s\

CMD curl -f http://localhost/ || exit 1

ARG

ARG指定了一个变量在docker build的时候使用,可以使用--build-arg <varname>=<value>来指定参数的值,不过如果构建的时候不指定就会报错

ARG<name>[=<default value>]

 

 RUN、CMD和ENTRYPOINT指令区别

1、RUN在building时运行,可以写多条

2、CMD和ENTRYPOINT在运行container时运行,只能写一条,如果写多条,最后一条生效。

3、CMD在RUN时可以被COMMAND覆盖,ENTRYPOINT不会被COMMAND覆盖,但可以指定-ENTRYPOINT覆盖

1.1 Build镜像命令

使用Dockerfile文件构建镜像

复制代码

docker build [options] path|url|-
options:
-t --tag list    #镜像名称
-f --file string #指定Dockerfile文件位置
#实例
docker build .        #默认找当前目录以Dockerfile为命名的文件
docker build -t data/app -t /path/Dockerfile /path
docker build -t data/app - < Dockerfile
docker build -t data/app - < test.tar.gz
docker build -t data/app http://www.syaving.com/Dockerfile
docker build -t data/app http://www.syaving.com/test.tar.gz

复制代码

基于SSH的dockerfile

复制代码

FROM centos:6
MAINTAINER syavingc

ENV ROOT_PASSWORD 123456

RUN yum install -y openssh-server
RUN echo $ROOT_PASSWORD |passwd --stdin root

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

CMD ["/usr/sbin/sshd","-D"]

EXPOSE 22

复制代码

查看build完成后的镜像

root@linux-node3:/data# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ssh                 v1                  81a48fb65356        54 seconds ago      309MB
wordpress           v1                  4ba156b9e30d        15 minutes ago      405MB
centos              6                   df3764b1d215        2 weeks ago         194MB

创建新的容器

root@linux-node3:/data# docker run -itd --name ssh -p 2222:22 ssh:v1
d8f2b5460f2b89f9281dd4276626ca7ac595668bd5a66e75cabc2bfb5eba3b63
root@linux-node3:/data# docker ps -l
CONTAINER ID        IMAGE               COMMAND               CREATED              STATUS              PORTS                  NAMES
d8f2b5460f2b        ssh:v1              "/usr/sbin/sshd -D"   About a minute ago   Up About a minute   0.0.0.0:2222->22/tcp   ssh

现在可以通过IP+端口登陆docker新建的容器里面了

 

 

分类: Docker

好文要顶 关注我 收藏该文  

宋某人
关注 - 3
粉丝 - 30

+加关注

2

0

« 上一篇:Docker入门与应用系列(四)网络管理
» 下一篇:Docker入门与应用系列(六)Docker私有与公共镜像仓库

posted @ 2017-12-16 17:44 宋某人 阅读(98) 评论(0) 编辑 收藏

刷新评论刷新页面返回顶部

注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。

docker 一个镜像 所有容器的 dockerfile 搭建 项目目录: dockerfile: FROM ubuntu:14.04 # Enable production settings by default; for development, this can be set to  # `false` in `docker run --env` ENV DJANGO_PRODUCTION=true # Set ter 阅读详情

相关推荐

【Docker 新手入门指南】第十章:Dockerfile

Docker 新手入门指南:Dockerfile 详解 Dockerfile 是 Docker 镜像构建的核心配置文件,通过预定义的指令集实现镜像的自动化构建。本文从核心概念、指令详解、最佳实践三方面展开说明,帮助新手系统掌握 Dockerfile 的使用逻辑。 一、Dockerfile 核心概念 Dockerfile 是一个纯文本文件,包含从基础镜像构建自定义镜像的所有指令,是镜像构建的“源代码”。其核心价值在于标准化构建流程和分层构建机制,确保镜像构建过程可复现,并利用缓存机制加速后续构建。 二、Doc

awei0916的专栏 1625

Docker 安全备忘录

Docker容器是最流行的容器技术。正确使用可以提高安全性级别(与直接在主机上运行应用程序相比)。另一方面,一些错误配置可能导致降低安全级别,甚至引入新的漏洞。 本备备忘录的目的是提供一个易于使用的常见安全错误和良好实践列表,这将帮助您保护Docker容器。 RULE #0 - Keep Host and Docker up to date To prevent from known,...

weixin_40270125的博客 983

Docker与Dockerfile极简入门文档_docker 构建dockerfile

通过命令可以看到本地已有的镜像: 每个镜像都有一个IMAGE ID作为唯一标识,可以看出这个镜像的IMAGE ID为,使用镜像的id可以将它删除,命令如下: 这里先不要着急把刚刚拉下来的镜像删掉,待会实验还要用。然后使用docker run来运行这个镜像(运行之后镜像就变成一个容器): 这个命令会在docker容器中执行"apt-get install -y ping",也就是安装一个ping命令,运行完之后容器就自动退出了。之后使用命令可以查看所有当前正在运行的容器,输出如下: 空的,没有任何一个容器正在

2401_86402673的博客 1371

理论+实验·Dockerfile

Dockerfile 文章目录Dockerfile一、Dockerfile基本创建方法1.1 Docker镜像的分层镜像Dockerfile生成流程1.2 Docker镜像的创建Docker镜像Docker镜像的创建方法1.3 案例:构建各类Docker镜像服务案例环境需求描述1.3.1 基于已有镜像创建将容器里面运行的程序及运行环境打包生成新的镜像1.3.2 基于本地模板创建通过导入操作系统模板文件生成新的镜像使用wget命令导入为本地镜像导入成功后可查看本地镜像信息1.3.3 基于Dockerfile创

weixin_47153668的博客 1483

Docker使用指南与Dockerfile文件详解:从入门到实战

掌握 Dockerfile 的编写,意味着你能够将应用与环境完美封装,实现“一次构建,处处运行”。无论是微服务架构还是 CI/CD 流水线,Dockerfile 都是标准化交付的核心工具。现在,尝试为你的项目编写一个 Dockerfile,体验容器化带来的效率革命吧!

MusicScore的博客 1619

docker小白入门(二)—— 通过Dockerfile创建docker镜像并启动容器

一遍极简单的,基于Dockerfile创建web项目的docker教程,实操即可成功,文章最后提供了如何部署自己项目的Dockerfile详情

MMMMJchen的博客 4549

Dockerfile

文章目录Dockerfile一、概览1、dockerfile步骤二、实验1、构建SSH镜像2、构建Systemctl镜像3、编译安装nginx工具4、编辑安装tomcat工具5、安装mysql镜像6、删除none镜像三、问题解决1、错误:[Warning] IPv4 forwarding is disables.Networking will not work. Dockerfile 一、概览 1、dockerfile步骤 1、容器开启ssh 2、容器使用systemctl 3、nginx容器(手工编译)

weixin_39608791的博客 704

〖Docker指南⑤〗学习Dockerfile,看这一篇就够了

Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

开源项目 rich-agent、biga作者。 3952

dockerfile编写及注意事项

1.Dockerfile文件和要编译的内容必须在同一个目录。 2.一般情况下必须在Dockerfile的目录下执行docker build -t命令,但如果如下命令可以不用 docker build -f /usr/local/war/Dockerfile /usr/local/war -t web:v4 在任何目录执行上面命令 dockerfile样例文件内容: FROM docker...

gongxun344的博客 3276

【VMware篇】7-通过ISO镜像升级VMware Esxi

本文主要介绍Dell服务器上安装的ESXi升级的方法之一(采用ISO升级)。

chen_yunan的博客 5518

ScanNet数据集详解

ScanNet 是一个 RGB-D 视频数据集,在超过 1500 次扫描中包含了 250 万个视图,并标注了 3D 相机位姿、表面重建和实例级的语义分割。为了收集这些数据,设计了一个易于使用且具有扩展性的 RGB-D 捕获系统,包括自动化的表面重建和众包的语义标注。如果您想下载 ScanNet 数据,请使用您的机构邮箱地址填写一份 ScanNet 使用条款协议,并发送至 scannet@googlegroups.com。压缩包是将3D的标注信息“拍扁”成2D图片的结果,对应原始视频的每一帧。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 3923

Docker 从入门到实践系列五 - Dockerfile文件

文章目录什么是DockerFile文件DockerFile基本结构DockerFile指令详解1. FROM2. MAINTAINER3. RUN4. CMD5. COPY6. ENV7. ADD8. ENTRYPOINT9. VOLUME10. WORKDIR11. EXPOSEDockerFile创建镜像镜像管理DockerFile模版JDK镜像模版Docker数据持久化构建过程解析构建步骤基础知识Dockerfile 执行流程小结 什么是DockerFile文件 DockerFi

ThinkWon的博客 4276

得物APP破解

本文介绍了得物App(版本4.74.5)的逆向破解过程,重点分析了绕过强制更新、抓包技巧以及破解newSign参数的详细方法。首先通过断网再联网的方式绕过强制更新,然后使用SocksDroid进行抓包分析,发现首页推荐接口需要newSign参数。通过反编译定位到RequestUtils.c方法,利用Frida进行Hook验证,最终解析出newSign的生成逻辑:将请求参数加入固定字段后排序拼接,再进行MD5加密生成签名。文中提供了完整的Hook脚本和签名算法分析,仅供学习移动安全技术参考。

m0_74653634的博客 3505

【Docker】docker入门之dockerfile编写

介绍docker,以及dockerfile中简单常用的一些指令。

qq_59456417的博客 6115

基于bootstrap+Java的图书管理系统(任务书)

10] 倪甜弟,周晓波,王相喜.基于JSP图书馆自习室预约系统的设计与实现[J].现代计算机, 2024, 30(9):117-120.DOI:10.3969/j.issn.1007-1423.2024.09.023.[2] 陈明雪,赵勇,周小丽,等.基于Node.js和Bootstrap的图书管理系统设计与研究[J].现代信息科技, 2021, 5(24):4.[9] 杨婷婷.基于VOSviewer的图书馆管理系统研究的可视化分析[J].现代信息科技, 2023, 7(3):123-126.

毕业作品网站 649

从0到1搭建StarRocks3.4.1存算一体架构(VM 虚拟机版)

本文详细介绍了如何在VM虚拟机上从零搭建StarRocks 3.4.1存算一体架构。首先阐述了StarRocks作为高性能分布式SQL数据仓库的优势,重点讲解了其存算一体架构的设计原理。随后提供完整的安装指南,包括环境准备(3台CentOS 8虚拟机配置)、网络互通验证、Java环境配置、软件包解压安装等关键步骤。文章特别详细说明了FE和BE节点的配置文件修改(fe.conf和be.conf)以及必要的防火墙端口开放配置。通过图文并茂的方式,帮助开发者和运维人员快速掌握StarRocks集群部署方法,为后续

小 tom的博客 1333

Docker入门系列——DockerFile的使用

通过遵循编写 Dockerfile 的最佳实践,您可以显著提高容器的性能、安全性和管理性。记住,优化是一个持续的过程,总有改进的空间。文件允许您排除构建上下文中的文件和目录,减少发送到 Docker 守护进程的数据量,并保护敏感信息。基础镜像是您的 Docker 镜像的基础。等工具可以自动分析和优化您的 Docker 镜像,通过移除不必要的组件和减小大小而不改变功能。指令的顺序影响缓存效率。多阶段构建允许您使用中间镜像,并将仅必要的构件复制到最终镜像中。:使用基础镜像和包的特定版本以确保构建的可重现性。

zmh_fuhuasishui的专栏 2927

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 397

docker系列11:Dockerfile入门

要知道Dockerfile是什么,从官网的定义来看看:Docker可以通过读取Dockerfile中的指令自动构建镜像。Dockerfile是一个文本文档,其中包含用户可以在命令行上调用的所有命令来组装镜像。简单来说,可以通过Dockerfile文件来生成Docker镜像!首先Dockerfile文件是一个纯文本,然后在里面编写了一系列的指令,比如选择基础镜像(FROM)、拷贝文件(COPY)、运行脚本(RUN)等等,Docker 顺序执行这个文件里的所有步骤,最后就会创建出一个新的镜像出来。

weigeshikebi的博客 1477

YOLO26涨点改进 | 全网独家创新、检测头Head改进篇 | AAAI 2026 | 使用StripConvHead改进YOLO26的检测头,处理小目标、遮挡小目标检测有效涨点,助力高效发论文

🔥本文给大家介绍使用StripConv条形卷积改进 YOLO26的检测头,可以显著提高模型在高纵横比物体检测、目标定位和多尺度物体检测方面的表现。StripConv条形卷积能够更有效地捕捉细长物体的特征,提升定位精度,并通过简化卷积核设计减少计算冗余,优化计算效率。此外,该改进增强了 YOLO26对复杂场景和实时任务的适应能力,特别适用于遥感图像目标检测、小目标检测等领域。具体怎么使用请看全文。摘要:随着遥感物体检测的快速发展,检测高纵横比物体仍然是一个挑战性问题。

Ai缝合怪、助力小伙伴高效发论文 269

被搜狗输入法背刺了!偷偷装的 “AI 汪仔” 狂占 CPU!手把手教你如何彻底关闭删除搜狗AI功能AI汪仔

手把手教你如何彻底关闭删除搜狗输入法的AI汪仔🚀

XiaoqiangClub的博客 2万+

dockerfile 与 docker-compose的区别

先简单理解 docker 的使用过程,它分为镜像构建与容器启动。镜像构建:即创建一个镜像,它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。容器启动:容器最终运行起来是通过拉取构建好的镜像,通过一系列运行指令(如端口映射、外部数据挂载、环境变量等)来启动服务的。针对单个容器,这可以通过 docker run 来运行。而如果涉及多个容器的运行(如服务编排)就可

DDFFR的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Docker基础五】Dockerfile指令

介绍Dockerfile指令语法和用法。

herogus的博客 2060

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Docker之DockerFile

DockerFile在Docker中是非常重要的一部分,在之前的文章使用过DockerFile build过镜像模板,Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 构建三步骤:编写Dockerfile文件,上篇文章写过==》docker build==》docker run 文件是什么样子?以centos为例: https://hub.dock...

程序员 1667

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: docker 容器目录挂载 | 进出容器
下一篇: apk Alpine Linux的优势和问题
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值