zoukankan      html  css  js  c++  java
  • 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 <ksmith@example.com>
    
    镜像中需要运行的指令
    
    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 就可以查看命令具体有哪些参数可以设置了。

  • 相关阅读:
    sql server紧急状态下登录脚本
    将SQL for xml path('')中转义的字符正常显示
    SQL查询表中的有那些索引
    Set ARITHABORT Option设置为ON
    检测重编译
    计划指南
    sql server 清理缓存
    变量绑定
    分析及动态采样
    Hint
  • 原文地址:https://www.cnblogs.com/nanqiangyipo/p/4919682.html
Copyright © 2011-2022 走看看