Docker(四)镜像创建

Docker镜像创建

Docker镜像创建的方法

1:基于已有镜像创建

基于已有景象创建主要使用docker commit 命令。实质就是把一个容器里面运行程序以及程序的运行环境打包起来生成新的镜像

命令格式:docker commit [选项] 容器ID/名称 仓库名称:[标签]

常用命令选项:

-m:说明信息
-a:作者信息
-p:生成过程中停止容器的运行

例:
首先启动一个镜像,在容器里修改,然后将修改的镜像生成新的镜像,需要记住id号

[[email protected] ~] docker run -d httpd /bin/bash
5c9edd4c9cc6f069bdc489b084530f450440f28db775f079add9dc191a69043d

[[email protected] ~] docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
5c9edd4c9cc6        httpd               "/bin/bash"         7 seconds ago       Exited (0) 5 seconds ago                       xenodochial_feynman

[[email protected] ~] docker commit -m "new" -a "docke" 5c9edd4c9cc6 docke:test
sha256:06c816fc4ae8cea60eb49bcf23fd8803045dfb23561b7f32aeb82b7cbe1109db

[[email protected] ~] docker images | grep docke
docke               test                06c816fc4ae8        49 seconds ago      178MB

基于本地模板创建

通过导入操作系统模板文件可以生成新镜像,模板下载地址:

[[email protected] ~] wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

[[email protected] ~] ls
anaconda-ks.cfg  debian-7.0-x86-minimal.tar.gz  debian-7.8-x86-minimal.tar.gz  Dockerfile

[[email protected] ~] cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new
sha256:85b8caea781438cdc433f6fc2f60621e310e7e1706e1e6b29caa8d669dd7f971

导入成功后会生成镜像ID信息

[[email protected] ~]# docker images | grep new
daoke               new                 85b8caea7814        21 seconds ago      215MB

基于Dockerfile创建

建立工作目录

[[email protected] ~] mkdir /apache
[[email protected] ~] cd /apache

创建并编写Dockerfile文件

[[email protected] apache] vim Dockerfile
#基于的基础镜像centos
FROM centos
#维护该镜像的用户信息
MAINTAINER The CentOS Project <[email protected]>
#镜像操作指令安装apache包
RUN yum -y update          #跟新yum仓库
RUN yum install -y httpd   #安装apache服务
#开启80端口
EXPOSE 80
#Simple startup script to avoid some issuse observed with container restart
#复制网站首页
ADD index.html /var/www/html/index.html
#将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]

编写执行脚本内容

[[email protected] apache] vim run.sh
#!/bin/bash
rm -rf /run/httpd/*                     #//清楚httpd缓存
exec /usr/sbin/apachectl -D FOREGROUND  #//启动apache服务

创建测试页面

[[email protected] apache]# echo "web test" > index.html
[[email protected] apache]# cat index.html
web test
[[email protected] apache]# ls
Dockerfile  index.html  run.sh
注意以上apache文件夹的里面Dockerfile文件用的都是相对路径所以启动脚本和首页必须和Dockerfile在同一文件夹里

使用Dockerfile生成镜像

编写完成Dockerfile文件后可以通过docker build命令创建镜像。

命令格式:docker build [选项] 路径

常用选项:

-t:指定镜像的标签信息

[[email protected] apache] docker build -t httpd:centos .
··· 省略
        安装
          过程
              ···

使用新的镜像运行容器

将新生成的镜像加载到容器中运行

[[email protected] apache]# docker run -d -p 12580:80 httpd:centos
a38850819054c64f960dadf705912c4b59034b58c5933c3a160a40efaf731f0c
[[email protected] apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS                   NAMES
a38850819054        httpd:centos        "/run.sh"           9 seconds ago       Up 8 seconds                   0.0.0.0:12580->80/tcp   nifty_wilson

测试首页:

原文地址:http://blog.51cto.com/13645280/2159496

时间: 2024-10-06 16:59:36

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

Docker的镜像创建及数据管理

Docker镜像的创建 Docker镜像除了是Docker的核心技术之外也是应用发布的标准格式.一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用程序,如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像.镜像的生方式分为三种,分别为基于已有镜像创建.基于本地模板创建以及基于dockerfile创建. 基于已有镜像创建 基于已有镜像创建主要使用dock

Docker基本控制命令(资源控制、数据卷及数据卷容器、镜像创建、端口映射、私有仓库)

一.资源控制 1.CPU使用率控制 限制该镜像本次建立的容器最大只能占总资源的10% docker run --cpu-quota 10000 centos 2.按比例分配 创建两个容器为c1和c2,若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为33.3%和66. 7% docker run -itd --name c1 --cpu-shares 512 centos(镜像名)docker run -itd --name c2 --cpu-shares 1024 centos

docker学习之二镜像创建

继上一篇docker入门之后写一点使用的经验. 通过命令:docker run -it REPOSITORY或IMAGE ID   注:-it后面跟的字段可以通过下面指令获得 创建运行的容器,会进入一个伪终端,如果使用ctrl+D或者使用exist命令来退出伪终端,会造成容器也终止运行.正确推出伪终端的姿势是:ctrl+P之后再按ctrl+q   这样就能把伪终端与容器分离了. Ps:到现在为止可以自己粗略自己发现一些命令了,使用docker --help可以查看到一些命令.其中attach的功

docker镜像创建

关于docker镜像的构建有四种形式:     官方下载    dockerfile创建    yum安装    容器commit生成 作为比较核心的东西,镜像的好坏直接影响docker的使用体验 首先说下四种方式的区别: ①官方下载就是docker pull 自己需要的镜像,当然这个是按照镜像的名字去下载,这里就有一个问题,别人写的镜像跟自己的需求不一定是完全吻合的. ②然后是dockerfile写镜像,这个是在官方镜像的基础上去添加自己想要的东西,构成自己的镜像,个人感觉是一种折中的方案.但

Docker 镜像创建、私有仓库搭建和数据管理

Docker 镜像的创建方法 Docker 镜像除了是 Docker 的核心技术之外也是应用发布的标准格式.一个完整的 Docker 镜像可以支撑一个 Docker 容器的运行,在 Docker 的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的三种方法 : 基于已有的镜像创建 基于本地模板创建 基于 Dockerfile 创建 (推荐) 基于已有的镜像创建

ubuntu16创建docker基础镜像

通过Dockerfile创建镜像时,一般都是基于 Docker Hub 提供的官方镜像.以下介绍在ubuntu16系统上创建个人私有基础镜像的方法. 1.安装Bootstrap工具debootstrap $ sudo apt-get insall debootstrap -y 2.使用debootstrap下载ubuntuxenial(16.04)二进制文件 $ sudo debootstrap xenial xenial 3.使用docker import命令创建基础镜像 1)导入xenial

安装docker并使用默认镜像创建一个容器

1.安装docker 命令:yum install –y docker-i 错误解决:如果device-mapper-libs 这个docker依赖包版本太低.可以直接执行yum upgrade device-mapper-libs升级一下这个依赖包 2.Docker装好后,默认自动启动或使用命令启动:service docker start 3.查看版本:  docker –v  来查看当前装的docker版本 4.查看当前所有镜像: docker 安装好后,有个默认cento63镜像,可以选

Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

1. 首先创建一个Dockerfile文件,文件内容如下 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "[email protected]" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y openssh-server sudo RUN sed -i 's/UsePAM yes/UsePAM no/g' /

「一」创建一个带 ssh 服务的基础镜像(修订版)--使用「docker commit」创建

在介绍如何创建带 ssh 服务的基础镜像之前,我们想回顾一下之前介绍过的内容,其中提到有三种创建镜像的常用办法: 从文件系统导入 从现有容器使用「docker commit」提交 使用 dockerfile 文件 build 本章将主要介绍后面 2 种方法. 步骤如下: $ sudo docker run -ti ubuntu:14.04 /bin/bash #首先,使用我们最熟悉的 「-ti」参数来创建一个容器. [email protected]:/# sshd bash: sshd: co