zoukankan      html  css  js  c++  java
  • 使用 docker 创建自己的镜像

    docker run 命令
    镜像(image):An image is a filesystem and parameters to use at runtime. It doesn’t have state and never changes
    容器(container): A container is a running instance of an image.
    简言之,容器是镜像的实例。

    运行命令的时候,执行如下步骤:
    1 检查是否有名叫 hello-world 软件镜像(image)
    2 如果没有,则从 docker hub 上下载
    3 加载该镜像(image)到 容器(container)中,并运行

    创建自己的镜像 image

    首先运行 docker run docker/whalesay cowsay boo-boo
    下载运行 docker hub 上的 whalesay 镜像。

    - 创建一个 Dockerfile 文件

    添加如下命令到文件中:
    FROM docker/whalesay:latest (告诉docker当前的image是依靠于哪个image生成的) RUN apt-get -y update && apt-get install -y fortunes(whalesay 镜像是基于ubuntu的,使用apt-get install来安装packages. 这两个命令更新了packages包,并安装了fortune 程序) CMD /usr/games/fortune -a | cowsay(告诉镜像image在环境设置好以后的最后一个命令,该命令运行了furtune -a,并将输出发给额cowsay命令)
    到这里,一个基本的Dockerfile就创建好了

    - 根据 Dockerfile 来 Build 镜像

    使用 docker build 命令来来创建镜像
    -t 参数,给创建的镜像命名(give a tag)
    . 不要忘记这个命令(就是一个英文句号),告诉 docker build 查找当前目录里的 dockerfile 文件。
    $ docker build -t docker-whale .
     
    Sending build context to Docker daemon 2.048 kB
    ...snip...
    Removing intermediate container cb53c9d09f3b
    Successfully built c2c3152907b5

    1. Docker检查确认所有build所需都齐了,输出如下消息:

      Sending build context to Docker daemon 2.048 kB
      
    2. Docker 检查 whalesay image 是否存在,不存在则从Docker Hub上pull下来。

      Step 1 : FROM docker/whalesay:latest
       ---> 6b362a9f73eb
      

      在每一步结束,都会有一个ID被打印出来。这个ID是每一步创建出的 Layer 的ID。 Dockerfile 中每一行命令都和 image 中的一个 Layer 相关。你自己的ID会显示的不一样。

    3. Docker 创建一个临时容器 container 来运行 whalesay 镜像image。在这个临时容器中,Docker 运行 Dockerfile中的下一条命令, 即 RUN 命令。这会安装 fortune 。这里会有很多输出,就和在 Ubuntu 中创建出来的消息一样。

      Step 2 : RUN apt-get -y update && apt-get install -y fortunes
       ---> Running in 05d4eda04526
      Ign http://archive.ubuntu.com trusty InRelease
      Get:1 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB]
      Get:2 http://archive.ubuntu.com trusty-security InRelease [65.9 kB]
      Hit http://archive.ubuntu.com trusty Release.gpg
      Hit http://archive.ubuntu.com trusty Release
      Get:3 http://archive.ubuntu.com trusty-updates/main Sources [480 kB]
      Get:4 http://archive.ubuntu.com trusty-updates/restricted Sources [5921 B]
      Get:5 http://archive.ubuntu.com trusty-updates/universe Sources [214 kB]
      Get:6 http://archive.ubuntu.com trusty-updates/main amd64 Packages [1160 kB]
      Get:7 http://archive.ubuntu.com trusty-updates/restricted amd64 Packages [20.4 kB]
      Get:8 http://archive.ubuntu.com trusty-updates/universe amd64 Packages [505 kB]
      Get:9 http://archive.ubuntu.com trusty-security/main Sources [157 kB]
      Get:10 http://archive.ubuntu.com trusty-security/restricted Sources [4621 B]
      Get:11 http://archive.ubuntu.com trusty-security/universe Sources [54.5 kB]
      Get:12 http://archive.ubuntu.com trusty-security/main amd64 Packages [700 kB]
      Get:13 http://archive.ubuntu.com trusty-security/restricted amd64 Packages [17.0 kB]
      Get:14 http://archive.ubuntu.com trusty-security/universe amd64 Packages [191 kB]
      Hit http://archive.ubuntu.com trusty/main Sources
      Hit http://archive.ubuntu.com trusty/restricted Sources
      Hit http://archive.ubuntu.com trusty/universe Sources
      Hit http://archive.ubuntu.com trusty/main amd64 Packages
      Hit http://archive.ubuntu.com trusty/restricted amd64 Packages
      Hit http://archive.ubuntu.com trusty/universe amd64 Packages
      Fetched 3640 kB in 11s (329 kB/s)
      Reading package lists...
      Reading package lists...
      Building dependency tree...
      Reading state information...
      The following extra packages will be installed:
        fortune-mod fortunes-min librecode0
      Suggested packages:
        x11-utils bsdmainutils
      The following NEW packages will be installed:
        fortune-mod fortunes fortunes-min librecode0
      0 upgraded, 4 newly installed, 0 to remove and 92 not upgraded.
      Need to get 1961 kB of archives.
      After this operation, 4817 kB of additional disk space will be used.
      Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main librecode0 amd64 3.6-21 [771 kB]
      Get:2 http://archive.ubuntu.com/ubuntu/ trusty/universe fortune-mod amd64 1:1.99.1-7 [39.5 kB]
      Get:3 http://archive.ubuntu.com/ubuntu/ trusty/universe fortunes-min all 1:1.99.1-7 [61.8 kB]
      Get:4 http://archive.ubuntu.com/ubuntu/ trusty/universe fortunes all 1:1.99.1-7 [1089 kB]
      debconf: unable to initialize frontend: Dialog
      debconf: (TERM is not set, so the dialog frontend is not usable.)
      debconf: falling back to frontend: Readline
      debconf: unable to initialize frontend: Readline
      debconf: (This frontend requires a controlling tty.)
      debconf: falling back to frontend: Teletype
      dpkg-preconfigure: unable to re-open stdin:
      Fetched 1961 kB in 19s (101 kB/s)
      Selecting previously unselected package librecode0:amd64.
      (Reading database ... 13116 files and directories currently installed.)
      Preparing to unpack .../librecode0_3.6-21_amd64.deb ...
      Unpacking librecode0:amd64 (3.6-21) ...
      Selecting previously unselected package fortune-mod.
      Preparing to unpack .../fortune-mod_1%3a1.99.1-7_amd64.deb ...
      Unpacking fortune-mod (1:1.99.1-7) ...
      Selecting previously unselected package fortunes-min.
      Preparing to unpack .../fortunes-min_1%3a1.99.1-7_all.deb ...
      Unpacking fortunes-min (1:1.99.1-7) ...
      Selecting previously unselected package fortunes.
      Preparing to unpack .../fortunes_1%3a1.99.1-7_all.deb ...
      Unpacking fortunes (1:1.99.1-7) ...
      Setting up librecode0:amd64 (3.6-21) ...
      Setting up fortune-mod (1:1.99.1-7) ...
      Setting up fortunes-min (1:1.99.1-7) ...
      Setting up fortunes (1:1.99.1-7) ...
      Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
       ---> dfaf993d4a2e
      Removing intermediate container 05d4eda04526
      

      RUN 结束,有一个 layer 会被创建,并且之前创建的临时容器 container 也被去除了。

    4. 一个新的临时容器 container 被创建出来,Docker 为CMD命令添加一个 Layer,然后在移除该容器 congtainer

      Step 3 : CMD /usr/games/fortune -a | cowsay
       ---> Running in a8e6faa88df3
       ---> 7d9495d03763
      Removing intermediate container a8e6faa88df3
      Successfully built 7d9495d03763
      

    到这里,我们就创建了一个自己的镜像 image,名叫 docker-whale.

    接下来直接运行 docker run docker-whale









  • 相关阅读:
    css实现文字渐变
    js 模拟window.open 打开新窗口
    在centos上安装nodejs
    css多行省略
    Vue 中渲染字符串形式的组件标签
    vue 中结合百度地图获取当前城市
    vue-cli 项目实现路由懒加载
    JavaScript学习-2循环
    早期自学jQuery-一入门
    JavaScript学习-1
  • 原文地址:https://www.cnblogs.com/zhxshseu/p/1514f50b8b910c50a119cf2c38553e64.html
Copyright © 2011-2022 走看看