天天看點

docker三大核心概念

1. docker鏡像(image)

鏡像是建立docker容器的基礎,docker鏡像類似于虛拟機鏡像,可以将它了解為一個面向docker引擎的隻讀子產品,包含檔案系統。

建立鏡像有兩種方法:

(1) 基于已有鏡像的容器建立。主要是利用docker commit指令。

(2) 基于dockerfile建立。

首先按照dockerfile的格式,編寫好dockerfile檔案,之後通過docker build指令來建立鏡像。docker build會讀取制定的dockerfile,由docker伺服器來建立鏡像。

2. docker容器(container)

容器是從鏡像建立的應用運作執行個體,容器之間是互相隔離、互不可見的。可以把容器看做一個簡易版的linux系統環境(包括root權限、程序空間、使用者空間和網絡空間等),以及運作在這個環境上的應用打包而成的應用盒子。

鏡像自身是自讀的,容器從鏡像啟動的時候,docker會在鏡像的最上層建立一個可寫檔案層,鏡像本身保持不變。

可以利用docker create指令建立一個容器,建立後的的容器處于停止狀态,可以使用docker start指令來啟動它。也可以運作docker run指令來直接從鏡像啟動運作一個容器。docker run = docker creat + docker start。

     當利用docker run建立并啟動一個容器時,docker在背景的标準操作包括:

    (1)檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載下傳。

    (2)利用鏡像建立并啟動一個容器。

    (3)配置設定一個檔案系統,并在隻讀的鏡像層外面挂載一層可讀寫層。

    (4)從主控端配置的網橋接口中橋接一個虛拟的接口到容器中。

    (5)從位址池中配置一個IP位址給容器。

    (6)執行使用者指定的應用程式。

    (7)執行完畢後容器終止。

基于鏡像建立一個容器并啟動

docker run --help

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

-d: detach  Run container in background and print container ID  表示以“守護模式”執行

-i: interactive  Keep STDIN open even if not attached  表示以“互動模式”運作容器

-t: tty  Allocate a pseudo-TTY 表示容器啟動後會進入其指令行(配置設定僞終端)

  -t選項讓Docker配置設定一個僞終端(pseudo-tty)并綁定到容器的标準輸入上,-i則讓容器的标準輸入保持打開(如在Linux終端輸入指令操作)

-e: 設定變量值

IMAGE:可以通過“鏡像名”或“鏡像 ID”來啟動容器。

檢視正在運作的容器

docker ps

檢視所有容器

docker ps –a

進入容器

docker attach CONTAINER-ID/NAMES

docker inspect --format "{{ .State.Pid }}" <container-id>

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

docker inspect --format "{{ .State.Pid }}" f83944c8b9e8

nsenter --target 11738 --mount --uts --ipc --net --pid

docker三大核心概念

以守護程序運作容器

Ctrl-P + Ctrl-Q     可退出并使容器繼續運作

停止容器

docker stop 容器名/ID

删除容器

docker rm 容器名/ID

檢視容器詳細資訊

docker inspect容器名/ID

3.docker倉庫(Repository)

Docker私有倉庫搭建和使用

上傳鏡像檔案到私有倉庫

安裝Docker後,可用通過官方提供的registry鏡像來搭建一套本地私有倉庫環境。

下載下傳registry鏡像:

docker pull registry

docker三大核心概念

基于私有倉庫鏡像運作容器:(上傳鏡像操作是要保證該容器為運作狀态)

docker run -d -p 5000:5000 [--privileged=true] -v /opt/data/registry:/tmp/registry registry

docker三大核心概念

通路私有倉庫:

curl http://192.168.8.236:5000/v2/_catalog

docker三大核心概念

修改鏡像的tag (加上IP和端點,否則無法上傳到私有倉庫)

docker tag <image id/image name> <host-ip>:5000/div_image_name

上傳鏡像

docker push 127.0.0.1:5000/div_image_name

docker三大核心概念

注:當tag使用内網IP時,需要配置docker服務registry證書;否則報如下錯誤:

docker三大核心概念

編輯 /etc/systemd/system/multi-user.target.wants/docker.service 中的ExecStart= 的結尾,加入 --insecure-registry=192.168.99.100:5000,将 192.168.99.100:5000 替換成你的 registry 位址。如果有很多 registry,可以設定多組。或者如果虛拟機的 IP 總是變化,也可以使用 CIDR 的形式,比如 --insecure-registry=192.168.99.0/24。

docker三大核心概念

systemctl daemon-reload

systemctl restart docker

檢視私有倉庫:

docker三大核心概念

從私有倉庫下載下傳鏡像檔案

登陸另外一台Docker用戶端

編輯 /etc/systemd/system/multi-user.target.wants/docker.service 中的ExecStart= 的結尾,加入--selinux-enabled --insecure-registry=192.168.99.100:5000,将 192.168.99.100:5000 替換成你的 registry 位址。

systemctl daemon-reload

systemctl restart docker

docker pull 192.168.8.236:5000/mysql5.7