Docker基礎命令

Docker 是一個開源的應用容器引擎,開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。 docker設想是交付運行環境如同海運,OS如同一個貨輪,每個在OS基礎上的軟件都如同一個集裝箱,用戶能夠經過標準化手段自由組裝運行環境,同時集裝箱的內容能夠由用戶自定義,也能夠由專業人員製造。這樣,交付一個軟件,就是一系列標準化組件的集合的交付,如同樂高積木,用戶只須要選擇合適的積木組合,而且在最頂端署上本身的名字(最後個標準化組件是用戶的app)。這也就是基於docker的PaaS產品的原型。linux

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和建立Docker容器。Docker 容器經過 Docker 鏡像來建立。容器與鏡像的關係相似於面向對象編程中的對象與類。 Docker採用 C/S架構 Docker daemon 做爲服務端接受來自客戶的請求,並處理這些請求(建立、運行、分發容器)。 客戶端和服務端既能夠運行在一個機器上,也可經過 socket 或者RESTful API 來進行通訊。 Docker daemon 通常在宿主主機後臺運行,等待接收來自客戶端的消息。 Docker 客戶端則爲用戶提供一系列可執行命令,用戶用這些命令實現跟 Docker daemon 交互。docker

Docker是基於Linux 64bit的,沒法在32bit的linux/Windows/unix環境下使用 Docker只能虛擬基於Linux的服務編程

安裝docker:apt-get install docker.io 查看docker的版本信息:docker version 查看安裝docker的信息:docker info 查看本機Docker中存在哪些鏡像: docker images 檢索image $ docker search ubuntu:14.04ubuntu

在docker中獲取ubuntu鏡像

$ docker pull ubuntu:14.04bash

顯示一個鏡像的歷史

$ docker history birdben/ubuntu:v1服務器

列出一個容器裏面被改變的文件或者目

$ docker diff birdben/ubuntu:v1架構

從一個容器中取日誌

$ docker logs birdben/ubuntu:v1app

顯示一個運行的容器裏面的進程信息

$ docker top birdben/ubuntu:v1ssh

從容器裏面拷貝文件/目錄到本地一個路徑

$ docker cp ID:/container_path to_pathsocket

列出當前全部正在運行的容器

$ docker ps

列出全部的容器

$ docker ps -a

列出最近一次啓動的容器

$ docker ps -l

查看容器的相關信息

$ docker inspect $CONTAINER_ID

顯示容器IP地址和端口號,若是輸出是空的說明沒有配置IP地址(不一樣的Docker容器能夠經過此IP地址互相訪問)

$ docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID

保存對容器的修改

$ docker commit -m "Added ssh from ubuntu14.04" -a "birdben" 6s56d43f627f3 birdben/ubuntu:v1

參數:

-m參數用來來指定提交的說明信息;

-a能夠指定用戶信息的;

6s56d43f627f3表明的時容器的id;

birdben/ubuntu:v1指定目標鏡像的用戶名、倉庫名和 tag 信息。

構建一個容器

$ docker build -t="birdben/ubuntu:v1" .

參數:

-t爲構建的鏡像制定一個標籤,便於記憶/索引等

. 指定Dockerfile文件在當前目錄下,也能夠替換爲一個具體的 Dockerfile 的路徑。

在docker中運行ubuntu鏡像

$ docker run <相關參數> <鏡像 ID> <初始命令>

守護模式啓動

$ docker run -it ubuntu:14.04

交互模式啓動

$ docker run -it ubuntu:14.04 /bin/bash

指定端口號啓動

$ docker run -p 80:80 birdben/ubuntu:v1

指定配置啓動

$ sudo docker run -d -p 10.211.55.4:9999:22 birdben/ubuntu:v1 '/usr/sbin/sshd' -D

參數:

-d:表示以「守護模式」執行,日誌不會出如今輸出終端上。

-i:表示以「交互模式」運行容器,-i 則讓容器的標準輸入保持打開

-t:表示容器啓動後會進入其命令行,-t 選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上

-v:表示須要將本地哪一個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>,-v 標記來建立一個數據卷並掛載到容器裏。在一次 run 中屢次使用能夠掛載多個數據卷。

-p:表示宿主機與容器的端口映射,此時將容器內部的 22 端口映射爲宿主機的 9999 端口,這樣就向外界暴露了 9999 端口,可經過 Docker 網橋來訪問容器內部的 22 端口了。

注意:這裏使用的是宿主機的 IP 地址:10.211.55.4,與對外暴露的端口號 9999,它映射容器內部的端口號 22。ssh外部須要訪問:ssh root@10.211.55.4 -p 9999

不必定要使用「鏡像 ID」,也可使用「倉庫名:標籤名」

start 啓動容器

$ docker start 117843ade696117843ade696

stop 中止正在運行的容器

$ docker stop 117843ade696117843ade696

restart 重啓容器

$ docker restart 117843ade696117843ade696

rm 刪除容器

$ docker rm 117843ade696117843ade696

rmi 刪除鏡像

$ docker rmi ed9c93747fe1Deleted

登陸Docker Hub中心

$ docker login

發佈上傳image(push)

$ docker push birdben/ubuntu:v1 當利用 docker run 來建立容器時,Docker 在後臺運行的標準操做包括:

檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載 利用鏡像建立並啓動一個容器 分配一個文件系統,並在只讀的鏡像層外面掛載一層可讀寫層 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去 從地址池配置一個 ip 地址給容器 執行用戶指定的應用程序 執行完畢後容器被終止 參考文章:http://blog.csdn.net/birdben/article/details/49873725

相關文章
相關標籤/搜索