一基本概念
1. 什么是Docker
...
2. Docker的基本概念
鏡像(Image)
是一個只讀模板,用來運行Docker容器。
容器(Container)
負責應用程序的運行,包括操作系統、用戶添加的文件以及元數據
容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
注:鏡像是只讀的,容器在啟動的時候創建一層可寫層作為最上層。
倉庫(Repository)
倉庫是集中存放鏡像文件的場所。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
注:Docker 倉庫的概念跟Git類似,注冊服務器可以理解為 GitHub 這樣的托管服務
二、快速開始
1. 安裝
# ubuntucurl -fsSL https://get.docker.com/ | shsudo service docker restart
2. 鏡像
獲取
# 從倉庫注冊服務器拉取sudo docker pull ubuntu:14.04# 官方倉庫注冊服務器,相當于 sudo docker pull registry.hub.docker.com/ubuntu:14.04# 也可使用其他倉庫,如: sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
顯示
sudo docker images
運行
sudo docker run -t -i ubuntu:14.04 /bin/bash
修改
# 運行容器bash,通過shell進行操作sudo docker run -t -i ubuntu:14.04 /bin/bash# 提交更新sudo docker commit -m"Added json gem"-a"Docker Newbee"0b2616b0e5a8 ouruser/sinatra:v2
-m:? 提交信息
-a:? 指定更新的用戶信息
0b2616b0e5a8: 容器的 ID
ouruser/sinatra: 倉庫名
v2: 倉庫tag
創建
通過修改已有image, 具體操作修改中已有
通過Dockerfile來創建
mkdir mydockerimg# docker image的配置文件vim Dockerfile# 創建imagesudo docker build -t testimg .
-t: 指定新的image的名字
.: Dockerfile所在目錄
Dockerfile示例
# 這是注釋FROM ubuntu:14.04MAINTAINER AIR_CC RUN apt-get -y updateCMDecho"hello-world"ADD myApp /var/wwwEXPOSE80
#: 注釋
FROM: 告訴 Docker 使用哪個鏡像作為基礎
MAINTAINER: 維護者的信息
RUN: 在創建鏡像時運行的操作
CMD: 啟動容器后運行的程序
ADD: 復制本地文件到鏡像
WORKDIR: 設置 dockerfile 命令運行目錄
EXPOSE: 對外部開放端口
通過本地文件系統導入
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz? | dockerimport- ubuntu:14.04
注:具體鏡像可在openva中找
保存與載入
1.保存已有的鏡像
sudodockersave-oubuntu_14.04.tarubuntu:14.04
載入鏡像
sudodockerload--inputubuntu_14.04.tar# 或者sudodockerload
刪除
# 暫停并刪除相應的容器sudo docker stop containerNamesudo docker rm containerName# 刪除鏡像sudo docker rmi imageName
注:刪除鏡像之前需要先stop & rm相應的container
# 刪除所有的containersudo docker stop $(docker ps -a -q)sudo docker rm $(docker ps -a -q)# 刪除所有的imagesudo docker rmi $(docker images -q)
2. 容器
容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機可以理解為模擬運行的一整套操作系統(提供了運行態環境和其他系統環境)和跑在上面的應用。
運行
# 運行一下,就終止sudo docker run -tid? ubuntu:14.04
run的參數說明
-t: 為container分配一個偽終端(pseudo-tty),并綁定到容器的標準輸入上
-i: 讓容器的標準輸入保持打開
-d: 使容器在后臺以守護態(Daemonized)形式運行
終止
使用sudo docker stop 終止;
注:當容器中指定的應用終結時,容器也會終止
sudo docker start -- 啟動一個處于終止的容器
sudo docker restart -- 重啟一個處于運行態的容器
運行日志
獲取 container 中程序輸出到 terminal 上的信息docker logs
進入
使用attach
sudo docker run -tid ubuntu:14.04sudo docker attach # ctrl + c:? 殺死該 contanier# ctrl + p + ctrl + q: 退出container交互界面
使用nsenter
導出與導入
導出
sudo dockerexport > outputFileName
導入
sudo dockerimport
注:用戶既可以使用 docker load 來導入鏡像存儲文件到本地鏡像庫,也可以使用 docker import來導入一個容器快照到本地鏡像庫。這兩者的區別在于容器快照文件將丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),而鏡像存儲文件將保存完整記錄,體積也要大。此外,從容器快照文件導入時可以重新指定標簽等元數據信息。
刪除
sudo docker stopsudo docker rm
注: 刪除容器前需先stop*