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

安裝
#rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
#yum -y install docker-io 安裝
#service docker start 啟動
#chkconfig docker on 開機啟動
#docker search ubuntu 測試搜索鏡像
docker pull ubuntu
# 查看所有可用鏡像 docker images -a
常用命令
總結一下常用命令:
其中<>闊起來的參數為必選,[]闊起來為可選
- 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,--storage-driver="" --selinux-enabled=false --storage-opt=[]
網絡設置相關:
-b,--bridge="" 設置自定義網橋 --bip="" --dns=[] --ip=0.0.0.0
啟動配置文件
Ubuntu: /etc/default/docker
CentOS: /etc/sysconfig/docker
