Docker的安裝配置及使用詳解


 

 

docker logs $CONTAINER_ID #查看docker實例運行日志,確保正常運行
docker inspect $CONTAINER_ID #docker inspect <image|container> 查看image或container的底層信息
docker build <path> 尋找path路徑下名為的Dockerfile的配置文件,使用此配置生成新的image
docker build -t repo[:tag] 同上,可以指定repo和可選的tag
docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式獲取內容,使用此配置生成新的image
docker port <container> <container port> 查看本地哪個端口映射到container的指定端口,其實用docker ps 也可以看到

 

 

 

基本概念

Docker 包括三個基本概念

  • 鏡像(Image)
  • 容器(Container)
  • 倉庫(Repository)

先理解了這三個概念,就理解了 Docker 的整個生命周期。

1、docker安裝與啟動

 

復制代碼
 
           
復制代碼

 

2、鏡像的獲取與容器的使用

 

復制代碼
 
           
復制代碼

 

3.進入容器 - nsenter 命令

使用 attach 命令有時候並不方便。當多個窗口同時 attach 到同一個容器的時候,所有窗口都會同步顯示。當某個窗口因命令阻塞時,其他窗口也無法執行操作了。 
nsenter安裝 
nsenter 工具在 util-linux 包2.23版本后包含。 如果系統中 util-linux 包沒有該命令,可以按照下面的方法從源碼安裝。

 

 

nsenter使用 
   nsenter 可以訪問另一個進程的名字空間。nsenter 要正常工作需要有 root 權限。 
   為了連接到容器,你還需要找到容器的第一個進程的 PID,可以通過下面的命令獲取。

PID=$(docker inspect --format "{{ .State.Pid }}" <container>)

   通過這個 PID,就可以連接到這個容器:

nsenter --target $PID --mount --uts --ipc --net --pid

   更簡單的,建議下載 .bashrc_docker,並將內容放到 .bashrc 中。

wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker; echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc

   這個文件中定義了很多方便使用 Docker 的命令,例如 docker-pid 可以獲取某個容器的 PID;而 
   docker-enter 可以進入容器或直接在容器內執行命令。

echo $(docker-pid <container>) docker-enter <container> ls docker-enter <container> bash

3、持久化容器與鏡像

3.1 通過容器生成新的鏡像

運行中的鏡像稱為容器。你可以修改容器(比如刪除一個文件),但這些修改不會影響到鏡像。不過,你使用docker commit 命令可以把一個正在運行的容器變成一個新的鏡像。

    docker commit <container> [repo:tag] # 將一個container固化為一個新的image,后面的repo:tag可選。

3.2 持久化容器

export命令用於持久化容器

    docker export <CONTAINER ID> > /tmp/export.tar

 

3.3 持久化鏡像

Save命令用於持久化鏡像

        docker save 鏡像ID > /tmp/save.tar

 

3.4 導入持久化container

刪除container 2161509ff65e

        docker rm 2161509ff65e

導入export.tar文件

cat /tmp/export.tar | docker import - export:latest

3.5 導入持久化image

刪除image daa11948e23d

docker rmi daa11948e23d

導入save.tar文件

docker load < /tmp/save.tar

對image打tag

docker tag daa11948e23d load:tag

3.6 export-import與save-load的區別

導出后再導入(export-import)的鏡像會丟失所有的歷史,而保存后再加載(save-load)的鏡像沒有丟失歷史和層(layer)。這意味着使用導出后再導入的方式,你將無法回滾到之前的層(layer),同時,使用保存后再加載的方式持久化整個鏡像,就可以做到層回滾。(可以執行docker tag 來回滾之前的層)。

3.7 一些其它命令

復制代碼
 
           
復制代碼

 

一些使用技巧

docker文件存放目錄

Docker實際上把所有東西都放到/var/lib/docker路徑下了。

 1 [root@localhost docker]# ls -F 

2 containers/ devicemapper/ execdriver/ graph/ init/ linkgraph.db repositories-devicemapper volumes/ 

containers目錄當然就是存放容器(container)了,graph目錄存放鏡像,文件層(file system layer)存放在graph/imageid/layer路徑下,這樣我們就可以看看文件層里到底有哪些東西,利用這種層級結構可以清楚的看到文件層是如何一層一層疊加起來的。

 

 

一張圖總結 Docker 的命令

 

這里寫圖片描述

 

 

轉載請務必保留此出處:http://blog.csdn.net/fgf00/article/details/51893771


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM