docker 入門學習一
基本概念
- 鏡像(image):Docker 鏡像就是一個只讀的模板。一個鏡像可以包含一個完整的 ubuntu 操作系統環境,里面僅安裝了 Apache 或用戶需要的其它應用程序。鏡像可以用來創建 Docker 容器。
- 容器(container):容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
- 倉庫(repository):倉庫是集中存放鏡像文件的場所。 </ul>
鏡像
獲取鏡像
docker pull ubuntu:12.04
與下面的命令等同
docker pull registry.hub.docker.com/ubuntu:12.04
如果官方倉庫比較慢可以用其他倉庫
docker pull dl.dockerpool.com:5000/ubuntu:12.04
使用該鏡像創建容器:
docker run -t -i ubuntu:12.04 /bin/bash
root@fe7fc4bd8fc9:/#
列出本地鏡像
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 12.04 74fe38d11401 4 weeks ago 209.6 MB
ubuntu precise 74fe38d11401 4 weeks ago 209.6 MB
ubuntu 14.04 99ec81b80c55 4 weeks ago 266 MB
在列出信息中,可以看到幾個字段信息:
- 來自于哪個倉庫,比如 ubuntu
- 鏡像的標記,比如 14.04
- 它的 ID 號(唯一)
- 創建時間
- 鏡像大小 </ul>
創建鏡像
啟用一個下載的鏡像的容器:
docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/#
root@0b2616b0e5a8:/# gem install json
//提交當前容器
docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c</pre>
- -m :指定提交的說明信息
- -a :指定更新的用戶信息
- 0b2616b0e5a8 是用來創建鏡像的容器的 id
- 最后指定目標鏡像的倉庫名和 tag 信息。創建成功后會返回這個鏡像的 ID 信息。
</ul>
移除本地鏡像
如果要移除本地的鏡像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器。
docker rmi training/sinatra
Untagged: training/sinatra:latest
Deleted: 5bc342fa0b91cabf65246837015197eecfa24b2213ed6a51a8974ae250fedd8d
Deleted: ed0fffdcdae5eb2c3a55549857a8be7fc8bc4241fb19ad714364cbfd7a56b22f
Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0
注意:在刪除鏡像之前要先用 docker rm 刪掉依賴于這個鏡像的所有容器。
容器
啟動容器
啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。
docker run ubuntu:14.04 /bin/echo 'Hello world'
Hello world
下面的命令則啟動一個 bash 終端,允許用戶進行交互。
docker run -t -i ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#
- -t :選項讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入上
- -i :則讓容器的標準輸入保持打開。
</ul>
當利用 docker run 來創建容器時,Docker 在后臺運行的標準操作包括:
- 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
- 利用鏡像創建并啟動一個容器
- 分配一個文件系統,并在只讀的鏡像層外面掛載一層可讀寫層
- 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
- 從地址池配置一個 ip 地址給容器
- 執行用戶指定的應用程序
- 執行完畢后容器被終止
</ul>
啟動已終止容器
可以利用 docker start 命令,直接將一個已經終止的容器啟動運行。
可以通過 docker ps 命令來查看容器信息。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77b2dc01fe0f ubuntu:14.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute agitated_wright
可以使用 docker stop 來終止一個運行中的容器。
此外,docker restart 命令會將一個運行態的容器終止,然后再重新啟動它。
倉庫
用戶無需登錄即可通過 docker search 命令來查找官方倉庫中的鏡像,并利用 docker pull 命令來將它下載到本地。
docker search centos
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/centos The official build of CentOS. 1823 [OK]
docker.io docker.io/jdeathe/centos-ssh CentOS-6 6.7 x86_64 / EPEL/IUS Repos / Ope... 14 [OK]
docker.io docker.io/jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP m... 11 [OK]
docker.io docker.io/million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 9 [OK]
docker.io docker.io/blalor/centos Bare-bones base CentOS 6.5 image 8 [OK]
docker.io docker.io/nimmis/java-centos This is docker images of CentOS 7 with dif... 7 [OK]
docker.io docker.io/torusware/speedus-centos Always updated official CentOS docker imag... 7 [OK]
【參考資料】
- Docker從入門到實踐
</ol>
---EOF---
</article>
</code></code></code></code></code></code></code></code></code>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!