Docker的安裝與容器應用部署
一. 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的常用命令
實現步驟:
- 拉取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
- 上傳jdk1.8;
- 編寫Dockerfile檔案;
- 構建映象;
- 測試(基於新映象建立並執行容器,執行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
如果本地存在同名的映象需要先刪除映象後拉取
感謝閱讀,如有錯誤之處,請批評指正
相關文章
- Docker容器與虛擬化技術:OpenEuler 部署 docker容器應用Docker
- Docker容器化部署Python應用DockerPython
- Docker 安裝、常用命令、應用部署Docker
- zabbix容器化安裝及監控docker應用Docker
- Docker Compose 安裝與部署Docker
- Win10 下安裝 docker,部署 Web 應用Win10DockerWeb
- .NET Core容器化之多容器應用部署(Docker-Compose)Docker
- 使用Docker安裝應用Docker
- 使用Docker容器化部署實踐之Django應用部署(一)DockerDjango
- docker 容器操作、應用部署、mysql,redis,nginx、遷移與備份、DockerfileDockerMySqlRedisNginx
- docker容器安裝MySQLDockerMySql
- docker容器安裝vimDocker
- Docker 容器監控原理及 cAdvisor 的安裝與使用Docker
- (四)Docker安裝使用容器Docker
- docker 容器安裝配置 headscaleDocker
- 雲伺服器:如何在docker容器中部署應用伺服器Docker
- Linux 中 Docker 的部署安裝LinuxDocker
- 應用容器引擎-DockerDocker
- Docker常用的應用部署Docker
- ubuntu20安裝docker、redis、mysql及部署net6應用UbuntuDockerRedisMySql
- Centos7安裝安裝部署dockerCentOSDocker
- Java服務端容器化:Docker與Kubernetes的應用Java服務端Docker
- docker 安裝 Redis 主從容器DockerRedis
- [DPDK] Docker容器內安裝DPDKDocker
- Docker_Docker應用部署4Docker
- Docker Compose 多容器應用Docker
- Docker部署Angular應用DockerAngular
- Kubernetes 部署 PHP-fpm 與 nginx 多容器應用PHPNginx
- 微服務--MQ安裝(+Docker命令應用)微服務MQDocker
- Hbase的安裝與部署
- Linux 下的 Docker 安裝與使用 Docker-compose 安裝LinuxDocker
- docker下安裝部署jenkins(一)DockerJenkins
- docker 安裝部署 supervisor 小記Docker
- docker安裝部署djanggo和pythonDockerGoPython
- 如何快速部署容器化應用
- 使用 Docker 部署 Node 應用Docker
- Windows Server 2019 container容器化-Docker安裝WindowsServerAIDocker
- Docker安裝與使用Docker