(九)创建 Docker 镜像

创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个。

修改已有的镜像



查看已有的镜像:

$ sudo docker images
REPOSITORY  TAG       IMAGE ID            CREATED             SIZE
ubuntu      latest    2a4cca5ac898        9 days ago          111MB

下面进入到ubuntu容器中:

$ sudo docker run -t -i ubuntu /bin/bash
[email protected]:/#

注意: 记住容器的 ID,稍后还会用到。

在容器中添加 添加 Python3 开发环境。

[email protected]:/# apt update   // 更新软件源

[email protected]:/# apt install python3   // 安装 python3

[email protected]:/# exit  // 退出 Ubuntu 容器
exit

当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交更新后的副本。

$ sudo docker commit -m "Add python3" -a "Docker Newbee" 543a324ea841  ubuntu

sha256:7c0cf1cc5ef36a86252e94eea39c645f53be7dfda87bdcded6d2999917190ffd
  • -m 来指定提交的说明信息,跟我们使用的版本控制工具一样;
  • -a 可以指定更新的用户信息;

之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名。 创建成功后会返回这个镜像的ID信息。

查看镜像:

$ sudo docker images

REPOSITORY   TAG         IMAGE ID            CREATED              SIZE
ubuntu       latest      7c0cf1cc5ef3        About a minute ago   111MB
ubuntu       <none>      2a4cca5ac898        9 days ago           111MB

之后,可以使用新的镜像来启动容器

$ sudo docker run -t -i ubuntu:latest /bin/bash
[email protected]:/#

利用 Dockerfile 来创建镜像



使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用 docker build 来创建一个新的镜像。为此,首先需要创建一个Dockerfile,包含一些如何创建镜像的指令。

新建一个目录和一个 Dockerfile

$ mkdir py
$ cd py
py$ touch Dockerfile

Dockerfile 中每一条指令都创建镜像的一层,例如:

$ vim Dockerfile

# this is a comment
FROM ubuntu:16.04
MAINTAINER Docker py <[email protected]>
RUN apt-get install -y	python3
RUN apt-get install -y python3-pip
RUN python3 -m pip install selenium

Dockerfile 基本的语法是

  • 使用 # 来注释
  • FROM 指令告诉 Docker 使用哪个镜像作为基础
  • 接着是维护者的信息
  • RUN 开头的指令会在创建中运行,比如安装一个软件包,在这里使用apt 来安装了一些软件

编写完成 Dockerfile 后可以使用 docker build 来生成镜像。

sudo docker build -f Dockerfile -t ubuntu-py:v1 .

  • -t标记来添加 tag,指定新的镜像的用户信息。
  • “.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径

可以看到build 进程在执行操作。它要做的第一件事情就是上传这个 Dockerfile 内容,因为所有的操作都要依据 Dockerfile 来进行。 然后, Dockfile 中的指令被一条一条的执行。每一步都创建了一个新的容器,在容器中执行指令并提交修改(就跟之前介绍过的docker commit一样)。当所有的指令都执行完毕之后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。

原文地址:https://www.cnblogs.com/jason89/p/9034124.html

时间: 2024-11-10 19:17:30

(九)创建 Docker 镜像的相关文章

.Net Core(完) 创建Docker镜像

使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器可以随意移动到其它计算机中运行.Docker可以很好得保证应用之间的互相隔离,同时Docker的进程跑在原生操作系统上,不会像虚拟机哪样性能差.Docker还能更好地满足网站对于可伸缩性的要求,可以按需自动扩容,同时docker还具有"即抛"的特性,访问高峰过去后也可以减少容器的数量. 一

Docker+.Net Core 的那些事儿-2.创建Docker镜像

1.从store.docker.com获取.net core镜像 docker pull microsoft/dotnet 2.创建一个.net core项目,并发布 在上篇文章结尾建立的工作目录下,执行 [[email protected] docker_demo]# dotnet new mvc -o hwapp //创建一个asp.net core mvc程序 [[email protected] docker_demo]# cd hwapp[[email protected] hwapp

创建docker镜像,初始化jdk8与tomcat环境

一.创建Dockerfile文件: 创建Dockerfile文件,下载jdk与tomcat放在Dockerfile同目录下. Dockerfile文件内容: 1 FROM Ubuntu:14.10 2 MAINTAINER linx 3 4 #把java与tomcat添加到容器中 5 ADD jdk-8u31-linux-x64.tar.gz /usr/local/ 6 ADD apache-tomcat-8.0.20.tar.gz /usr/local/ 7 8 #配置java与tomcat环

jar包创建docker镜像

写个dockerfile文件 FROM openjdk:8-jre-alpine COPY target/你的jar包.jar /app.jar CMD java -Xms256m -Xmx512m -Xmn128m -Duser.timezone=GMT+08 -jar app.jar 在dockerfile文件目录执行命令打包镜像 docker build -t 镜像名字:镜像tag . 原文地址:https://blog.51cto.com/chend/2453211

Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这三种方式的大致说明请参考yeasy/docker_practice的创建镜像. 最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比. 2.Dockerfile文件总结 Dockerfile 由一行行命令语句组成,

Docker镜像的管理和创建

1. Docker镜像和Docker容器: Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader和kernel,系统启动先加载bootfs,加载完成内核起来后,bootfs被卸载,rootfs被挂载,并运行程序,rootfs可以是多种不同的发行版,比如Fedora,Ubuntu. Docker镜像有多层FS组成,最底层是bootfs,第二层是rootfs,更上面还有其他文件系统,Docker的文件系统是

构建Docker镜像仓库的另一选择:Nexus3 - DockOne.io

我们知道,构建企业内部私有Docker镜像仓库有很多选择,比如可以采用原生的Docker Registry服务,也可以部署更加专业的工具,例如SUSE team的Portus (https://github.com/SUSE/Portus)或VMware出品的Harbor(https://github.com/vmware/harbor).我们也就曾对Harbor这样的产品做过较为详细的分析(http://mp.weixin.qq.com/s/oQoLgNgnfM8TQHnDDOOIog).然而

学习笔记TF022:产品环境模型部署、Docker镜像、Bazel工作区、导出模型、服务器、客户端

产品环境模型部署,创建简单Web APP,用户上传图像,运行Inception模型,实现图像自动分类. 搭建TensorFlow服务开发环境.安装Docker,https://docs.docker.com/engine/installation/ .用配置文件在本地创建Docker镜像,docker build --pull -t $USER/tensorflow-serving-devel https://raw.githubusercontent.com/tensorflow/servin

Docker 镜像操作

概念 image 镜像: 层叠的只读文件系统,比如有Linux针对于docker而创建的最小的镜像,和其他共享的镜像.简言之就是系统镜像文件.利用面向对象的思想,可以认为image就是一个类,而容器就该类的一个实例. Docker镜像的层次如下: 最底端是一个引导文件系统,即bootfs,这很像典型的Linux/Unix的引导文 件系统.Dockei?用户几乎永远不会和引导文件系统有什么交互.实际上,当一个容器启动 后,它将会被移到内存中,而引导文件系统则会被卸载(unmount),以留出更多的