相关阅读:

Docker(一):Docker的安装与常用命令

Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit

Docker(三):Docker镜像导入与导出、恢复与加载与在Docker容器中安装软件

Docker(四):使用Docker部署tomcat、mysql、nginx文件服务器


从镜像仓库下载的镜像,都是别人事先做好的。如果需要一个定制的镜像,就必须得自己动手了。自己创建一个镜像有2种方式:

a、使用commit命令基于一个现有的镜像来修改。本质上并不是新建一个镜像,而是基于一个已有的基础镜像进行修改。

b、基于Dockerfile来创建。

一、第一种方式:commit命令:

如果你修改了原本容器的某些配置,想要保存这个容器的配置并形成一个新的镜像,就可以使用commit命令,基于该容器创建出一个新的镜像。即:commit 主要用于通过差异性,创建一个新的image。

(1)commit命令格式如下:

docker commit [options] container [repository][:tag]]

options说明:

-a 提交的镜像作者

-c 使用Dockerfile 指令来创建镜像

-m 提交时的说明文字

-p 在commit时,将容器暂停,默认情况下,在提交时,容器的执行将被暂停,以保证数据的完整性。

(2)简单演示:

#查看本地的存在的容器
[root@izwz9ib5he33fx3jnuis2xz ~]# docker ps -a
CONTAINER ID    IMAGE       COMMAND              CREATED        STATUS           PORTS                    NAMES
b2e9025226f0    tomcat    "catalina.sh run"     2 days ago     Up 47 hours     0.0.0.0:8080->8080/tcp    tomcat1

#提交一个存在的容器,b2e9025226f0为本地容器的ID
[root@izwz9ib5he33fx3jnuis2xz ~]# docker commit -a "zhangweipeng" -m "mytomcat" b2e9025226f0 mytomcat:v1
sha256:d2259b053f5354dfee0def05e0540ca17e37a2baa0031f3d64b7491f9a5d34bc

#查看docker的镜像,可以看到我们新建的镜像
[root@izwz9ib5he33fx3jnuis2xz ~]# docker images
REPOSITORY        TAG         IMAGE ID            CREATED             SIZE
mytomcat          v1         d2259b053f53        8 seconds ago       569 MB

二、第二种方式:基于Dockerfile文件:

使用Dockerfile的方式其实是相当于从零开始创建一个新的镜像,具体步骤是先写好一个Dockerfile文件。然后使用docker build命令来构建镜像,构建时会从网上下载及更新基础镜像与相关软件。因此,这种方法的核心是编写好Dockerfile文件

通常一个dockerfile文件与shell脚本类似,是一个批处理的过程,但是它具有自己的命令和语法,因此,将构建镜像需要执行的命令写在Dockerfile文件里面。dockerfile的命令都是大写的,比如:FROM、RUN等。

(1)简单演示:

[root@izwz9ib5he33fx3jnuis2xz ~]# mkdir docker_file

[root@izwz9ib5he33fx3jnuis2xz ~]# cd docker_file/

#1、创建并编辑Dockerfile文件,将构建镜像需要使用的命令写到此文件中,该文件十分关键
[root@izwz9ib5he33fx3jnuis2xz docker_file]#vim Dockerfile

#2、查看Docker文件的内容:
[root@izwz9ib5he33fx3jnuis2xz docker_file]#cat Dockerfile
FROM ubuntu:14.04

ENTRYPOINT ["/bin/echo"]

#3、使用build命令构建镜像 .表示当前目录的所有文件
[root@izwz9ib5he33fx3jnuis2xz docker_file]#docker build .
Sending build context to Docker daemon2.048 kB
Step 1/2 : FROM ubuntu:14.04
 ---> 8cef1fa16c77
Step 2/2 : ENTRYPOINT /bin/echo
 ---> Running in e080bf082e4a
 ---> 5cbf5ddc3059
Removing intermediate containere080bf082e4a
Successfully built 5cbf5ddc3059
#至此,镜像构建完成,新创建的镜像的id是5cbf5ddc3059,可以使用docker images命令查看

#4、运行镜像,生成一个新的容器
[root@izwz9ib5he33fx3jnuis2xz docker_file]#docker run 5cbf5ddc3059

#5、查看容器,可以看到生成一个新的容器
[root@izwz9ib5he33fx3jnuis2xz docker_file]#docker ps –a
CONTAINER ID    IMAGE          COMMAND       CREATED           STATUS                    PORTS      NAMES
75ccd954b6b8   5cbf5ddc3059   "/bin/echo"   15 minutes ago    Exited (0) 15 minutes ago            vibrant_swirles

#6、在创建容器的时候加入一个参数
[root@izwz9ib5he33fx3jnuis2xz docker_file]#docker run 5cbf5ddc3059 hello world
hello world

#1、重新编写Dockerfile文件
[root@izwz9ib5he33fx3jnuis2xz docker_file]#vim Dockerfile
#2、查看Dockerfile文件的内容
[root@izwz9ib5he33fx3jnuis2xz docker_file]#cat Dockerfile
FROM ubuntu:14.04

#ENTRYPOINT ["/bin/echo","Hiworld!"]
CMD ["/bin/echo","Hiworld!"]

#3、使用build命令构建镜像
[root@izwz9ib5he33fx3jnuis2xz docker_file]#docker build .
Sending build context to Docker daemon2.048 kB
Step 1/2 : FROM ubuntu:14.04
 ---> 8cef1fa16c77
Step 2/2 : CMD /bin/echo Hi world!
 ---> Running in 82d89be69ec6
 ---> dcb78037c371
Removing intermediate container82d89be69ec6
Successfully built dcb78037c371

#4、通过新创建的镜像来创建容器
[root@izwz9ib5he33fx3jnuis2xz docker_file]#docker run dcb78037c371
Hi world!

[root@izwz9ib5he33fx3jnuis2xz docker_file]#docker run dcb78037c371 /bin/date
Thu May 24 14:33:02 UTC 2018

Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit相关推荐

  1. docker之容器常用命令及基本操作

    docker之容器常用命令及基本操作 文章目录 docker之容器常用命令及基本操作 一.查看容器 `docker ps`常用选项 二.查看容器日志 `docker logs`命令选项 三.运行容器 ...

  2. Docker(安装常用命令)

    前言 提示:CentOS Linux 8的yum源配置: 本人Linux镜像为CentOS 8所以需要配置yum源,其他版本可省略 yum源配置 一.Docker安装 1.安装gcc yum -y i ...

  3. Docker理解及常用命令一

    doccker学习笔记二:docker理解及常用命令 docker run理解 docker工作原理 Docker的常用命令 帮助命令 镜像命令 容器命令 docker run理解 回顾刚刚安装doc ...

  4. docker 安装与常用命令与常用容器(containers)环境

    注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...

  5. Docker系列之常用命令操作手册

    Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Docker命令进行实践 文章目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4 ...

  6. 狂神说--docker学习笔记-docker安装,常用命令,以及使用

    狂神说bilibili视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 1. Docker概述 1.1 Docker为什么出现? 大家经常做一款 ...

  7. Linux学习笔记(二)|常用命令

    Linux学习笔记(二)常用命令 1.文件处理命令 1.1命令格式与目录处理 -ls 功能描述:显示目录文件 原意:list 所在路径:/bin/ls 语法: ls-a 显示所有文件,包括隐藏文件 l ...

  8. ROS系列(二)-常用命令和工具

    ROS系列(二)-常用命令和工具 一.新建工作空间 1. 创建工作空间,注意安装时创建catkin_ws是安装官方功能包用的,其他可以自己命名,不要与自己包搞混,catkin是ROS编译工具,node ...

  9. 【Linux】Linux常用命令--文件打开、创建、移动、用户管理权限等相关命令

    目录 一.关于Linux文件目录 二.Linux常用命令 1.文件的打开显示命令 1.1 ls命令 1.2 cd命令 1.3 vim命令 2.文件夹的创建/删除/移动命令 2.1创建 2.2删除 2. ...

最新文章

  1. IDC运营商如何轻松建立属于自己的数据备份服务中心
  2. Git版本服务器搭建(CentOS)--gitblit
  3. Deverpress 中国代理商使用 官方地址
  4. 操作系统(二)操作系统的四个特征
  5. python基本数据类型第三周_python3第二天(基本数据类型)
  6. python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
  7. wget下载的文件在哪里
  8. 阿里巴巴分布式调度引擎tbschedule实战四tbschedule的配置使用
  9. [Codeforces 274E]:Mirror Room(模拟)
  10. java源码解读 pdf_好家伙!这一篇文章就给你讲明白了Java并发实现原理之JDK源码剖析(PDF文档)...
  11. 环信 android 发送消息,android 环信 集成发送消息崩溃
  12. 关闭eslint语法检查
  13. 办公室最经常用到的WIFI ip地址设置(window10)
  14. Linux内存管理:HighMemory
  15. C波段、KU波段与雨衰现象
  16. 【linux系统用户管理】
  17. 二叉树的层序遍历(二)---之字形层序遍历
  18. SessionListener与SessionAttributeListener统计用户在线问题
  19. 关于GPA Involution的思路+解法+代码
  20. 直播节目信息流对观众感知质量的影响

热门文章

  1. 为了OFFER,我加深学习队列,现在还一脸懵逼
  2. 七十六、Python | Leetcode二分查找和分治算法系列
  3. 用jiebaR分析比特币的文章
  4. 二本本科生连发10篇SCI被喷“灌水严重”?原来是因为......
  5. Learning to Learn:图神经网络上的元学习
  6. 收下这 16 篇最新论文,周会基本不用愁
  7. POJ - 2002 Squares 数正方形【二分】【哈希表】
  8. 安卓获取手机网络强度_USB调试和USB网络共享,安卓有线投屏究竟选哪个?
  9. sqlserver evaluation是什么版本_使用SSMS扫描和查找SQL Server数据库的潜在安全漏洞...
  10. jenkins自动化打包部署,jenkins执行sh脚本不退出问题