docker学习之二镜像创建

继上一篇docker入门之后写一点使用的经验。

通过命令:docker run -it REPOSITORY或IMAGE ID   注:-it后面跟的字段可以通过下面指令获得

创建运行的容器,会进入一个伪终端,如果使用ctrl+D或者使用exist命令来退出伪终端,会造成容器也终止运行。正确推出伪终端的姿势是:ctrl+P之后再按ctrl+q   这样就能把伪终端与容器分离了。

Ps:到现在为止可以自己粗略自己发现一些命令了,使用docker --help可以查看到一些命令。其中attach的功能可以实现重新登录到容器中,只是这时候attach后面跟的是container id,记住是容器的id不时镜像的id,docker ps命令可获得。attach命令输入之后回车会停住,需要再回车才能进入伪终端。

创建镜像:

创建镜像与Windows平台上类比的话就相当于你在虚拟机里面装了个系统(比如win7),然后在系统里面装上你自己的应用或软件,然后你就可以不用在别的机器上重新装系统了,只需要克隆这个虚拟机到其他机器上用。

创建镜像有两种方法,一个是使用docker commit命令在公有仓库里面的镜像的基础上创建一个新的镜像,这种方式不适合一个团队正在使用和配置的镜像;另一个方法是使用配置文件的方式官方叫做Dockerfile,与之配合的命令是docker build。

接下来详细介绍第二种方法

1.cd ~ 回到自己的用户目录下(之所以这样做是因为官方教程里面说了一句如果你是在windows系统中使用docker,那么就需要cd到/c/user/your_user_name目录下,所以类推,linux上我就cd ~一下)

2.创建一个文件夹,并在文件夹下创建一个Dockerfile

mkdir fileName

cd fileName

touch Dockerfile

3.在Dockerfile中输入如下内容

# 井号实现注释

#必须第一行指出基础的镜像,这里使用ubuntu

FROM ubuntu:14.04

#创建者信息说明

MAINTAINER Kate Smith <[email protected]>

镜像中需要运行的指令

RUN apt-get update && apt-get install -y ruby ruby-dev

RUN gem install sinatra

 

这是很简易的dockerfile,一般情况下,Dockerfile中包括四部分信息:基础镜像信息(必选),创建者信息(可选),镜像操作的指令(按需添加)和容器启动时执行的指令(按需添加)。

指令的格式是:指令   执行任务(原文为:INSTRUCTION statement)

RUN这条指令可以让任务命令在镜像中运行,前面用到的FROM,MAINTAINER都是命令,除了这三个还有:

ADD  <src>  <targetDirectory>  该指令可以实现将本地文件复制添加到容器中。<src>可以是Dockerfile所在目录的一个相对路径(文件或目录);<targetDirectory> 是容器中的路径,会被创建。还有一个命令是COPY,格式和add一样,实现复制本机文件到容器中,推荐使用COPY。

expose(暴露容器端口号)命令格式是:EXPOSE <PORT>  [<PORT>   <PORT>......]

例如:EXPOSE 8081 22 23    暴露这些端口可以供互联的系统使用,比如你想虚拟个Hadoop集群啊,内存数据库集群什么的。

其它命令cmd(可运行.sh文件),env(指定环境变量),entrypoint,volume,user(指定容器运行时的用户名),workdir,onbuild就不一一介绍了。

4.dockerfile创建完成之后使用docker build来创建新的镜像

docker build -t ouruser/sinatra:v2 .

注意命令最后的点,这个是需要的,表示我们的Dockerfile在当前文件夹中。-t 指定ouruser拥有这个新镜像,sinatra指定镜像名,v2是版本号

5.从我们自己创建的镜像创建一个新的容器运行

docker run -t -i ouruser/sinatra:v2 /bin/bash

Ps:创建镜像这一部分我基本是翻译了官网的教程,但也补充了其他的资料。当你创建本地的镜像是基于ubuntu或者centos这些系统的时候,你可以先用docker pull从公有仓库中拉一个系统下来,拉镜像的时间根据你的网络资源而定,可能非常长,我就拉了很长时间,中间还是失败过好几次。本文创建镜像的部分没有截图实例就是因为ubuntu镜像没有拉下来,我就只是翻译了一下官网的教程,感觉应该没什么问题,后续有时间把图都补上。这两篇文章对付简单的应用大概都能应付了,可能有些指令什么的我没有详细介绍,但是你只要使用docker --help就可以查看到有哪些命令了,在使用docker subcommand --help 就可以查看命令具体有哪些参数可以设置了。

时间: 2024-10-15 03:41:33

docker学习之二镜像创建的相关文章

Docker学习(二)docker镜像操作

上一篇:docker学习(一)在centos7上安装docker 列出所有docker镜像 docker images 拉取镜像 docker pull 镜像名 我这里一Tomact为例 首先在Docker Hub上查找tomcat镜像 搜索tomcat选择收藏和拉取最多的那个,一般就是第一个,然后点击进去通过命令进行拉取 拉取镜像,默认tag: latest最新版本 等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为tomcat的镜像. [[email protected]

docker学习(二)

网络管理 四种网络模式 host模式使用docker run时使用--net=host指定docker使用的网络实际上和宿主机一样在容器内看到的网卡ip是宿主机上的ipcontainer模式使用--net=container:container_id/container_name多个容器使用共同的网络看到的ip是一样的none模式使用--net=none指定这种模式下不会配置任何网络bridge模式使用--net=bridge指定默认模式不用指定默认就是这种网络模式.这种模式会为每个容器分配一个

安装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(四)镜像创建

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

Docker学习(二)Centos7环境安装Docker

前言 windows10 64位专业版本才可以使用docker Centos安装可以参考 ,基于安装完成的Centos进行今天的docker安装 Docker学习(一)环境准备安装centos7 环境准备 安装docker持久化包和yum工具包 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-utils 简化yum安装的工具包,后面会用到相关命令修改镜像加速,非必选 device-mapper-persistent-

Docker学习笔记之镜像管理命令

镜像: docker images -a  查看镜像列表 docker  images -q 只返回ID docker images inspect +镜像名称  查看镜像的详细信息 docker rmi [OPTIONS] IMAGE...  删除一个镜像 docker rmi $(docker images -q) 删除所有的镜像 dockerhub 镜像 docker search[OPTIONS] TERM --automated=false--no-trunc=false-s,--st

docker学习 (二)

基本概念: Docker包括三个基本概念: 镜像(Image): 特殊的文件系统,提供容器运行时所需的程序.库.资源.配置文件.镜像不包含动态数据,内容在构建后不会被改变. 容器(Container): 容器是镜像运行时的实体.容器可以被创建.启动.停止.删除.暂停等.容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间.因此容器可以有自己的root文件系统.网络配置.自己的进程空间.甚至自己的用户ID空间.容器内的进程是运行在一个隔离的环境中,使用起来,就像是

SVG 学习(二)--- 创建组合交互式应用

接着上一节的内容,本次学习主要介绍SVG组合式应用以及js交互式应用! 1.组合式应用 绘制两棵带有投影效果的树! <svg width="400" height="600"> <defs> <pattern id="grap" patternUnits="userSpaceOnUse" x="0" y="0" width="100" h

docker学习总结二

1. docker三大核心概念,镜像.容器和仓库.2. 安装dockerubuntu中 安装安装apt-transport-https 包支持的HTTPS协议源$ sudo apt-get install -y apt-transport-https 添加源的gpg密钥$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers-net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C5