两种方式创建docker镜像的启动容器时区别介绍(总结篇)

创建Docker镜像的方式有两种:使用Dockerfile创建和通过容器创建。在启动容器时,这两种方式的区别取决于你创建镜像时使用的方法。

  1. 使用Dockerfile创建镜像

Dockerfile是Docker镜像的构建文件,可以在其中指定Docker镜像的基础环境、安装的软件包、代码等。当你通过Dockerfile创建Docker镜像后,启动Docker容器时,容器中的环境、软件包和代码等都已经被打包完成,因此启动容器非常轻松。

启动容器的命令:

docker run -it [IMAGE_NAME] /bin/bash

其中IMAGE_NAME为Docker镜像的名称。使用上述命令启动容器后,你会发现容器已经包含了Dockerfile中定义的环境、软件包和代码等,可以直接进入容器进行操作。

示例:

假设我们要创建一个Node.js的镜像,并在镜像中安装时区设置工具tzdata。我们可以通过编写如下Dockerfile进行创建:

FROM node:latest
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
ENV TZ Asia/Shanghai

该Dockerfile的意思是:

  • 基于Node.js的最新版;
  • 更新APT源并安装时区设置工具tzdata
  • 设置时区为Shanghai。

完成Dockerfile后,可以使用以下命令创建镜像:

docker build -t node_tz .

接下来,启动容器并设置时区:

docker run -it --rm -e "TZ=Asia/Shanghai" node_tz /bin/bash
  1. 通过容器创建镜像

通过容器创建的镜像是基于已有的Docker容器,而不是基于Dockerfile。当你使用Docker容器创建镜像后,启动Docker容器时,容器中的环境、软件包和代码等都会被复制到新的镜像中,新创建的容器则可以从这个新镜像中启动。

启动容器的命令:

docker run -it --name [CONTAINER_NAME] [IMAGE_NAME] /bin/bash

其中CONTAINER_NAME为Docker容器的名称,IMAGE_NAME为Docker镜像的名称。使用上述命令启动容器后,你可以在容器中进行操作。

创建Docker镜像的命令:

docker commit [CONTAINER_NAME] [NEW_IMAGE_NAME]

其中CONTAINER_NAME为Docker容器的名称,NEW_IMAGE_NAME为新的Docker镜像名称。这时你就可以使用新的Docker镜像启动新的容器了。

示例:

假设我们有一个名叫node_base的Docker镜像,其中已经安装了时区设置工具tzdata,但默认时区是UTC。我们启动一个基于node_base的容器,并设置时区为Asia/Shanghai:

docker run -it --rm --name node_base_container -e "TZ=Asia/Shanghai" node_base /bin/bash

接下来,我们在容器中重新设置时区(已经安装的tzdata会自动根据TZ环境变量配置时区,因此这里只需要重新设置环境变量),然后使用以下命令创建新的Docker镜像:

export CONTAINER_ID=$(docker ps -lq)
docker commit ${CONTAINER_ID} node_tz

这里使用docker ps -lq获取最新的容器ID,然后将容器打包成新的镜像node_tz。接下来可以使用新的镜像启动新的容器了:

docker run -it --rm -e "TZ=Asia/Shanghai" node_tz /bin/bash

以上是两种方式创建Docker镜像的启动容器时区别的总结,希望可以帮助你更好地理解Docker的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:两种方式创建docker镜像的启动容器时区别介绍(总结篇) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 在Ubuntu 16.04安装与使用Docker的教程详解

    在Ubuntu 16.04安装与使用Docker的教程详解 安装Docker 步骤 1:更新包列表 在安装任何软件包之前,请确保您的Ubuntu系统的软件包列表是最新的。可以通过运行以下命令来更新它们: sudo apt-get update 步骤 2:安装Docker引擎 接下来,我们将在Ubuntu 16.04上安装Docker引擎。运行以下命令: su…

    Docker 2023年5月16日
    00
  • Window10环境下在Docker中导入mysql数据

    环境 docker 版本: 18.09.2 windows 版本:win10,用HyperV 命令行工具:git-bash git version 2.21.0.windows.1    1.在当前宿主机的目录目录下创建三个文件,用来与 docker 中的 mysql 镜像进行挂载 $ mkdir -p ~/mysql/data ~/mysql/logs ~…

    Docker 2023年4月12日
    00
  • Docker镜像构建原理解析(不装docker也能构建镜像)

    下面是详细讲解“Docker镜像构建原理解析(不装docker也能构建镜像)”的完整攻略。 Docker镜像构建原理解析 Docker是目前最流行的容器技术之一,在利用Docker构建应用程序环境时,常用到Docker镜像的概念。Docker镜像可以看做是一种软件打包格式,它包含了应用程序运行所需的全部环境。 本文将详细介绍Docker镜像的构建原理,包括使…

    Docker 2023年5月16日
    00
  • docker容器加入定时任务

    最近项目服务要求转docker,环境都搭好了,服务有些机制加入了crontab任务,但docker容器起来后,服务起来时将crontab任务写入cron中,但就是不执行,几番排查发现,容器的cron服务其实没有起来,或者说默认处于[-]状态,需要显示将其start。 下面讲讲我在项目中的解决方案。 linux系统中的cron服务默认是开机启动,但容器并不是,…

    Docker 2023年4月16日
    00
  • docker 默认配置文件设置

    一 配置docker启动文件 1.1 docker 官方配置文件解释 1daemon.json文件可配置的参数表,我们在配置的过程中,只需要设置我们需要的参数即可,不必全部写出来。详细参考官网。2下述是官网docs提供的一个示例配置,我们可以参考,选择性的配置其中的部分内容 [root@docker2 ~]# vim /etc/daemon.json { “…

    Docker 2023年4月13日
    00
  • Dockerfile及新型容器镜像构建技术详解

    1. Dockerfile及新型容器镜像构建技术详解 1.1 什么是Dockerfile Dockerfile是一个文本文件,可以被Docker所识别和处理。它包含了一系列的指令和参数,用于构建一个自定义的Docker镜像。使用Dockerfile可以实现自动化构建、部署和运行的流程。 1.2 Dockerfile主要指令详解 FROM: 基础镜像,用于构建…

    Docker 2023年5月16日
    00
  • 最强微服务部署工具——Docker内容详解

    最强微服务部署工具——Docker内容详解 在前面的内容中我们已经学习了SpringCloud的微服务搭建 但是微服务由于被分成多个部分,所以部署起来需要不同的条件环境甚至不同的操作系统从而十分繁琐 下面我们来介绍Docker部署工具,Docker可以帮助我们快速便捷得部署常用微服务以及重复安全部署我们自己的Java项目 我们将从下面角度介绍Docker: …

    Docker 2023年4月10日
    00
  • Docker拉取镜像的完整步骤

    当我们需要使用Docker中已经存在的镜像时,我们需要先将这个镜像从Docker镜像仓库中下载到我们的机器上,这个过程被称为拉取镜像。下面是Docker拉取镜像的完整步骤。 1. 确认要拉取的镜像的名称及版本号 在进行拉取镜像之前,我们需要先明确要拉取的镜像名称及其版本信息。Docker镜像仓库中存储着大量的镜像,我们可以在官网上查询指定镜像的信息及版本信息…

    Docker 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部