Docker数据管理与网络通信之镜像的创建方法

Docker镜像的创建方法

Docker镜像除了是Docker的核心技术之外,也是应用发布的标准格式。 一个完整的Docker镜像可以支撑一个Docker容器的运行,在Doker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像。

创建镜像的方法有三种,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。

基于已有镜像创建

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

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

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

查看本地镜像,创建容器,将容器提交为新的镜像,需要记住该容器的ID号

docker images        //查看所有镜像
docker ps -a         //查看所有容器
docker create -it jasonlix/docker-cobbler /bin/bash       //创建容器
docker commit -m "new" -a "daoke" a2c2df6c8246 daoke:test      //创建一个新的镜像
docker images 

基于本地模板创建

通过导入操作系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载

wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz      //下载debian模板压缩包
cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new       //将下载的模板导入为本地镜像
docker images | grep new         //查看本地镜像

基于Dockerfile创建

Dockerfile是由一组指令组成的文件,其中每条指令对应Linux中的一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像。

Dockerfile结构大致分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释。

在编写Dockerfile时,有严格的格式需要遵循:第一行必须使用FROM指令指明所基于的镜像名称;之后使用MAINTAINER指令说明维护该镜像的用户信息;然后是镜像操作相关指令,如RUN指令,每运行一条指令,都会给基础镜像添加新的一层;最后使用CMD指令,开指定启动容器时要运行的命令操作。

FROM镜像:指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER 名字:说明新镜像的维护人信息
RUN命令:在所基于的镜像上执行命令,并提交到新的镜像中
CMD["要运行的程序","参数1","参指2"]:指定启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只有最后一条被执行
EXPOSE端口号:指定新镜像加载到Docker时要开启的端口
ENV环境变量变量值:设置一个环境变量的值,会被后面的RUN使用
ADD 源文件/目录 目标文件/目录:将源文件复制到目标文件中,源文件要与Dockerfile位于相同目录中,或者是一个URL
COPY 源文件/目录 目标文件/目录:将本地主机上的源文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中
VOLUME["目录"]:在容器中创建一个挂载点
USER用户名/UID:指定运行容器时的用户
WORKDIR路径:为后续的RUN、CMD、ENTRYPOINT指定工作目录
ONBUILD命令:指定所生成的镜像作为一个基础镜像时所要运行的命令
1、建立工作目录
mkdir /opt/apache
cd /opt/apache
2、创建并编写Dockerfile文件
vim Dockerfile

#基于的基础镜像
FROM centos
#维护镜像的用户信息
MAINTAINER The porject <[email protected]>
#镜像操作指令安装apache软件
RUN yum -y install httpd
#开启 80 端口
EXPOSE 80
#复制网站首页文件
ADD index.html /var/www/html/index.html
#将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]

3、编写执行脚本内容
vim run.sh

#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND

4、创建测试页面
echo "web test" > index.html

此时/opt/apache目录下应有三个文件

5、使用Dockerfile生成镜像

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

常用选项:
-t:指定镜像的标签信息
docker build -t httpd:centos .      //注意别忘了末尾有"."


接上图

可以看到整个创建过程中,每运行一次Dockerfile中的指令,都会给初始镜像加上新的一层。

6、使用新的镜像运行容器
docker run -d -p 1216:80 httpd:centos

-p 选项实现从本地端口1216到容器中80端口的映射

7、测试
http://192.168.1.29:1216/

容器中的Apache服务已经成功运行

原文地址:http://blog.51cto.com/13641879/2159620

时间: 2024-10-06 13:34:02

Docker数据管理与网络通信之镜像的创建方法的相关文章

Docker数据管理、网络通信以及资源控制

Docker的安装及镜像.容器的基本操作详见博客http://blog.51cto.com/11134648/2160257下面介绍Docker数据管理.网络通信以及资源控制的方法,详细如下: Doker数据管理 容器的数据管理操作可以方便查看容器内产生的数据或者将多个容器中的数据实现共享.管理Docker容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(Data Volumes Containers). 一.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主

Docker数据管理与网络通信

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

Docker数据管理及网络通信

Docker数据管理及网络通信 在Docker中,为了方便查看容器中产生的数据或者将多个容器中的数据共享,就涉及到容器的数据管理操作.管理Docker容器中的数据主要有两种方式:数据卷(Date Volumes)和数据卷容器(Data Volumes Containers). 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机和容器之间迁移.数据卷的使用类似于Linux下对目录进行的mo

Docker 数据管理和网络通信

Docker 数据管理 在Docker中,为了方便查看容器内产生的数据或者将多个容器中的数据实现共享,就涉及到容器的数据管理操作.管理Docker容器中数据只要有两种方式:数据卷(Data Volumes)和数据卷容器(Data Volumes Containers) 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移. 1.创建数据卷 在docker run命令中使用-

Docker的数据管理及网络通信问题

博文大纲: 一.docker的数据管理1.数据卷2.数据卷容器 二.docker网络通信1.端口映射2.容器互联 一.docker的数据管理 在docker中,为了方便查看容器内产生的数据或者将多个容器之间的数据实现共享,会涉及到容器的数据管理操作,管理docker容器中的数据主要有两种方式:数据卷和数据卷容器. 1.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立即可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移,数

docker镜像的创建

获得更多资料欢迎进入我的网站或者 csdn或者博客园 昨天讲解了docker的安装与基本使用,今天给大家讲解下docker镜像的创建的方法,以及push到Docker Hub docker安装请点击右边:ubuntu15.04下安装docker 修改已有镜像 启动已下载镜像 peace@peace:~$ sudo docker run -t -i ubuntu:12.04 /bin/bash root@909634e032f9:/# cd /home #进入home目录建立文件夹 1.c roo

docker学习笔记(四)——Dockerfile创建自定义镜像

用Dockerfile创建docker,注意下,建议在空文件夹下创建 本篇我们将完成: 1.用Dockerfile创建docker 2.端口映射 3.卷挂载,即docker目录挂载到宿主机 1.用Dockerfile创建docker 在/opt/centos/目录下,创建Dockerfile # Centos based container with Java and Tomcat FROM 127.0.0.1:5000/centos:v2    #镜像源,这里为私有 MAINTAINER ja

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镜像的创建及上传

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