官术网_书友最值得收藏!

3.5 創建鏡像

創建鏡像的方法主要有三種:基于已有鏡像的容器創建、基于本地模板導入、基于Dockerfile創建。

本節主要介紹Docker的commit、import和build子命令。

1.基于已有容器創建

該方法主要是使用docker [container] commit命令。

命令格式為docker [container] commit [OPTIONS] CONTAINER [REPOSITORY [:TAG]],主要選項包括:

? -a, --author="":作者信息;

? -c, --change=[]:提交的時候執行Dockerfile指令,包括CMD|ENTRYPOINT|E NV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等;

? -m, --message="":提交消息;

? -p, --pause=true:提交時暫停容器運行。

下面將演示如何使用該命令創建一個新鏡像。

首先,啟動一個鏡像,并在其中進行修改操作。例如,創建一個test文件,之后退出,代碼如下:

        $ docker run -it ubuntu:18.04 /bin/bash
        root@a925cb40b3f0:/# touch test
        root@a925cb40b3f0:/# exit

記住容器的ID為a925cb40b3f0。

此時該容器與原ubuntu:18.04鏡像相比,已經發生了改變,可以使用docker [container] commit命令來提交為一個新的鏡像。提交時可以使用ID或名稱來指定容器:

        $ docker [container] commit -m "Added a new file" -a "Docker Newbee" a925cb40b3f0
              test:0.1
        9e9c814023bcffc3e67e892a235afe61b02f66a947d2747f724bd317dda02f27

順利的話,會返回新創建鏡像的ID信息,例如9e9c814023bcffc3e67e892a235a fe61b02f66a947d2747f724bd317dda02f27。

此時查看本地鏡像列表,會發現新創建的鏡像已經存在了:

        $ docker images
        REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
        test 0.1 9e9c814023bc 4 seconds ago 188 MB

2.基于本地模板導入

用戶也可以直接從一個操作系統模板文件導入一個鏡像,主要使用docker [container] import命令。命令格式為docker [image] import [OPTIONS] file|URL|-[REPOSITORY [:TAG]]

要直接導入一個鏡像,可以使用OpenVZ提供的模板來創建,或者用其他已導出的鏡像模板來創建。OPENVZ模板的下載地址為http://openvz.org/Download/templates/precreated

例如,下載了ubuntu-18.04的模板壓縮包,之后使用以下命令導入即可:

        $ cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04

然后查看新導入的鏡像,已經在本地存在了:

        $ docker images
        REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
        ubuntu 18.04 05ac7c0b9383 17 seconds ago        215.5 MB

3.基于Dockerfile創建

基于Dockerfile創建是最常見的方式。Dockerfile是一個文本文件,利用給定的指令描述基于某個父鏡像創建新鏡像的過程。

下面給出Dockerfile的一個簡單示例,基于debian:stretch-slim鏡像安裝Python 3環境,構成一個新的python:3鏡像:

        FROM debian:stretch-slim

        LABEL version="1.0" maintainer="docker user <docker_user@github>"

        RUN apt-get update && \
            apt-get install -y python3 && \
            apt-get clean && \
            rm -rf /var/lib/apt/lists/*

創建鏡像的過程可以使用docker [image] build命令,編譯成功后本地將多出一個python:3鏡像:

        $ docker [image] build -t python:3 .
        ...
        Successfully built 4b10f46eacc8
        Successfully tagged python:3
        $ docker images|grep python
        python 3 4b10f46eacc8 About a minute ago    95.1MB

更多使用Dockerfile的技巧將將在后面進行介紹。

主站蜘蛛池模板: 浏阳市| 锡林浩特市| 汝州市| 盱眙县| 太湖县| 砚山县| 紫金县| 和政县| 新泰市| 平舆县| 郎溪县| 尖扎县| 吉安县| 迁西县| 建始县| 双鸭山市| 石家庄市| 卢氏县| 长子县| 新乐市| 疏附县| 孙吴县| 阜阳市| 秭归县| 万盛区| 达孜县| 英超| 兴宁市| 若尔盖县| 建昌县| 云安县| 中超| 漠河县| 宣武区| 高平市| 收藏| 逊克县| 瓦房店市| 庐江县| 马边| 成安县|