Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從Apache2.0協議開源。html
Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。mysql
容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。linux
docker容器生命週期管理git
docker run 在一個新的容器執行一個命令sql
docker start 開一個或者更多已經中止的容器docker
docker stop 中止一個運行的容器centos
docker restart 從新開始一個運行的容器服務器
docker kill 殺死一個運行的容器網絡
docker rm 刪除一個或更多的容器架構
docker pause 暫停一個容器的全部進程
docker unpaunse 恢復一個容器的全部進程
docker容器操做運維
docker ps 列出容器
docker inspect 列出關於容器或鏡像的底層信息
docker top 顯示一個容器運行的進程
docker attach 附上一個運行的容器
docker events 獲得實時的來自服務的事件
docker log 得到一個容器的日誌
docker wait 阻塞直到一個容器中止,而後打印它的退出代碼
docker export 導出一個容器的文件系統做爲一個tar文件
docker port 列出容器映射的端口
docker版本管理
docker commit 建立一個新的鏡像從一個容器
docker cp 從容器複製一個文件或目錄到本地目錄或標準輸出
docker diff 展現一個容器文件系統的變化
docker鏡像倉庫
docker login 登入倉庫
docker pull 拉取鏡像
docker push 推送鏡像
docker search 搜索鏡像
docker本地鏡像管理
docker images 列出本地的鏡像
docker rmi 刪除本地的鏡像
docker tag 打標籤本地的鏡像
docker build 經過Dockerfile構建本地的鏡像
docker histroy 列出鏡像的歷史
docker save 保存本地的鏡像爲一個tar文件
docker import 經過tar導入鏡像
docker load 加載tar鏡像
docker其它命令
docker info
docker version
1. 配置docker daemon的參數,因爲每一個發行版的linux的init系統不用,因此使用通用的命令行方式重啓docker daemon
docker daemon --insecure-registry 192.168.6.65:5000 &
2. 認證私有倉庫
docker login -u -p -e 192.168.6.65:5000
3. 拉取鏡像
docker pull 192.168.6.65:5000/centos:latest
4. tag本地鏡像
docker tag 192.168.6.65:5000/centos:1.0.0 192.168.6.65:5000/centos:latest
5. 推送鏡像
docker push 192.168.6.65:5000/centos:1.0.0
6.docker, mac 的鏡像目錄
/Users/{YourUserName}/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 保存到文件當中
-d,--detach=false指定容器運行於前臺仍是後臺,默認爲false
-i,--interactive=false打開STDIN,用於控制檯交互
-t,--tty=false分配tty設備,該能夠支持終端登陸,默認爲false
-u,--user=""指定容器的用戶
-a,--attach=[] 登陸容器(必須是以docker run -d啓動的容器)
-w,--workdir=""指定容器的工做目錄
-c,--cpu-shares=0設置容器CPU權重,在CPU共享場景使用
-e,--env=[] 指定環境變量,容器中可使用該環境變量
-m,--memory=""指定容器的內存上限
-P,--publish-all=false指定容器暴露的端口
-p,--publish=[] 指定容器暴露的端口
-h,--hostname=""指定容器的主機名
-v,--volume=[] 給容器掛載存儲卷,掛載到容器的某個目錄
--volumes-from=[] 給容器掛載其餘容器上的卷,掛載到容器的某個目錄
--cap-add=[] 添加權限,權限清單詳見:http://linux.die.net/man/7/capabilities
--cap-drop=[] 刪除權限,權限清單詳見:http://linux.die.net/man/7/capabilities
--cidfile=""運行容器後,在指定文件中寫入容器PID值,一種典型的監控系統用法
--cpuset=""設置容器可使用哪些CPU,此參數能夠用來容器獨佔CPU
--device=[] 添加主機設備給容器,至關於設備直通
--dns=[] 指定容器的dns服務器
--dns-search=[] 指定容器的dns搜索域名,寫入到容器的/etc/resolv.conf文件
--entrypoint=""覆蓋image的入口點
--env-file=[] 指定環境變量文件,文件格式爲每行一個環境變量
--expose=[] 指定容器暴露的端口,即修改鏡像的暴露端口
--link=[] 指定容器間的關聯,使用其餘容器的IP、env等信息
--lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc時使用
--name=""指定容器名字,後續能夠經過名字進行容器管理,links特性須要使用名字
--net="bridge"容器網絡設置:
bridge 使用docker daemon指定的網橋
host //容器使用主機的網絡
container:NAME_or_ID>//使用其餘容器的網路,共享IP和PORT等網絡資源
none 容器使用本身的網絡(相似--net=bridge),可是不進行配置
--privileged=false指定容器是否爲特權容器,特權
容器擁有全部的capabilities
--restart="no"指定容器中止後的重啓策略:
no:容器退出時不重啓
on-failure:容器故障退出(返回值非零)時重啓
always:容器退出時老是重啓
--rm=false指定容器中止後自動刪除容器(不支持以docker run -d啓動的容器)
--sig-proxy=true設置由代理接受並處理信號,可是SIGCHLD、SIGSTOP和SIGKILL不能被代理
example:
1.docker run -d--name=server-db -p 3306:3306 centos6.8-mysql /usr/bin/mysql_safe –d
主機3306端口映射到容器3306端口
2.docker run -it --rm centos6.8 容器結束後自動刪除
3.docker run -d--name=server-db -p 3306:3306 -v /server/mysql-data:/mysql-data centos6.8-mysql /usr/bin/mysql_safe –d
將主機的/server/mysql-data 目錄映射到容器 /mysql-data 中
1..清理無用的docker容器命令
docker ps -aqf status=exited | xargs docker rm
2.清理無用鏡像的命令
docker images -qf dangling=true | xargs docker rmi
3.清理無用的docker掛載
docker volume rm $(docker volume ls -q -f dangling=true)
dockerignore使用
相似.gitignore同樣,運行Dockerfile裏的COPY指令的時候會根據.dockerignore進行部分目錄或者文件忽略。
docker的架構以下圖 :