Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。
css
Docker與虛擬機比較
做爲一種輕量級的虛擬化方式,Docker在運行應用上跟傳統的虛擬機方式相比具備顯著優點:linux
- Docker容器很快,啓動和中止能夠在秒級實現,這相比傳統的虛擬機方式要快得多。
- Docker容器對系統資源需求不多,一臺主機上能夠同時運行數千個Docker容器。
- Docker經過相似Git的操做來方便用戶獲取、分發和更新應用鏡像,指令簡明,學習成本較低。
- Docker經過Dockerfile配置文件來支持靈活的自動化建立和部署機制,提升工做效率。

安裝
#rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmsql
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6docker
#yum -y install docker-io 安裝shell
#service docker start 啓動ubuntu
#chkconfig docker on 開機啓動api
#docker search ubuntu 測試搜索鏡像bash
docker pull ubuntu 服務器
網絡
經常使用命令
總結一下經常使用命令:
其中<>闊起來的參數爲必選,[]闊起來爲可選
- docker version 查看docker的版本號,包括客戶端、服務端、依賴的Go等
- docker info 查看系統(docker)層面信息,包括管理的images, containers數等
- docker search 在docker index中搜索image
- docker pull 從docker registry server 中下拉image
- docker push 推送一個image或repository到registry
- docker push :TAG 同上,指定tag
- docker inspect 查看image或container的底層信息
- docker images TODO filter out the intermediate image layers (intermediate image layers 是什麼)
- docker images -a 列出全部的images
- docker ps 默認顯示正在運行中的container
- docker ps -l 顯示最後一次建立的container,包括未運行的
- docker ps -a 顯示全部的container,包括未運行的
- docker logs 查看container的日誌,也就是執行命令的一些輸出
- docker rm 刪除一個或多個container
- docker rm `docker ps -a -q` 刪除全部的container
- docker ps -a -q | xargs docker rm 同上, 刪除全部的container
- docker rmi 刪除一個或多個image
- docker start/stop/restart 開啓/中止/重啓container
- docker start -i 啓動一個container並進入交互模式
- docker attach attach一個運行中的container
- docker run 使用image建立container並執行相應命令,而後中止
- docker run -i -t /bin/bash 使用image建立container並進入交互模式, login shell是/bin/bash
- docker run -i -t -p 將container的端口映射到宿主機的端口
- docker commit [repo:tag] 將一個container固化爲一個新的image,後面的repo:tag可選
- docker build
- 尋找path路徑下名爲的Dockerfile的配置文件,使用此配置生成新的image
- docker build -t repo[:tag] 同上,能夠指定repo和可選的tag
- docker build - 使用指定的dockerfile配置文件,docker以stdin方式獲取內容,使用此配置生成新的image
- docker port 查看本地哪一個端口映射到container的指定端口,其實用docker ps 也能夠看到
客戶端和守護進程
Docker 的 C/S 模式
docker是C/S架構,使用client與Server通訊。
支持三種鏈接方式:
unix:///var/run/docker.sock
tcp://host:port
fd://socketfd
Docker 守護進程的配置和操做
使用ps -ef | grep docker
查看docker進程。
管理docker服務:
service docker start service docker stop service docker restart
docker守護進程的配置和操做模式:
docker -d [OPTIONS]
-d 之後臺方式運行容器。
下面是容器建立時的一些配置,按需添加。初學者能夠簡單看看,之後須要再來查找。
運行相關:
-D, --debug=false -e,--exec-driver="native" -p,--pidfile="/var/run/docker.pid"
服務器相關:
-G,--group="docker" -H,--host=[] --tls=false
RemoteAPI相關:
--api-enable-cors=false
存儲相關:
-S,
網絡設置相關:
-b,
啓動配置文件
Ubuntu: /etc/default/docker
CentOS: /etc/sysconfig/docker