1. 程式人生 > >DOCKER 筆記

DOCKER 筆記

docker

一、docker的意義
2.1.程序在我這跑得好好的,在你那怎麽就不行呢?! 這是一個典型的應用場景,Docker image中包含了程序需要的所有的運行時依賴,比如java的程序,肯定要在image中包含jdk;比如Python的程序,肯定要在image中包含對應版本的Python解釋器。程序在我這跑得好好的,去你那就不行了,顯然是環境問題。Docker把整個運行時環境打包放到image中,所以搞定了環境依賴問題!
:Docker解決了運行環境和配置問題,方便發布,也就方便做持續集成。代碼 + 運行環境 + 配置 + 依賴的服務,Docker image中包含了運行環境+配置,這對部署相當友好
2.更輕量的虛擬化,節省了虛擬機的性能損耗
3.構建Docker鏡像應該遵循哪些原則?

整體遠側上,盡量保持鏡像功能的明確和內容的精簡,要點包括:

盡量選取滿足需求但較小的基礎系統鏡像,建議選擇debian:wheezy鏡像,僅有86MB大小

清理編譯生成文件、安裝包的緩存等臨時文件

安裝各個軟件時候要指定準確的版本號,並避免引入不需要的依賴

從安全的角度考慮,應用盡量使用系統的庫和依賴

使用Dockerfile創建鏡像時候要添加.dockerignore文件或使用幹凈的工作目錄

4.如何控制容器占用系統資源(CPU,內存)的份額
在使用docker create命令創建容器或使用docker run 創建並運行容器的時候,可以使用-c|–cpu-shares[=0]參數來調整同期使用CPU的權重,使用-m|–memory參數來調整容器使用內存的大小。

5.Docker的默認存放位置是/var/lib/docker,如果希望將Docker的本地文件存儲到其他分區,可以使用Linux軟連接的方式來做。
6.Docker的配置文件放在那裏。如何修改配置
Ubuntu系統下Docker的配置文件是/etc/default/docker,CentOS系統配置文件存放在/etc/sysconfig/docker
7.Docker與LXC(Linux Container)有何不同
LXC利用Linux上相關技術實現容器,Docker則在如下的幾個方面進行了改進:

移植性:通過抽象容器配置,容器可以實現一個平臺移植到另一個平臺;
鏡像系統:基於AUFS的鏡像系統為容器的分發帶來了很多的便利,同時共同的鏡像層只需要存儲一份,實現高效率的存儲;

版本管理:類似於GIT的版本管理理念,用戶可以更方面的創建、管理鏡像文件;
倉庫系統:倉庫系統大大降低了鏡像的分發和管理的成本;
周邊工具:各種現有的工具(配置管理、雲平臺)對Docker的支持,以及基於Docker的Pass、CI等系統,讓Docker的應用更加方便和多
二、docker 的常規命令
安裝 docker
yum clean all
yum install -y docker-engine docker-engine-selinux

設置開機啟動,啟動 docker 服務
systemctl enable docker
systemctl start docker

系統剛剛配置完是沒有鏡像的
查看系統鏡像
docker images

從官方源搜索鏡像
docker search busybox

下載鏡像
docker pull busybox
網上直接下載鏡像
上傳鏡像
docker push busybox

把本地的鏡像備份為 tar 包
docker save busybox(已經存在的鏡像名) >busybox.tar

把備份的tar包導入到本機鏡像
docker load <busybox.tar

練習導入鏡像

1、查看容器
docker ps

2、創建一個 bash 交互的容器
docker run -it centos /bin/bash

3、創建一個非交互的容器
docker run nginx
docker run -itd centos /bin/bash

查看鏡像列表
docker images

查看鏡像制作歷史docker history busybox

查看鏡像底層信息

docker inspect busybox

下載鏡像docker pull busybox

上傳鏡像docker push

刪除本地鏡像docker rmi busybox

鏡像另存為tar包docker save busybox >busybox.tar
使用tar包導入鏡像
docker load <busybox.tar

搜索鏡像

docker search busybox

修改鏡像名稱和標簽

docker tag busybox:latest busybox:v1

容器相關命令

以交互模式啟動一個容器
docker run -it centos bash

啟動的容器放在後臺
docker run -itd centos bash

顯示正在運行的容器
docker ps

顯示所有容器
docker ps -a

顯示所有容器,但只顯示 id
docker ps -aq

啟動,停止,重啟容器
docker start|stop|restart 容器id

進入容器
docker exec -it 容器id /bin/bash

連接容器 console,exit 退出會導致容器關閉,可以使用 CTRL +(p,q) 退出
docker attach 容器id

顯示容器詳細信息
docker inspect 容器id

查看容器內運行的進程
docker top 容器id

刪除容器
docker rm 容器id

關閉所有容器
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)

DOCKER 筆記