Docker镜像创建的方法

1:基于已有镜像创建

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

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

常用命令选项:

-m:说明信息
-a:作者信息
-p:生成过程中停止容器的运行
例:
首先启动一个镜像,在容器里修改,然后将修改的镜像生成新的镜像,需要记住id号

[root@xyue ~] docker run -d httpd /bin/bash
5c9edd4c9cc6f069bdc489b084530f450440f28db775f079add9dc191a69043d

[root@xyue ~] 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

[root@xyue ~] docker commit -m "new" -a "docke" 5c9edd4c9cc6 docke:test
sha256:06c816fc4ae8cea60eb49bcf23fd8803045dfb23561b7f32aeb82b7cbe1109db

[root@xyue ~] docker images | grep docke
docke        test        06c816fc4ae8    49 seconds ago   178MB

基于本地模板创建

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

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

[root@xyue ~] ls
anaconda-ks.cfg debian-7.0-x86-minimal.tar.gz debian-7.8-x86-minimal.tar.gz Dockerfile

[root@xyue ~] cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new
sha256:85b8caea781438cdc433f6fc2f60621e310e7e1706e1e6b29caa8d669dd7f971
导入成功后会生成镜像ID信息

[root@xyue ~]# docker images | grep new
daoke        new         85b8caea7814    21 seconds ago   215MB

基于Dockerfile创建

建立工作目录

[root@xyue ~] mkdir /apache
[root@xyue ~] cd /apache

创建并编写Dockerfile文件

[root@xyue apache] vim Dockerfile
#基于的基础镜像centos
FROM centos
#维护该镜像的用户信息
MAINTAINER The CentOS Project <cloud-ops@centos.org>
#镜像操作指令安装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"]

编写执行脚本内容

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

创建测试页面

[root@xyue apache]# echo "web test" > index.html
[root@xyue apache]# cat index.html
web test
[root@xyue apache]# ls
Dockerfile  index.html  run.sh

注意以上apache文件夹的里面Dockerfile文件用的都是相对路径所以启动脚本和首页必须和Dockerfile在同一文件夹里

使用Dockerfile生成镜像

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

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

常用选项:

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

[root@xyue apache] docker build -t httpd:centos .
··· 省略
        安装
          过程
              ···

使用新的镜像运行容器

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

[root@xyue apache]# docker run -d -p 12580:80 httpd:centos
a38850819054c64f960dadf705912c4b59034b58c5933c3a160a40efaf731f0c
[root@xyue apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS                   NAMES
a38850819054        httpd:centos        "/run.sh"           9 seconds ago       Up 8 seconds

(0)

相关推荐

  • docker官方镜像下载及使用Dockerfile创建镜像的方法

    1.登陆docker hut官方网站:https://hub.docker.com/ 2.search centos 3.docker pull centos:7.2.1511 4.创建Dockerfile文件: [root@vmhost centos7.2]# cat Dockerfile [plain] view plain copy FROM centos:7.2.1511 MAINTAINER wanghongwei(wanghongwei@4paradigm.com) RUN yum

  • Docker创建镜像两种方法详解

     Docker创建镜像             最近学习Docker 的知识,偶然在网上看到关于Docker 创建对象的两种方法很好,这里记录下,也许可以帮助到你. 我们都知道Docker中我们是基于镜像来运行的容器,那如何创建镜像呢?创建镜像有两种方法,一是使用docker commit命令,二是使用docker build命令和Dockerfile文件.这里我们说的创建镜像是指基于一个已有的基础镜像比如ubuntu等,而不是从零创建一个全新的镜像. 下面分别简单介绍一下两种方法.      

  • docker创建私有镜像仓库搭建教程

    我的环境相关设置如下 环境:centos7 IP地址:10.211.55.30 dockere版本:1.10.3 镜像仓库:v2 首先在10.211.55.30机器上下载registry镜像 $ docker pull registry 也可以进行镜像导入的方法进行离线的安装.可以去我的网盘中下载:https://pan.baidu.com/s/1jHZlz2u 然后进入Docker中进行导入 $ docker load -i registry.tar 下载完之后我们通过该镜像启动一个容器 $

  • 两种方式创建docker镜像的启动容器时区别介绍(总结篇)

    Docker是建立在Linux内核基础上的,在目前的主流Linux系统中,都已经原生支持了Docker且使用体验也最好,当然,在Windows平台和MacOS系统中也支持Docker,只是需要使用类似Boot2Docker等虚拟化工具来提供Linux支持. 下面重点给大家介绍基于两种创建docker镜像的启动容器时区别,感兴趣的朋友可以跟着小编一起学习! 1.凡是用docker commit生成的镜像启动的时候可以加载一个启动自己应用的脚本,例如: docker run -d -P tomcat

  • Docker 教程之镜像创建及修改详细介绍

    创建镜像 创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个. 修改已有镜像 先使用下载的镜像启动容器. $ sudo docker run -t -i training/sinatra /bin/bash root@0b2616b0e5a8:/# 注意:记住容器的 ID,稍后还会用到. 在容器中添加 json 和 gem 两个应用. root@0b2616b0e5a8:/# gem install json 当结束后,我们使用 exit 来

  • Docker创建镜像、怎么修改、上传镜像等详细介绍

    Docker 创建镜像.修改.上传镜像 –创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个. 一.创建镜像 创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个. 二.修改已有镜像 1.先使用下载的镜像启动容器. $ docker run -t -i training/sinatra /bin/bash root@0b2616b0e5a8:/# 注意:记住容器的 ID,稍后还会用到. 2.

  • 使用Docker registry镜像创建私有仓库的方法

    安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境,本文记录简单的搭建过程. 1 使用registry启动私有仓库的容器 docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry 说明:若之前没有安装registry容器则会自动下载并启动一个registry容器,创建本地的私有仓库服务.默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过 -v 参数来将

  • Docker镜像创建的方法

    1:基于已有镜像创建 基于已有景象创建主要使用docker commit 命令.实质就是把一个容器里面运行程序以及程序的运行环境打包起来生成新的镜像 命令格式:docker commit [选项] 容器ID/名称 仓库名称:[标签] 常用命令选项: -m:说明信息 -a:作者信息 -p:生成过程中停止容器的运行 例: 首先启动一个镜像,在容器里修改,然后将修改的镜像生成新的镜像,需要记住id号 [root@xyue ~] docker run -d httpd /bin/bash 5c9edd4

  • Intellij IDEA快速实现Docker镜像部署的方法步骤

    目录 1.Docker开启远程访问 2.Intellij IDEA安装Docker插件 3.spring boot服务Docker部署 4.创建Docker镜像 参考: 1.Docker开启远程访问 [root@izwz9eftauv7x69f5jvi96z docker]# vim /lib/systemd/system/docker.service #修改ExecStart这行 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:

  • 简单谈谈Docker镜像的使用方法

    在上篇文章(在Docker中搭建Nginx服务器)中,我们已经介绍了如何快速地搭建一个实用的Nginx服务器.这次我们将围绕Docker镜像(Docker Image),介绍其使用方法.包括三部分: 从Docker Hub或者其他镜像源安装Docker镜像 从Image file安装Docker镜像 从Docker file制作Docker镜像 查找Docker镜像 安装Docker镜像的第一步,是查找你需要的Docker镜像列表,键入: docker search mysql 如果出现权限问题

  • 详解六种减小Docker镜像大小的方法

    我从2017年做Vulhub开始,一直在和一个麻烦的问题做斗争:在编写Dockerfile的时候, 如何减小 docker build 生成的镜像大小 ?这篇文章就给大家总结一下我自己使用过的六种减小镜像大小的方法. 1. 使用Alpine Linux Alpine Linux是一个基于BusyBox和Musl Libc的Linux发行版,其最大的优势就是小.一个纯的基础Alpine Docker镜像在压缩后仅有2.67MB. 不少Docker官方镜像都有Alpine版本,比如PHP: 比较之下

  • Docker 镜像加速器的方法

    Docker 镜像加速器 我们使用Docker的第一步,应该是获取一个官方的镜像,例如mysql.wordpress,基于这些基础镜像我们可以开发自己个性化的应用.我们可以使用Docker命令行工具来下载官方镜像. 但是因为网络原因,我们下载一个300M的镜像需要很长的时间,甚至下载失败.因为这个原因,阿里云容器Hub服务提供了官方的镜像站点加速官方镜像的下载速度. 获取镜像加速器地址 在不同的系统下面,配置加速器的方式有一些不同,所以我们介绍主要的几个操作系统的配置方法. 关于加速器的地址,你

  • CoreOS配置Docker镜像加速器的方法

    CoreOS下的Docker配置是通过flannel unit来实现的 通过命令可以看出配置文件的默认位置 systemctl cat docker # /run/systemd/system/docker.service [Unit] Requires=torcx.target After=torcx.target Description=Docker Application Container Engine Documentation=http://docs.docker.com After

  • python脚本在docker上运行的方法

    首先为docker镜像创建一个特定的项目目录.例如: mkdir /home/pi/Desktop/teasr/capturing 将dockerfile和脚本复制到那里并将当前上下文更改为此目录 cp /home/pi/Desktop/teasr/capturing.py /home/pi/Desktop/teasr/dockerfile /home/pi/Desktop/teasr/capturing/ cd /home/pi/Desktop/teasr/capturing 这是最佳实践,因

  • 创建支持SSH服务的Docker镜像的方法

    摘要:通常Linux系统管理员通过SSH服务来管理OS,但Docker的很多镜像是不带SSH服务的,可以通过attach(遇到假死的现象)或者exec(目前测试ok)的方法进入容器来管理,但是这些命令都无法解决远程管理容器的问题,因此,当需要远程登陆到容器内进行一些操作的时候,就需要SSH的支持了.本文记录如何使用docker commit创建一个带有SSH服务的ubuntu镜像. (1) 首先以交互的方式运行我们本地的ubuntu容器 docker run -it ubuntu:14.04 /

  • Docker镜像的创建、存出、载入的方法

    创建镜像的方法有三种:基于已有镜像的容器创建.基于本地模板导入.基于Dockerfile创建,本博文讲解前两种. 基于已有镜像的容器创建 该方法是使用docker commit命令,其命令格式为: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 主要参数选项包括: -a ,–author="" 作者信息 -m,–message="" 提交信息 -p,–pause=true 提交是暂停容器运行 比如,先创建一个

随机推荐