Docker的安裝與容器應用部署

witme777發表於2020-10-19

一. Docker概述

Docker是一個開源的應用容器引擎,基於Go語言開發。Docker可以讓開發者打包他們的應用,

1.1 Docker的應用場景:

  • web應用的自動化打包和釋出
  • 自動化測試的持續整合、釋出
  • 在服務型環境中部署和調整資料庫或其他的後臺應用

Docker借鑑了標準集裝箱的概念。

標準集裝箱將貨物運往世界各地,Docker將這個模型運用到自己的設計中,唯一不同的是:集裝箱運輸貨物,而Docker運輸軟體。

使用Docker可以實現開發人員的開發環境、測試人員的測試環境、運維人員的生產環境的一致性。

1.2 Docker與傳統虛擬機器的比較

1.2.1傳統虛擬機器技術

基於安裝在主作業系統上的虛擬機器管理系統(如:VirtualBox和VMWare等)

**結構:**基礎設施–主作業系統–虛擬機器管理系統–Virtual Machine–虛擬作業系統

1.2.2Docker容器

是在作業系統層面上實現虛擬化,直接複用本地主機的作業系統,而傳統虛擬機器則是在硬體層面實現虛擬化。

**結構:**基礎設施–主作業系統–Docker

**特點:**docker啟動速度比較快,佔用體積較小;

**注意:**這裡的docker不會像vm傳統的虛擬系統一樣在主系統上虛擬出來,而是一個與主系統並存的平級的作業系統;

1.3 Docker的組成部分

在這裡插入圖片描述

Docker守護程式:就是駐紮在基礎設施上的並行的作業系統,是Docker伺服器端程式,負責支撐Docker 容器的執行以及映象的管理

倉庫Registry:一個存放多個映象的倉庫,可以理解為程式碼控制中的程式碼倉庫

映象Images:用於建立Docker容器的模板,映象是基於聯合檔案系統的一個層式結構,由一系列指令一步步構建的系統指令。

容器:容器是獨立執行的一個或一組應用,實質就是虛擬系統;

Docker客戶端:Docker 客戶端通過命令列或者其他工具使用 Docker API 與 Docker 的守護程式通訊

2. Docker安裝與啟動

2.1 Docker的安裝

Docker可以執行在多種作業系統上,本例使用CentOS7。

安裝步驟:

1.更新yum源為ustc;

sudo yum update

2.安裝docker;

#安裝需要的安裝包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

注意:yum-util提供yum-config-manager功能,另外兩個是devicemapper驅動依賴;

3.設定yum源

3.1更新docker的映象源為ustc;

sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/dockerce/linux/centos/docker-ce.repo

3.2更新docker的映象源為anliyun(可能失敗);

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

4.安裝docker,-y代表輸入介面確認

sudo yum install -y docker-ce
sudo yum install docker-ce

注意:出現輸入的介面時,都要選擇y;

5.使用docker命令操作docker

# 檢視docker的版本
docker -v
# 啟動
systemctl start docker
# 停止
systemctl stop docker
#檢視docker啟動狀態
systemctl status docker

2.2. 映象相關命令

2.2.1設定ustc映象(安裝docker必要步驟)

ustc是老牌的linux映象服務提供者了。ustc的docker映象加速器速度很快。ustc docker mirror的優勢之一就是不需要註冊,是真正的公共服務。

安裝映象步驟:

1.編輯json檔案

#在 /etc/docker/daemon.json下編輯(先建立,如果沒有的話)
mkdir /etc/docker #建立資料夾
vi /etc/docker/daemon.json #建立並編輯檔案

2.在json檔案中編輯

{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

2.2.2 檢視映象

docker images

**注意:**查詢結果列表中的各個欄位的意思為:

  • REPOSITORY:映象名稱
  • TAG:映象標籤
  • IMAGE ID:映象ID
  • CREATED:映象的建立日期
  • SIZE:映象檔案的大小

2.2.3 搜尋映象

#在網路中去查詢所需要的映象名
docker search 映象名稱

注意:在查詢結果列表中的各項含義:

  • NAME:映象名稱
  • DESCRIPTION:映象描述
  • STARS:使用者評價,反應一個映象的受歡迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自動構建,表示該映象由Docker Hub自動構建流程建立的

2.2.4 拉取映象

#從中央Docker倉庫去下載映象到本地,如果限制版本號,預設下載最新
docker pull 映象名稱

2.2.5 刪除映象

#可以按照映象的id來刪除
docker images
docker rmi 映象id
#刪除所有映象
docker rmi $(docker images -q)
docker rmi `docker images -q`

2.3 Docker啟動和停止命令

# 啟動docker服務: 
systemctl start docker
# 停止docker服務: 
systemctl stop docker 
# 重啟docker服務: 
systemctl restart docker 
# 檢視docker服務狀態: 
systemctl status docker 
# 設定開機啟動docker服務: 
systemctl enable docke

注意:

拉取:docker pull 映象名稱:版本號(若不指定則會拉取最新的版本)

刪除全部映象:docker rmi ` docker images -q ` (慎用)

2.4 容器相關命令

容器,也是docker中的核心概念,容器是由映象執行產生的執行例項。映象和容器的關係,就如同Java語言中類和物件的關係。

2.4.1 檢視容器

#檢視正在執行的容器
docker ps
#檢視所有容器使用命令
docker ps -a

2.4.2 建立並啟動容器

可以基於已有的映象來建立和啟動容器,建立與啟動容器使用命令

docker run 容器型別 --name=容器名 映象名 /bin/bash

引數說明:

-i:表示執行容器

-t:表示容器啟動後會進入其命令列。加入這兩個引數後,容器建立就能登入進去。即分配一個偽終端。 --name :為建立的容器命名。

-v:表示目錄對映關係(前者是宿主機目錄,後者是對映到宿主機上的目錄),可以使用多個-v做多個目錄或檔案 對映。注意:最好做目錄對映,在宿主機上做修改,然後共享到容器上

-d:在run後面加上-d引數,則會建立一個守護式容器在後臺執行(這樣建立容器後不會自動登入容器,如果只加-i -t 兩個引數,建立後就會自動進去容器)

-p:表示埠對映,前者是宿主機埠,後者是容器內的對映埠。可以使用多個-p做多個埠對映

3. 建立並啟動互動式容器

以互動式方式建立並啟動容器,啟動完成後,直接進入當前容器。使用exit命令退出容器。需要注意的是以此種方式 啟動容器,如果退出容器,則容器會進入停止狀態

操作步驟:

1.拉取映象(容器是基於映象執行);

docker pull centos7

2.建立並啟動互動式容器,docker互動式容器(啟動容器之後會直接進入容器的命令列終端,如果退出則容器停止執行)

docker run -it --name=mycentos7 centos:7 /bin/bash

小結

# 檢視容器
docker ps -a

# 建立並啟動互動式容器mycentos7
docker run -it --name=mycentos7 centos:7 /bin/bash

啟動互動式容器之後是直接進入容器終端;可以檢視容器的檔案結構;使用exit命令則會退出終端並且停止容器。

4. 建立並啟動守護式容器

建立一個守護式容器;如果對於一個需要長期執行的容器來說,我們可以建立一個守護式容器。命令如下(容器名稱 不能重複):

操作步驟:

建立並啟動docker容器,可以在後臺執行;

# 建立並啟動守護式容器mycentos2
docker run -di --name=mycentos2 centos:7

在建立互動式容器之後如果退出的話,容器處於停止狀態,可以使用命令再次啟動容器,使用命令進入容器並操作。

# 啟動容器後再進入容器
docker exec -it mycentos2 /bin/bash

小結

守護式容器在啟動之後會一直在後臺執行,即使進入容器之後執行exit命令也不會停止容器;

適用於需要長期執行容器的情況

5. 停止&拷貝&掛載&檢視ip&刪除容器

5.1 容器停止、啟動

#停止正在執行的容器,通過容器名稱或容器id
docker stop mycentos2
#啟動已執行的容器,通過容器名稱或容器id
docker start mycentos2

5.2 拷貝檔案:容器與宿主機之間的檔案互拷

將linux宿主機的檔案拷貝到容器中

#建立檔案
touch abc.txt 
#拷貝到容器目錄下,這就把檔案拷貝到容器根目錄了
docker cp abc.txt mycentos2:/
#進入到mycentos2容器
docker exec -it mycentos2 /bin/bash

ll # 檢視的根目錄下的檔案

exit #退出容器,從容器cp到宿主機

#在宿主機下執行,將根目錄下的/abc.txt複製到宿主機的root目錄下
docker cp mycentos2:/abc.txt /root
#注意這裡的cba.txt在根目錄與bin/bash無關

5.3 目錄掛載:將宿主機的目錄對映到容器對於目錄

在建立容器的時候,將宿主機的目錄與容器內的目錄進行對映,兩者就可以共享該資料夾了,這樣我們就可以通過修改宿主機某個目錄的檔案從而去影響容器。

# 建立linux宿主機器要掛載的目錄 
mkdir /usr/local/test

# 建立並啟動容器mycentos3,並掛載linux中的/usr/local/test目錄到容器的/usr/local/test;也就是在 linux中的/usr/local/test中操作相當於對容器相應目錄操作 
docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7

# 在linux下建立檔案 
touch /usr/local/test/def.txt

# 進入容器 
docker exec -it mycentos3 /bin/bash

注意:共享的是多級的目錄,可能會出現許可權不足的提示。 這是因為CentOS7中的安全模組selinux把許可權禁掉了,需要新增引數 --privileged=true 來解決掛載的目錄沒有許可權的問題。

5.4 檢視容器IP

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-mNBLI9ZU-1603091450880)(G:/迅雷下載/springboot課件/docker/筆記/assets/1559728403934.png)]

#在linux宿主機下檢視 mycentos3 的ip
docker inspect mycentos3

**注意:**容器之間在一個區域網內,linux宿主機器可以與容器進行通訊;但是外部的物理機筆記本是不能與容器直接通 信的,如果需要則需要通過宿主機器埠的代理。

5.5 容器刪除:只能刪除停止狀態的容器;

#刪除容器
docker rm mycentos7 
#刪除所有容器,慎用
docker rm docker `ps -a -q`
docker rm docker $(ps -a -q)

**注意:**如果容器是執行狀態則刪除失敗,需要停止容器才能刪除

二.Docker應用部署

2.1 MySQL容器部署

2.2.1 拉取(下載)mysql映象;

# 拉取MySQL 5.7映象
docker pull centos/mysql-57-centos7

2.2.2 建立並啟動守護式容器;

在建立mysql容器的時候使用-p指定埠對映實現連線;

# 建立mysql5.7容器 
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

注意:

-p 代表埠對映,格式為 宿主機對映埠:容器執行埠
-e 代表新增環境變數 MYSQL_ROOT_PASSWORD 是root使用者的遠端登陸密碼(如果是在容器中使用root登入的話, 那麼其密碼為空

2.2.3 在容器中操作mysql;

# 拉取MySQL 5.7映象 
docker exec -it mysql5.7 /bin/bash
# 登入容器裡面的mysql 
mysql -u root -p

2.2.4 遠端登陸MySql

# 檢視ip;如果以後要內部連線該mysql,如其他容器中要連線mysql容器的mysql的時候,可以使用如下命令檢視Ip 
docker inspect mysql5.7

在建立容器的時候mysql的root使用者可以指定遠端訪問的密碼。

2.2.5 使用遠端登陸新版MySql

USE mysql;
#1.檢視使用者資訊
select host,user,plugin,authentication_string from mysql.user;
#我們需要更新root和%host兩個賬號的密碼為登陸密碼root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
#更新許可權
FLUSH PRIVILEGES;

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-u6TTQ5ZF-1603091450883)(asset/00122601.bmp)]

小結

在建立容器的時候指定環境變數MYSQL_ROOT_PASSWORD表示使用root進行遠端連線時候的密碼。如果需要進行遠端連線的話可以使用-p進行埠對映。

2.2 Tomcat容器部署

2.2.1 拉取tomcat映象;

將專案檔案上傳到容器中的tomcat目錄(webapps)

建立容器的時候可以指定-v進行目錄掛載,tomcat在容器中的目錄(/usr/local/tomcat/webapps)

#拉取映象
docker pull tomcat

2.2.2 建立並啟動tomcat容器;

將預設的8080埠對映到宿主機的9000埠;

把wabapps的資料夾共享到宿主機;

#建立tomcat容器,掛載webapps目錄
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat

**注意:**本機的tomcat是空的,訪問後是404狀態

# 如果出現 WARNING: IPv4 forwarding is disabled. Networking will not work. #執行如下操作 
# 1、編輯 sysctl.conf 
vi /etc/sysctl.conf
# 2、在上述開啟的檔案中後面新增 
net.ipv4.ip_forward=1
# 3、重啟network 
systemctl restart network

2.2.3 訪問容器中tomcat

http://192.168.76.128:9000

小結

上傳專案檔案可以使用容器的目錄掛載功能,外部訪問可以使用埠對映

2.3 Nginx容器部署

2.3.1 拉取nginx映象;

# 拉取nginx映象
docker pull nginx

2.3.2 建立並啟動nginx容器;

nginx的預設訪問埠是:80

在建立容器的時候需要進行埠對映,指定-p,對映到宿主機的埠80,然後通過宿主機的80埠來訪問;

# 建立nginx容器 
docker run -di --name=mynginx -p 80:80 nginx

在瀏覽器上訪問容器中nginx,http://192.168.76.128

小結

如果宿主機被佔用了80埠,那麼在指定對映的時候可以改變宿主機的埠對映,在訪問時也需要帶上埠號。

2.4 Redis容器部署

2.4.1 拉取redis映象;

# 拉取redis映象 
docker pull redis

2.4.2 建立並啟動redis容器;

預設埠是6379,如果需要外部訪問則可以使用埠對映;

# 建立redis容器 
docker run -di --name=myredis -p 6379:6379 redis

2.4.3 連線redis容器:

①使用命令列客戶端 ②使用圖形介面工具

#進入redis容器 
docker exec -it myredis /bin/bash
#進入redis安裝目錄 
cd /usr/local/bin
#連線redis 
./redis-cli

2.4.4. 遠端連線redis

可以使用redis圖形介面客戶端工具連線redis,埠也是6379。

2.5 RabbitMq備署

docker run -id --name=changgou-rabbit -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15672:15672 -p 25672:25672 rabbitmq:management

三 、備份環境遷移(快速部署)

3.1 docker-compose簡介&安裝

Compose專案是Docker官方的開源專案,負責實現對Docker容器叢集的快速編排。它是一個定義和執行多容器的 docker應用工具。

使用compose,你能通過YMAL檔案配置你自己的服務,然後通過一個命令,你能使用配置檔案 建立和執行所有的服務。

3.1.1 下載安裝

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/dockercompose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 設定檔案可執行許可權 
sudo chmod +x /usr/local/bin/docker-compose
# 檢視版本資訊 
docker-compose -version

注意:在設定檔案可執行許可權中:

+X ,加可執行, +r,可讀,+w,可寫

docker-compose是一個應用工具;可以通過配置docker-compose.yml檔案同時啟動多個容器。

部署專案時可以編寫一個docker-compose.yml檔案作為啟動專案單位,同時啟動專案相關的那些容器。

3.1.2 解除安裝

#二進位制包方式安裝的,刪除二進位制檔案即可 
rm /usr/local/bin/docker-compose

3.2 compose常用命令

指令功能
build指定服務映象Dockerfile所在路徑
cap_add, cap_drop指定容器的核心能力(capacity)分配
command覆蓋容器啟動後預設執行的命令
cgroup_parent指定父cgroup組,意味著將基礎該組的資源限制
container_name指定容器名稱。預設將會使用專案名稱服務名稱序號這樣的格式
devices指定設定對映關係
dns自定義DNS伺服器。可以是一個值,也可以是一個列表
dns_search配置DNS搜尋域。可以是一個值,也可以是一個列表
dockerfile指定額外編譯映象的Dockerfile檔案,可以通過該指令來指定
env_file從檔案中獲取環境變數,可以為單獨的檔案路徑或列表
environment設定環境變數,可以使用陣列或字典兩種格式
expose暴露埠
external_links連結到docker-compose.yml外部的容器,甚至可以是非Compose管理的外部容器
extra_hosts指定額外的host名稱對映資訊
image指定為映象名稱或映象ID。如果映象在本地不存在,Compose將會嘗試拉取這個鏡
labels指定服務映象Dockerfile所在路徑
links連結到其他服務中的容器
log_driver指定日誌驅動型別,類似於Docker中的–log-driver引數。目前支援三種日誌驅動型別: log_driver:“json-file”、log_driver:“syslog”、log_driver:“none”
log_opt日誌驅動的相關引數

3.3 docker-compose應用

docker-compose來實現一次啟動多個容器;

通過配置docker-compose模板檔案(docker-compose.yml),在這個配置檔案中去配置各個容器及其相關的依賴。

3.3.1 編寫模板yml檔案;

version: "2" 
services:    
  web:        
    images: nginx        
    ports: - "8080:80"        
    volumes: - /usr/local/abc:/usr/local/cba 
#volumes:
#networks

3.3.2 建立並啟動docker-compose專案

(模板檔案所在的目錄,docker-compose.yml)

# 建立資料夾 
mkdir -p /usr/local/mycompose
#進入資料夾 
cd /usr/local/mycompose
#建立 docker-compose.yml檔案;內容如下 
vi docker-compose.yml

3.3.3 編寫模板yml檔案

version: '3' 
services:  
  redis1:    
    image: redis #映象
    ports: #埠
      - "6379:6379"    
    container_name: "redis1" #容器名    
    networks: #網路
      - dev  
  mysql1:   
    image: centos/mysql-57-centos7   
    environment:            
      MYSQL_ROOT_PASSWORD: "root"    
    ports:
      - "3306:3306"    
    container_name: "mysql1"    
    networks:
      - dev  
  web1:
    image: tomcat    
    ports:
    - "9090:8080"
    container_name: "web1"
    networks:
    - dev
    - pro 
  networks:
    dev:    
      driver: bridge  
    pro:    
      driver: bridge

注意:docker-compose可以配置一個模板檔案實現一次可以啟動多個容器,執行時候可以執行一個up則會建立並啟動模板檔案中的各個服務。

模板檔案是yml格式的;編寫的時候需要注意其格式。

3.3.4 啟動

#啟動前最好把docker重啟,不然原來的tomcat/mysql/redis容器也是啟動狀態的話,那麼埠會衝突而啟動失敗 
systemctl restart docker
cd /usr/local/mycompose
docker-compose up
# 如果後臺啟動則使用如下命令 
docker-compose up -d
# 若要停止 
docker-compose stop

3.4 遷移與備份

在當前的容器中安裝了各種元件;期望在其他伺服器上也能快速擁有該容器的一切環境;可以將當前的容器製作為一個映象,再將該獎項複製到其他伺服器,其他伺服器再基於映象執行容器。

3.4.1 將容器儲存為一個映象;

第一個是我的docker名,第二個是保持的映象名

docker commit mynginx mynginx

3.4.2 備份映象tar檔案;

docker save -o mynginx.tar mynginx

3.4.3 載入恢復映象;

#刪除mynginx容器
docker rm mynginx
#刪除mynginx容器
docker rmi mynginx
#載入新映象
docker load -i mynginx.tar

注意:在執行docker load命令恢復映象時,需要先刪除原映象

3.4.4 基於映象再次執行容器

docker run -di --name=mynginx -p 80:80 mynginx

小結

docker容器可以儲存為一個映象;備份為一個映象包(*.tar)可以複製遷移到其他伺服器,再恢復該tar包中的映象,基於映象執行容器實現環境的一致。

3.5 使用Dockerfile建立映象

我們可以使用pull的方式從docker倉庫下載映象,也可以是使用自己打包的開發映象tar;這裡再提供一種方式:使用Dockerfile建立一個自定義jdk1.8的映象的方式;

注意第一種不帶有環境的映象,其餘兩種都可以複製映象環境;

自定義映象將環境整合到內部;Dockerfile將映象的配置資訊道Dockerfile檔案中,進行指令碼執行;兩者效果一致,第二種更好。

3.5.1 Dockerfile的概念

Dockerfile是由一系列命令和引數構成的文字檔案,在檔案中可以指定各個元件資源和執行命令等。

分析

假設在centos7作為基礎映象上;新增jdk1.8並構建一個包含jdk1.8的centos7新映象。

Dockerfile是由一系列命令和引數構成的文字檔案,在檔案中可以指定各個元件資源和執行命令等。

3.5.2 Dockerfile的常用命令

實現步驟:

  1. 拉取centos7映象;
#先檢視有沒有
#建立目錄
mkdir -p /usr/local/dockerjdk8/
ll
cd /usr/local/dockerjdk8/
#在jdk8的目錄下建立Dockfile檔案
vi Dockerfile

FROM centos:7 
MAINTAINER ITCAST 
WORKDIR /usr 
RUN mkdir  /usr/local/java 
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java/ 
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202 
ENV JRE_HOME $JAVA_HOME/jre 
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH 
ENV PATH $JAVA_HOME/bin:$PATH
# 4、執行命令構建映象;不要忘了後面的那個 "." 
docker build -t='jdk1.8' .
# 5、檢視映象是否建立完成 
docker images
  1. 上傳jdk1.8;
  2. 編寫Dockerfile檔案;
  3. 構建映象;
  4. 測試(基於新映象建立並執行容器,執行java -version)

小結

Dockerfile可以基於映象製作映象;docker build -t='jdk1.8' .

3.6 私有倉庫搭建與配置

有時候我們的伺服器無法訪問網際網路,或者你不希望將自己的鏡 像放到公網當中,那麼我們就需要搭建自己的私有倉庫來儲存和管理自己的映象。

私有倉庫的搭建步驟

# 1、拉取私有倉庫映象 
docker pull registry
# 2、啟動私有倉庫容器,預設埠5000
docker run -di --name=registry -p 5000:5000 registry
# 3、開啟瀏覽器 輸入地址http://宿主機ip:5000/v2/_catalog
#看到{"repositories":[]} 表示私有倉庫 搭建成功

# 4、修改宿主機daemon.json,之前只信任中央倉庫ip
vi /etc/docker/daemon.json    
# 在上述檔案中新增一個key,儲存退出。此步用於讓 docker 信任私有倉庫地址;注意將宿主機ip修改為自己宿主機真實ip 
{"insecure-registries":["宿主機ip:5000"]} 

# 5、重啟docker服務 
systemctl restart docker
# 啟動私有倉庫
docker start registry

小結

拉取registry映象;基於映象建立私有倉庫容器;

需要去修改docker的一個配置檔案指定私有倉庫地址;再訪問私有倉庫:http://ip:5000/v2/_catalog

3.7 將映象上傳至私有倉庫

目標:將製作的jdk1.8的映象上傳到私有倉庫

# 1、標記映象jdk1.8為私有倉庫的映象
docker tag jdk1.8 宿主機IP(192..):5000/jdk1.8
# 2、再次啟動私有倉庫容器
docker restart registry 
# 3、上傳標記的鏡到私有倉庫
docker push 宿主機IP:5000/jdk1.8
# 4、輸入網址檢視倉庫效果
192.168.76.128:5000/v2/_catalog

小結

將本地映象打標籤(標記本地映象為一個私有倉庫中的映象);將打了標籤的映象推送到私有倉庫。

3.8 從私有倉庫拉取映象

  • 私有倉庫與拉取映象的伺服器是在同一臺機器上:直接拉取映象; docker pull 私有倉庫地址/映象名稱
# 因為私有倉庫所在的伺服器上已經存在相關映象;所以先刪除;請指定映象名,不是id 
docker rmi 伺服器ip:5000/jdk1.8
#拉取映象 
docker pull 伺服器ip:5000/jdk1.8
#可以通過如下命令檢視 
docker 的資訊;瞭解到私有倉庫地址 docker inf
  • 私有倉庫與拉取映象的伺服器是不在同一臺機器上:需要去修改docker的配置檔案,指定私有倉庫地址;再執行拉取映象的命令。
#開啟配置檔案 
vi /usr/lib/systemd/system/docker.service
# 在開啟的上述檔案中按照下面的圖,新增如下的內容;注意修改下面內容中的ip地址 
--add-registry=192.168.12.135:5000 
--insecure-registry=192.168.12.135:5000 \
# 修改完後需要重新載入docker配置檔案並重啟
docker systemctl daemon-reload systemctl restart docker

如果本地存在同名的映象需要先刪除映象後拉取

dk1.8 宿主機IP(192…):5000/jdk1.8

2、再次啟動私有倉庫容器

docker restart registry

3、上傳標記的鏡到私有倉庫

docker push 宿主機IP:5000/jdk1.8

4、輸入網址檢視倉庫效果

192.168.76.128:5000/v2/_catalog




**小結**:

將本地映象打標籤(標記本地映象為一個私有倉庫中的映象);將打了標籤的映象推送到私有倉庫。

## 3.8 從私有倉庫拉取映象

- 私有倉庫與拉取映象的伺服器是在同一臺機器上:直接拉取映象; `docker pull 私有倉庫地址/映象名稱`

```shell
# 因為私有倉庫所在的伺服器上已經存在相關映象;所以先刪除;請指定映象名,不是id 
docker rmi 伺服器ip:5000/jdk1.8
#拉取映象 
docker pull 伺服器ip:5000/jdk1.8
#可以通過如下命令檢視 
docker 的資訊;瞭解到私有倉庫地址 docker inf
  • 私有倉庫與拉取映象的伺服器是不在同一臺機器上:需要去修改docker的配置檔案,指定私有倉庫地址;再執行拉取映象的命令。
#開啟配置檔案 
vi /usr/lib/systemd/system/docker.service
# 在開啟的上述檔案中按照下面的圖,新增如下的內容;注意修改下面內容中的ip地址 
--add-registry=192.168.12.135:5000 
--insecure-registry=192.168.12.135:5000 \
# 修改完後需要重新載入docker配置檔案並重啟
docker systemctl daemon-reload systemctl restart docker

如果本地存在同名的映象需要先刪除映象後拉取

感謝閱讀,如有錯誤之處,請批評指正

相關文章