1. 程式人生 > >dock學習筆記-持續更新

dock學習筆記-持續更新



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 rm $(docker ps -q -a)  //一次性刪除所有容器,慎用

顯示執行容器的程序資訊
#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