天天看點

一、docker一、 安裝二、認識 docker三、docker中的鏡像四、常用的指令五、容器的管理六、資料持久化七 常用指令

Docker 入門安裝

  • 一、 安裝
  • 二、認識 docker
  • 三、docker中的鏡像
    • 3.1 什麼是鏡像
    • 3.2 如何擷取鏡像
    • 3.3 鏡像分層與容器的概念
    • 3.4 啟動一個容器
  • 四、常用的指令
  • 五、容器的管理
    • 5.1 建立容器
    • 5.2 檢視容器
    • 5.3 連結到容器的标準輸入輸出
    • 5.4 删除 、停止容器
    • 5.5 重命名容器
    • 5.6 檢視容器資訊
    • 5.7 在容器中執行指令
    • 5.8 檢視容器中的程序
    • 5.9 複制容器與主控端的檔案
    • 5.10 檢視容器與源鏡像的修改
    • 5.11 檢視容器中輸出到終端的日志
    • 5.12 檢視容器狀态(CPU 記憶體)
  • 六、資料持久化
    • 6.1 資料卷
  • 七 常用指令
    • 1、删除所有none鏡像
    • 2、所有的容器

一、 安裝

MAC環境安裝

windows環境安裝

CentOS安裝

二、認識 docker

Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協定開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實作虛拟化。

容器是完全使用沙箱機制,互相之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

—菜鳥教程

三、docker中的鏡像

3.1 什麼是鏡像

鏡像是不包含linux核心的精簡的作業系統

3.2 如何擷取鏡像

https://hub.docker.com/ 是一個由docker公司維護的鏡像中心。類比github

Docker鏡像加速

3.3 鏡像分層與容器的概念

鏡像與容器 就像是java中的類與對象。

鏡像是分層的。當下載下傳一個鏡像時會清楚的看到 鏡像是被分層下載下傳的。

通過鏡像建立容器時,docker會加載隻讀鏡像(dockerhub中下載下傳的源鏡像),并且在這個基礎上添加一個可讀寫的層,并且會吧鏡像中的目錄複制一份到/var/lib/docker/aufs/mnt/容器id 目錄下,修改隻是修改新增加的讀寫層。

保證源鏡像的檔案不變。

3.4 啟動一個容器

# 下載下傳centos鏡像
docker pull centos

# 啟動centos容器
docker run -itd --name mycentos centos

           

四、常用的指令

1. docker search [鏡像名] 										在dockerhub 搜尋鏡像
2. docker pull [鏡像名]:[标簽] 									拉取鏡像
3. docker iamges 												檢視本地鏡像清單
4. docker run -itd --name [容器名] [鏡像名/鏡像ID] 				使用鏡像啟動一個容器
5. docker exec [-it(互動方式執行)] [容器名] [shell指令] 			在某個容器中執行shell指令
6. docker attach [容器名] 										進入某個容器 退出目前容器 ctrl+p+q 
7. docker commit [容器]  [鏡像名]:[标簽]							送出容器 生成一個鏡像
8. docker ps [-a(全部)] 											檢視本地容器清單
9. docker stop [容器] 											停止容器運作
10. docker rm [容器] 											删除容器 
11. docker rmi [鏡像名|鏡像id]									删除鏡像
12. docker export [容器名] > [tar路徑eg:/home/test.tar]			導出容器生成一個tar包
13. docker import [容器tar] [鏡像名稱]:[标簽] 						用容器的tar檔案導入一個鏡像,使用該鏡像生成容器時 可能需要指定要執行的shell指令 eg:/bin/bash 否則可能會報錯 No command specified.
14. docker save [容器名]:[标簽] > [tar路徑eg:/home/test.tar]		導出鏡像到tar,這個指令會導出完整的鏡像
15. docker load -i [tar路徑eg:/home/test.tar] 					加載鏡像tar生成image
           

五、容器的管理

5.1 建立容器

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
           

兩個指令都會建立一個新的容器 不同點在于 run會直接啟動容器,create不會啟動容器。

一下指令選項沒有涉及 網絡 和 資料持久化

可選項:
-i , --interactive					: 即使沒有attach容器,容器也可以保持輸入輸出
-d, --detach			 			:	 容器在背景運作
-t , --tty  						: 為容器配置設定一個僞TTY(終端操作)

--add-host [host:ip] ...			:容器啟動時 為容器添加本地hosts映射
--dns [網關位址] ...					:為容器設定網關位址
-e [key=value] ...					:給容器這隻環境變量 eg:docker run -idt --name mycentos -e TEST=123456 centos 啟動後 進入容器 docker attath mycentos 執行指令 echo $TEST 就可以得到環境變量值
--expose [端口]						:為容器聲明對外暴露的端口号。但是沒有其他意義隻是标志容器工作的端口
-h,--hostname [主機名] 				:為容器指定主機名 預設是容器id
--oom-kill-disable 					:保證容器在占用記憶體過大時不被kill
-p [主機port]:[容器port] 			:将主機端口通路轉發到容器中
-P 									:将容器expose端口 全部映射到主機端口
--restart [always(一直嘗試重新開機)|on-failure:3(嘗試重新開機3次)]						:盡量保證容器中的守護程序挂掉後可以從新自啟動
           

強制删除所有的容器

docker rm -f $(docker ps -q -a)
           

5.2 檢視容器

docker ps  					:檢視運作的容器清單
docker ps  -a				:檢視全部容器清單(包含停止的容器)
docker ps -l 				:檢視最近啟動的容器
docker ps -q 				:查詢容器id
docker ps -s 				:檢視容器大小
           

5.3 連結到容器的标準輸入輸出

docker attach [容器名:容器id]
           

5.4 删除 、停止容器

docker stop  [容器名:容器id]
docker rm  [容器名:容器id]
           

5.5 重命名容器

docker rename [oldname] [newname]
           

5.6 檢視容器資訊

docker inspect [容器名|容器id]
           

5.7 在容器中執行指令

docker exec [-it(互動式執行)]  [容器名|容器id] [shell]
           

5.8 檢視容器中的程序

docker top [容器名|容器id]
           

5.9 複制容器與主控端的檔案

複制檔案 從主控端到容器中
docker cp [主控端檔案路徑] [容器id|容器名]:[檔案路徑]
複制檔案 從容器到主控端中
docker cp [容器id|容器名]:[檔案路徑] [主控端檔案路徑]
           

5.10 檢視容器與源鏡像的修改

docker diff [容器id|容器名]
           

5.11 檢視容器中輸出到終端的日志

docker logs [容器id|容器名]
           

5.12 檢視容器狀态(CPU 記憶體)

docker status [--no-stream(靜态輸出一行,而不是動态互動變化)] [容器id|容器名] 
           

六、資料持久化

6.1 資料卷

主控端中的檔案可以通過挂載的方式同步容器中的資料

資料卷挂載的特點

  1. 容器啟動時,如果主控端挂載目錄下有資料,則這些資料就同步到容器中。
  2. 同一個主控端目錄 可以同時挂載到多個容器中。
  3. 可以直接修改挂載資料
  4. 資料卷一直會存在,不會跟随容器删除。

    挂載指令

docker run -idt --name 容器名 -v [主控端目錄]:[容器目錄] 鏡像名
eg:
docker run -idt --name mycentos -v /usr/tmp:/usr/tmp centos
           

新容器與其他容器共享資料卷

docker run -idt --name 新容器名 --volumes-from 容器名 鏡像名
eg:
docker run -idt --name mycentos2 --volumes-from mycentos centos
           

七 常用指令

1、删除所有none鏡像

在docker反複build後,會存留很多none鏡像,下面指令一鍵删除所有none鏡像

docker rmi `docker images | grep  '<none>' | awk '{print $3}'`
           

2、所有的容器

docker rm -f $(docker ps -q -a)