dock學習筆記-持續更新
阿新 • • 發佈:2018-11-09
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。
Docker核心解決的問題是利用LXC來實現類似VM的功能,從而利用更加節省的硬體資源提供給使用者更多的計算資源
*映象可以理解為一個ios的系統光碟文件
*容器是裝好後可執行的系統
docker的典型場景
使應用的打包與部署自動化
建立輕量、私密的PAAS環境
使連續的整合/部署、測試自動化
部署、衡量網頁app、資料庫和後臺服務
fapui映象id 3a859bbb11fb name=sunyard/fapui Successfully built 04d6ddd700cb
fapui容器id 7f74af165784 name=fapui command="nohup /home/Makefil 2f9d664b9ff34c62e702548515c43baaa5798a355fb2287947e9dbb49ce63fbe
建立容器
# sudo docker create--name ubuntContainer ubuntu:14.04 /bin/echo 'Hello world'
#sudo docker restart 容器ID
暫停容器
#sudo docker pause 容器ID //暫停
#sudo docker unpause 容器ID //解除暫停
停止容器
$sudo docker stop 容器ID或容器名稱
#執行容器
docker start +容器id
#docker stop $(docker ps -q -a) //一次性停止所有容器,慎用
殺死容器
$sudo docker kill 容器ID或容器名稱
刪除容器
$sudo docker rm 容器ID或容器名稱 //刪除容器,正在執行的容器不能刪除
顯示執行容器的程序資訊
#sudo docker top 容器ID
docker ps -a 檢視所有容器,包括沒有執行的
docker ps 顯示所有正在執行的容器
docker logs 檢視日誌
報錯:資料庫連線報com.db2.jcc.am.qo
解決:重啟容器中的資料庫後要重置資料庫密碼
sudo docker start 1d051604e0ea //start docker
docker exec -it 1d051604e0ea bash 進入到某個容器
su db2inst1
db2start
db2 connet to pm
從容器中拷貝檔案出來,先exit,再 docker cp 1d051604e0ea:/tmp/db2_conf/test /home/developer
映象檢視
#sudo docker images //在本機進行映象檢視
#sudo docker inspect 映象ID //檢視單個映象的具體資訊,以JSON格式返回
docker images 檢視映象
docker load 匯入映象
docker save 匯出映象
docker rmi 刪除映象
docker build 新建映象
docker run +映象id
docker commit 容器生成映象
Docker並不是全能的,設計之初也不是KVM之類虛擬化手段的替代品,簡單總結幾點:
1--Docker是基於Linux 64bit的,無法在32bit的linux/Windows/unix環境下使用
2--LXC是基於cgroup等linux kernel功能的,因此container的guest系統只能是linux base的
3--隔離性相比KVM之類的虛擬化方案還是有些欠缺,所有container公用一部分的執行庫
4--網路管理相對簡單,主要是基於namespace隔離
5--cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(所以dotcloud主要是按記憶體收費)
6--docker對disk的管理比較有限
7--container隨著使用者程序的停止而銷燬,container中的log等使用者資料不便收集
問題:容器內啟動db2失敗時報The database manager failed to allocate shared memory
資料庫管理器分配共享記憶體失敗
解決:root 使用者下執行sysctl kernel.shmmax=18446744073692774399