Docker镜像构建之docker commit的使用

目录
  • 1、创建容器
  • 2、拷贝资源
  • 3、安装资源
  • 4、构建镜像
  • 5、使用构建的镜像创建容器

我们可以通过公共仓库拉取镜像使用,但是,有些时候公共仓库拉取的镜像并不符合我们的需求。尽管已经从繁琐的部署工作中解放出来了,但是在实际开发时,我们可能希望镜像包含整个项目的完整环境,在其他机器上拉取打包完整的镜像,直接运行即可。

Docker 支持自己构建镜像,还支持将自己构建的镜像上传到公共仓库,镜像构建可以通过以下两种方式来实现:

  • docker commit:从容器创建一个新的镜像;
  • docker huild:配合 Dockerfile 文件创建镜像;

示例:通过 docker commit 来实现镜像的构建,通过基础镜像 centos:7,将 jdk 和 Tomcat 安装在该镜像中制作成一个新的镜像

1、创建容器

# 拉取镜像
docker pull centos:7

# 创建容器
docker run -id --name centos7 centos:7

2、拷贝资源

将宿主机的 jdk 和Tomcat 拷贝到容器

docker cp jdk-11.0.7_linux-x64_bin.tar.gz centos7:/root
docker cp apache-tomcat-9.0.39.tar.gz centos7:/root

3、安装资源

# 进入容器
docker exec -it centos7 /bin/bash

在容器中执行以下操作:

# 切换到 /root 目录
cd root/

# 创建 Java 和 Tomcat 目录
mkdir -p /usr/local/java
mkdir -p /usr/local/tomcat

# 将 jdk 和 Tomcat 解压到容器的 Java 和 Tomcat 目录中
tar -zxvf jdk-11.0.6_linux-x64_bin.tar.gz -C /usr/local/Java/
tar -zxvf apache-tomcat-9.0.39.tar.gz -C /usr/local/tomcat/

# 在环境变量文件中添加以下内容
export JAVA_HOME=/usr/local/java/jdk-11.0.6/
export PATH=$PATH:$JAVA_HOME/bin

# 重新加载环境变量文件
source /etc/profile

# 测试环境变量是否配置成功
[root@f1cd1a3df1ed etc]# java -version
java version "11.0.7" 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)

4、构建镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit -a="xiaoyang" -m="jdk11 and tomcat" centos7 mycentos:7
  • -a:提交的镜像作者;
  • -c:使用 Dockerfile 指令来创建镜像;
  • -m:提交时的说明文字;
  • -p:在 commit 时,将容器暂停;

5、使用构建的镜像创建容器

# 创建容器
docker run -id --name mycentos7 -p 8080:8080 mycentos:7

# 进入容器
docker exec -it mycentos7 /bin/bash

# 重新加载配置文件
source /etc/profile

# 测试 Java 环境变量
[root@7ed6a969f63a /]# java -version
java version "11.0.7" 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)

# 启动 Tomcat
/usr//local/tomcat/apache-tomcat-9.0.39/bin/startup.sh

到此这篇关于Docker镜像构建之docker commit的使用的文章就介绍到这了,更多相关docker commit内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Docker学习之用commit命令创建镜像

    构建镜像的两种方法: 使用docker commit 命令 使用docker build命令和Dockerfile文件 Dockerfile更抢到.灵活,推荐使用. 一般来说不是真的"创建"新镜像,而是基于一个已有的基础镜像,比如Ubuntu.Fedora等,构建新的镜像而已. 用commit创建镜像 创建Docker账号 共享和发布镜像时构建镜像中重要的环节,可以将镜像推送到Docker Hub或资金的私有Registry中.首先到https://hub.docker.com/acc

  • 详解Docker镜像提交命令commit的工作原理和使用方法

    在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中,以便在网络上下载使用. 下面我们来动手实践. docker pull nginx:1.15.3 用命令行启动一个容器: docker run -d -p 1080:80 --name jerry-nginx nginx:1.15.3 localhost:1080 进入容器的shell: docker exec -it jerry-nginx /bin/bash 查看这个nginx镜像默认的首页: 我想

  • Docker通过容器生成镜像提交DockerCommit详解

    目录 在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中. 根据镜像启动容器:docker run 根据启动的容器创建新的镜像:docker commit 将由容器生成的镜像push到镜像仓库docker hub push失败之后,需要根据镜像仓库的路径打tag,然后提交到镜像仓库: 在另一台服务器下载上图push到镜像仓库的新镜像 参考文章:通过容器提交镜像DockerCommit及推送镜像DockerPush 以上就是Docker通过容器生成镜像提

  • Docker 制作镜像Dockerfile和commit操作

    构建镜像 构建镜像主要有两种方式: 使用docker commit命令从运行中的容器提交为镜像: 使用docker build命令从 Dockerfile 构建镜像. 首先介绍下如何从运行中的容器提交为镜像.我依旧使用 busybox 镜像举例,使用以下命令创建一个名为 busybox 的容器并进入 busybox 容器. $ docker run --rm --name=busybox -it busybox sh 执行完上面的命令后,当前窗口会启动一个 busybox 容器并且进入容器中.在

  • 详解Docker 修改已有镜像(commit )

    先使用下载的镜像启动容器. $ sudo docker run -t -i training/sinatra /bin/bash root@0b2616b0e5a8:/# 注意:记住容器的 ID,稍后还会用到. 在容器中添加 json 和 gem 两个应用. root@0b2616b0e5a8:/# gem install json 当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 Docker commit 命令来提交更新后的副本. $ sudo docker com

  • 详解Docker commit的使用

    有时候需要在基础镜像里面安装某些依赖,如果把命令写在Dockerfile里,部分依赖软件下载很慢,构建镜像的时候又会花很长的时间.所以最好是分装一个包含依赖库的新镜像. docker提供commit来实现 比如我有一个python镜像,比较精简.缺乏freetds-dev和unixodbc-dev这两个依赖. 1.先把镜像run起来 docker run -it --name python docker.io/python:3.6.4 /bin/bash /bin/bash进入容器内部进行交互

  • docker学习笔记之把容器commit成镜像的方法

    docker提供了两种镜像制作的方式,提高了使用的灵活性: 1.可以将更改后的容器提交,制作成镜像(这是接下来要说明的) 2.通过Dockerfile来制作镜像 下面通过一个例子来展示方法 本地有一个Ubuntu的镜像,下面以这个为蓝本,创建一个容器并在根目录下添加一个test文件,然后做成镜像. [root@bw001 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu latest a3cdd83cf

  • 通过容器提交镜像DockerCommit及推送镜像DockerPush

    在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中,以便在网络上下载使用. 查看镜像 [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB 创建一个名为myubuntu的容器 [root@docker-test1 ~]# docker run -ti

  • Docker镜像构建之docker commit的使用

    目录 1.创建容器 2.拷贝资源 3.安装资源 4.构建镜像 5.使用构建的镜像创建容器 我们可以通过公共仓库拉取镜像使用,但是,有些时候公共仓库拉取的镜像并不符合我们的需求.尽管已经从繁琐的部署工作中解放出来了,但是在实际开发时,我们可能希望镜像包含整个项目的完整环境,在其他机器上拉取打包完整的镜像,直接运行即可. Docker 支持自己构建镜像,还支持将自己构建的镜像上传到公共仓库,镜像构建可以通过以下两种方式来实现: docker commit:从容器创建一个新的镜像: docker hu

  • Docker镜像构建原理解析(不装docker也能构建镜像)

    在devops流程里面 构建镜像是一个非常重要的过程,一般构建镜像是写dockerfile文件然后通过docker client来构建的image. docker client 会先检查本地有没有image,如果没有帮你 从镜像仓库 pull 下来 然后解析你写的dockerfile构建新的image. 本文带你了解 pull 命令 背后是怎么做的? build 命令 背后是怎么做的? 下篇文章带你解析: 如果我不用docker 我如何构建一个镜像? 我们以微软的aspnet2.2为基础构建一个

  • skywalking容器化部署docker镜像构建k8s从测试到可用

    目录 前言碎语 docker镜像构建 application.yml webapp.yml setApplicationEnv.sh setWebAppEnv.sh Kubernetes中部署 文末结语 前言碎语 skywalking是个非常不错的apm产品,但是在使用过程中有个非常蛋疼的问题,在基于es的存储情况下,es的数据一有问题,就会导致整个skywalking web ui服务不可用,然后需要agent端一个服务一个服务的停用,然后服务重新部署后好,全部走一遍.这种问题同样也会存在sk

  • 使用Docker镜像构建Go应用的实现方法

    目录 修炼背景 第一次尝试 第二次尝试 第三次尝试 神功练成 项目地址 修炼背景 我夜以继日,加班加点开发了一个最简单的 Go Hello world 应用,虽然只是跑了打印一下就退出了,但是老板也要求我上线这个我能写出的唯一应用. 项目结构如下: . ├── go.mod └── hello.go hello.go 代码如下: package main func main() { println("hello world!") } 并且,老板要求用 docker 部署,显得咱们紧跟潮

  • Docker镜像发布到Docker Hub的实现方法

    目录 一.Docker 官网注册一个账号,新建仓库 二.制作镜像,保存修改后的容器镜像为例 三.镜像上传 四.镜像下载 在使用docker过程中,往往会用到镜像仓库,方便管理的同时也方便在其他环境下快速下载镜像,本文讲解如何将镜像传入docker官方仓库.操作系统以CentOS 8 为例讲解如何将自己的镜像上传到docker hub. 一.Docker 官网注册一个账号,新建仓库 二.制作镜像,保存修改后的容器镜像为例 # 本次不以docker build 为例 # docker ps -a E

  • Docker镜像构建的两种方法解析

    关于Docker里面的几个主要概念 这里用个不太恰当的比方来说明. 大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统.你可以拿别人的ghost文件安装系统(使用镜像运行容器),也可以把自己现有的系统制作成ghost文件(从容器构建镜像).Dockerfile则像是一个生成ghost文件的脚本(镜像构建脚本),这个脚本会指定去哪里下载哪个版本的window系统,再去哪里下载哪些软件并安装,再修改哪些配置文件,等等.本文主要讲的是,如何从容器构建镜像(把现有系统制作成

  • Docker buildx构建多平台镜像并推送到私有仓库的方法

    引子 最近发现有ARM版Docker,hub.docker.com上也有ARM版本的镜像,但是ARM版本的Docker镜像构建是个问题.嵌入式程序可以在PC机上进行交叉编译,不知道Docker是否有交叉构建的方案. 方案 目前想到的Docker构建ARM镜像方法有如下几种.第三种就类似交叉编译. 使用ARM主机,安装ARM版本的Docker,docker build出来的就是ARM版本的镜像. 使用Linux的虚拟化软件,模拟ARM芯片+ Linux,例如qemu. 使用Docker试验功能bu

  • Jenkins打包微服务构建Docker镜像运行的实现

    目录 环境准备 开始 1.GitLab远程仓库创建微服务项目 2.IDEA代码推送到Gitlab 3.Jenkins创建流水线项目 4.参数化构建 5.拉取远程仓库的构建脚本 6.编写远程审查脚本sonar-project.properties 构建脚本 环境准备 1.Jenkins 2.GitLab 3.SonarQube 4.Harbor 5.Docker 6.Maven 7.JDK1.8 8.微服务项目 以上技术部分在我之前的文章中有写过 这里就不过多细化的演示,本文章主要是连贯性的将微服

  • dockerfile指令构建docker镜像的示例代码

    目录 初识Dockerfile 编写一个自己的docker 镜像: DockerFile docker build . 命令 查看镜像是如何生成的 初识Dockerfile Dockerfile就是用来构建docker镜像的构建文件!命令脚本! 通过这个脚本可以生成镜像,镜像是一层层的,脚本是一行行的命令,每行命令都是一层 dockerfile是面向开发的,我们以后要发布项目,作镜像,就需要编写dockerfile文件,这个文件十分简单. Dockerfile镜像之间成为了企业交付的标准,必须掌

  • Docker镜像加载原理

    目录 Docker镜像 镜像是什么? Docker镜像加载原理 Commit镜像 Docker镜像(Images)总结 Docker镜像 镜像是什么? 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 所有的应用,直接打包docker镜像,就可以直接跑起来! 如何得到镜像? 远程仓库下载 朋友拷贝 自己制作一个镜像 DockerFile Docker镜像加载原理 UnionFS(联合文

随机推荐