- Docker技術入門與實戰(第3版)
- 楊保華 戴王劍 曹亞侖
- 753字
- 2018-11-08 18:34:12
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的技巧將將在后面進行介紹。
- Functional Python Programming
- 深度學習經典案例解析:基于MATLAB
- PHP程序設計(慕課版)
- Mastering Selenium WebDriver
- 深入淺出RxJS
- HTML5入門經典
- Gradle for Android
- Learning Unity 2D Game Development by Example
- 編程菜鳥學Python數據分析
- 石墨烯改性塑料
- NGUI for Unity
- SAP Web Dynpro for ABAP開發技術詳解:基礎應用
- 程序員必會的40種算法
- Data Manipulation with R(Second Edition)
- Learning Ionic(Second Edition)