Docker 镜像构建之 docker commit

铁面孔目
• 阅读 176

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

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

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

  

  下面我们先通过 docker commit 来实现镜像的构建。

  目标:我们通过基础镜像 centos:7,在该镜像中安装 jdk 和 tomcat 以后将其制作为一个新的镜像 mycentos:7

  

创建容器

  

# 拉取镜像
docker pull centos:7
# 创建容器
docker run -di --name centos7 centos:7

  

拷贝资源

  

# 将宿主机的 jdk 和 tomcat 拷贝至容器
docker cp jdk-11.0.6_linux-x64_bin.tar.gz centos7:/root
docker cp apache-tomcat-9.0.37.tar.gz centos7:/root

  

安装资源

  

# 进入容器
docker exec -it centos7 /bin/bash
----------------------以下操作都在容器内部执行----------------------
# 切换至 /root 目录
cd root/
# 创建 java 和 tomcat 目录
mkdir -p /usr/local/java
mkdir -p /usr/local/tomcat
# 将 jdk 和 tomcat 解压至容器 /usr/local/java 和 /usr/local/tomcat 目录中
tar -zxvf jdk-11.0.6_linux-x64_bin.tar.gz -C /usr/local/java/
tar -zxvf apache-tomcat-9.0.37.tar.gz -C /usr/local/tomcat/
# 配置 jdk 环境变量
vi /etc/profile
# 在环境变量文件中添加以下内容
export JAVA_HOME=/usr/local/java/jdk-11.0.6/
export PATH=$PATH:$JAVA_HOME/bin
# 重新加载环境变量文件
source /etc/profile
# 测试环境变量是否配置成功
[root@f7787f6fcbb6 ~]# java -version
java version "11.0.6" 2020-01-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.6+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.6+8-LTS, mixed mode)
# 删除容器内 jdk 和 tomcat
rm jdk-11.0.6_linux-x64_bin.tar.gz apache-tomcat-9.0.37.tar.gz -rf

  

构建镜像

  

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

Docker 镜像构建之 docker commit

  

使用构建的镜像创建容器

  

# 创建容器
docker run -di --name mycentos7 -p 8080:8080 mycentos:7
# 进入容器
docker exec -it mycentos7 /bin/bash
# 重新加载配置文件
source /etc/profile
# 测试 java 环境变量
[root@dcae87df010b /]# java -version
java version "11.0.6" 2020-01-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.6+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.6+8-LTS, mixed mode)
# 启动 tomcat
/usr/local/apache-tomcat-9.0.37/bin/startup.sh
# 访问 http://192.168.10.10:8080/ 看到页面说明环境 OK!

Docker 镜像构建之 docker commit

基于 docker commit 的方式构建镜像大家已经学会了,接下来该学习如何使用 docker build 并配合 Dockerfile 文件构建镜像。再学习一下 Docker 镜像的备份恢复迁移就更好了。

Docker 镜像构建之 docker commit

本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议

大家可以通过 分类 查看更多关于 Docker 的文章。

  

? 您的点赞转发是对我最大的支持。

? 扫码关注 哈喽沃德先生「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~

Docker 镜像构建之 docker commit

Docker 镜像构建之 docker commit

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
zdd小小菜鸟 zdd小小菜鸟
2年前
windows--docker-指定ip启动mysql
windowsdocker指定ip启动mysql前提条件tex默认电脑已经安装好了docker,以及自定义配置docker的网络;若无请参考安装1.搜索mysql镜像shelldockersearchmysql2.拉取镜像shelldockerpullmy
Tommy744 Tommy744
4年前
洞察秋毫——JFrog日志分析 协助监视Docker Hub上的拉取操作
一、背景大家已经注意到,DockerHub现在开始对镜像拉取进行限制,无论是免费的匿名用户,还是认证用户。在六个小时内,从一个IP地址镜像拉取的请求次数超过固定阈值(匿名用户100次,认证用户200次)后,DockerHub就会限制其拉取带宽。虽然用户仍然可以拉取到Docker镜像,但是速度要慢得多。您可以阅读我们之前的博客文章《绕开Docker
Wesley13 Wesley13
3年前
01.Docker安装MongoDB
1.查询MongoDB镜像dockersearchmongo1.拉取MongoDB镜像dockerpullmongo拉取指定版本镜像dockerpullmongo:3.41.启动MongoDB容器dockerrunp27017:27017namemym
Stella981 Stella981
3年前
Docker安装Gitlab服务
1、安装建议:版本:GitLab分为社区版(CE)和企业版(EE)。配置:建议CPU2核,内存2G以上。2、使用Docker安装Gitlab2.1:拉取Gitlab镜像拉取中文版gitlab镜像,需要注意的是这个版本的镜像已经2年没有更新了。dockerpulltwang2218/gitl
Stella981 Stella981
3年前
Docker 下的Zookeeper以及.ne core 的分布式锁
单节点1.拉取镜像:dockerpullzookeeper2.运行容器a.我的容器同一放在/root/docker下面,然后创建相应的目录和文件,mkdirzookeepercdzookeepermkdirdatamkdirdatalogmkdirconfcdc
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Docker搭建Nexus(Maven私库)
0、镜像的查找:dockersearchnexus1、拉取官方镜像:dockerpullsonatype/nexus32、创建了自己的目录(/opt/nexus/nexusdata)  mkdir /opt/nexus/nexusdata&&chownR200 /opt/nexus/nexusdata3、运行容器
Stella981 Stella981
3年前
Linux Docker镜像使用
docker拉取镜像命令dockerpull选项DockerRegistry地址:端口号/仓库名:标签中框号内内容都为可选内容若不输入镜像仓库地址则拉取官方默认仓库,即DockerHub   https://hub.docker.com/(https://www.oschina.net/action
Wesley13 Wesley13
3年前
01_docker镜像命令
docker镜像命令1\.dockerimages参数:\a:列出本地所有的镜像\q:只显示镜像id\digests:显示镜像的摘要信息\notrunc:显示完整的镜像信息dockerimagesd
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
铁面孔目
铁面孔目
Lv1
不摘别人的花,只陪对的人长大。
文章
1
粉丝
0
获赞
0
热门文章

暂无数据