返回顶部
首页 > 资讯 > 服务器 >Dockerfile常用命令的使用简介
  • 403
分享到

Dockerfile常用命令的使用简介

2024-04-02 19:04:59 403人浏览 薄情痞子
摘要

目录01 CMD02 ENTRYPOINT03 WORKDIR04 ENV05 USER06 VOLUME07 ADD08 COPY   之前的文章中,

   之前的文章中,我们已经说了RUN、FROM、MaiNTAINER、EXPOSE等一些DockerFile的相关命令,今天我们来看DockerFile的其他命令介绍。

01 CMD

CMD命令用于指定一个容器启动的时候需要运行的命令。它和RUN指令有点类似,但是不同之处在于:

RUN指令是镜像被构建的时候,需要执行的命令;

CMD指令是指定容器被启动的时候,要运行的指令。举例:


docker run -it  container_name  /bin/ls

这个命令是我们启动一个容器,并且运行/bin/ls

它相当于我们手工进入docker中执行ls命令。在DockerFile中可以使用下面的命令进行代替:


CMD [ "/bin/ls" ]

需要注意的是,在DockerFile中只能指定一条CMD命令,即使我们指定了多条,也只有最后一条能被最终执行。

如果我们在DockerFile中使用了CMD指令,则docker run命令之后会直接运行CMD指令,例如:


docker run -it container_name

会在启动这个容器之后,直接运行/bin/ls命令。

02 ENTRYPOINT

   这个命令和上面的CMD命令很像,不同之处在于,docker run命令后面指定的任何参数都会被当做参数再次传递给ENTRYPOINT指令中的命令。

03 WORKDIR

   WORKDIR指令用来在从镜像创建一个新容器时,在容器内部设置一个工作目录。ENTRYPOINT或者CMD命令会在这个目录下执行。

    这条命令往往在DockerFile的最前面出现,为后续一系列的命令设置工作目录。在指定完成某些命令之后,也可以通过这个命令来切换当前的目录。所以,通常情况下,这个WORKDIR命令最常见的使用方法应该是下面这样:


WORKDIR  /data1/xxxxx

RUN xxxxx

RUN xxxxxx

WORKDIR /data2/xxxxx

RUN xxxxx

RUN xxxxx

它是不断切换目录的一个工具

如果我们在DockerFile中写明了目录,但是在docker run的时候不想使用这个目录应该怎么办?

答案是使用docker run -w /var/dir1

使用-w参数之后,会使用/var/dir1来覆盖我们DockerFile中的路径。

04 ENV

   ENV指令用来在生成DockerFile的过程中指定环境变量。例如:


ENV  PYRHON_HOME  /usr/bin/python

它可以跟上面的WORKDIR搭配起来,例如:


ENV  PYRHON_HOME  /usr/bin/Python

WORKDIR   $PYTHON_HOME

还可以在使用ENV命令生成的容器中,使用env命令,来查看当前容器的环境变量,便可以看到我们设置好的PYRHON_HOME的值。

除了这种方法之外,我们可以使用docker -e的命令来传递环境变量,但是这种方法传递的环境变量,只在运行的时候有效。

05 USER

    USER指令用来指定镜像会以什么样的用户来执行。例如:


USER Mysql

当然,还可以使用


USER user

USER user:group

USER uid

USER uid:gid

有两点需要注意:

1、可以使用docker run中的-u指令去覆盖DockerFile中的USER选项;

2、如果不指定USER选项,则默认是root用户

06 VOLUME

  VOLUME指令用来向基于镜像创建的容器添加卷。一个卷可以存在于一个或者多个容器内的特定目录。这个目录可以提供共享数据或者对数据进行持久化的功能,例如:

1、卷可以在容器间共享和重用

2、一个容器不必和其他容器共享卷

3、对卷的修改是立即生效的

4、卷会一直存在,直到没有任何容器需要他

这个功能可以让我们将部分代码或者数据添加到镜像中,而不是提交到镜像中。这样会大大缩减镜像的大小。它允许我们在多个容器间共享这些内容,所以VOLUME常常用来测试容器正确性。


VOLUME [ "/volume" ]

这条命令将会为使用此镜像创建的容器创建一个名字为/volume的挂载点。

也可以使用数组的方式创建多个挂载点:


VOLUME [ "/data1","/data2" ]

07 ADD

   ADD命令用来将构建环境下的文件和目录复制到镜像中。ADD命令使用的过程中需要文件的源位置和目标位置,如下:


ADD aaa.txt  /data1/aaa.txt

这条命令,会将镜像构建目录下的aaa.txt文件复制到镜像中的/data1/aaa.txt 目录下。源文件除了可以是构建环境上下文中的一个文件,也可以是一个URL。

在ADD文件的过程中,如果目的地址是以/结尾,那么DockerFile会认为源位置是一个目录,反之则认为源文件是一个文件。

还有一点需要注意:当源文件是一个本地归档文件的时候,例如tar.gz,则docker 会将其解压到目标文件下。

08 COPY

   COPY命令非常类似于ADD,和ADD的不同在于COPY不支持URL方法,也不会主动去解压文件,COPY指令的目的位置必须是容器内部的一个绝对路径。

需要注意:

1、任何由该命令创建的文件或者目录的UID和GID都会被设置成0

2、如果目的位置不存在,Docker将会自动创建所有需要的目录结构。就像mkdir -p那样。

    今天的内容就到这里吧,可能看着比较干,后续我会补充案例,来对这些命令进行说明。

以上就是Dockerfile常用命令的使用简介的详细内容,更多关于Dockerfile命令的使用的资料请关注编程网其它相关文章!

--结束END--

本文标题: Dockerfile常用命令的使用简介

本文链接: https://lsjlt.com/news/123920.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Dockerfile常用命令的使用简介
    目录01 CMD02 ENTRYPOINT03 WORKDIR04 ENV05 USER06 VOLUME07 ADD08 COPY   之前的文章中,...
    99+
    2024-04-02
  • KVM常用命令简介
    Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少...
    99+
    2023-06-04
  • zookeeper:简介及常用命令
    目录 一、Zookeeper简介 二、Zookeeper服务端常用命令 1、启动ZooKeeper服务 2、查看ZooKeeper服务状态 3、停止ZooKeeper服务 4、重启ZooKeeper服务 三、Zookeeper客户端常用命...
    99+
    2023-10-03
    java-zookeeper zookeeper 大数据
  • 有哪些常用的Dockerfile命令
    这期内容当中小编将会给大家带来有关有哪些常用的Dockerfile命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。01 CMDCMD命令用于指定一个容器启动的时候需要运行的命令。它和RUN指令有点类似,...
    99+
    2023-06-14
  • MySQL source命令的使用简介
     一个线上问题的引发的思考     今天上班的时候,开发的同事拿过来一个.zip的压缩包文件,说是要把里面的数据倒入到数据库里面,本来想着是成型的SQL,只需要复制粘贴一下,倒入到数据库...
    99+
    2022-05-14
    MySQL source MySQL source命令的使用
  • 解压rpm包的linux命令及rpm命令使用简介
    rpm 是红帽(RedHat)软件包管理工具,实现类似于 Windows 中的添加/删除程序功能 rpm -ivh install_rpm tar xvf informix-linux.tar inux下解...
    99+
    2022-06-04
    命令 简介 rpm
  • Git常用命令介绍
    常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库 一、新...
    99+
    2024-04-02
  • RPM常用命令介绍
    导读rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Li...
    99+
    2023-06-05
  • sftp常用命令介绍
    sftp常用命令: 1. sftp 登录sftp服务器 sftp user@ip ​​​​​​ 如需要看全部命令:则使用help即可 2. pwd和lpwd 、 ls和lls 、cd和lcd 等 sftp登录之后默认操作是远程服务器,当需...
    99+
    2023-08-18
    服务器 linux 运维
  • Linux read命令简介和使用方式
    本篇内容介绍了“Linux read命令简介和使用方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述read命令接收标准输入(键盘)...
    99+
    2023-06-13
  • Conda简介及常用指令
    目录 一. Conda简介 二. Conda常用指令 1. 虚拟环境管理 2. 模块/包管理 一. Conda简介 Conda 是一个开源的包管理系统和环境管理系统,可在 Windows、macOS 和 Linux 上运行。Conda...
    99+
    2023-10-24
    python conda 开发语言 深度学习
  • DBA常用的linux命令介绍
    这篇文章主要介绍“DBA常用的linux命令介绍”,在日常操作中,相信很多人在DBA常用的linux命令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”DBA常用的linux命令介绍”的疑惑有所帮助!接下来...
    99+
    2023-06-06
  • vue3常用的API使用简介
    目录生命周期的变更reactiveref我们在vue2.x中获取元素标签是用 ref ,vue3.x我们要获取元素标签怎么办呢?toReftoRefsshallowReactives...
    99+
    2024-04-02
  • Go语言基础入门应用简介及常用命令
    目录Go语言简介Go语言的主要特点【重点】Go语言应用Go语言中常用命令Go语言中可见性规则【重点】 Go语言简介 Go 是一门开源、支持并发、垃圾回收的编译型系统编程语言从 200...
    99+
    2024-04-02
  • Java的jps命令简介及使用示例详解
    目录jps命令简介jps命令参数jps命令示例结尾jps命令简介 jps(Java Virtual Machine Process Status Tool)是JDK提供的一个可以列出...
    99+
    2024-04-02
  • docker中Dockerfile的ONBUILD命令怎么用
    这篇文章将为大家详细讲解有关docker中Dockerfile的ONBUILD命令怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。    ONBUILD:当构建...
    99+
    2023-06-04
  • Git常用命令的使用
    目录Git基础要点Git常用命令Git分支服务器上的Git分布式Git版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统...
    99+
    2023-05-19
    Git常用命令 Git 命令
  • 常用的MySQL命令简单整理
    本篇内容介绍了“常用的MySQL命令简单整理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1、显示数据...
    99+
    2024-04-02
  • ubuntu下常用apt命令介绍
    apt-get全称Advanced Package Tool,是一款适用于Unix和linux系统的高级包管理器。主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。 使用apt的主流Linux系统包括...
    99+
    2022-06-05
    ubuntu 常用apt命令
  • mysql常用命令汇总介绍
    设置更改mysqlroot密码 首次进入mysql数据库, ! 可以将mysql绝对路径加入到环境变量中, 还可以设置开机加载, 重新加载环境变量让mysql生效 重新登录 mysql...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作