欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Docker遷移服務(wù)到離線服務(wù)器的過(guò)程

 更新時(shí)間:2023年06月10日 08:45:46   作者:程序設(shè)計(jì)實(shí)驗(yàn)室  
最近遇到的這個(gè)場(chǎng)景,需要把之前開發(fā)的一套系統(tǒng)遷移到一個(gè)離線的服務(wù)器上,這個(gè)服務(wù)器有點(diǎn)麻煩,接入VPN后通過(guò)堡壘機(jī)才能訪問,速度也很慢,遇到不少坑,本文記錄一下遷移過(guò)程,需要的朋友可以參考下

前言

最近遇到的這個(gè)場(chǎng)景,需要把之前開發(fā)的一套系統(tǒng)遷移到一個(gè)離線的服務(wù)器上,這個(gè)服務(wù)器有點(diǎn)麻煩,接入VPN后通過(guò)堡壘機(jī)才能訪問,速度也很慢,遇到不少坑,本文記錄一下遷移過(guò)程。

基本信息

原本這套系統(tǒng)也挺簡(jiǎn)單的,Django 寫的后端接口,搭配 Vue+Echarts 大屏,數(shù)據(jù)庫(kù)用 Mysql 和 Redis 作為緩存,這些在原服務(wù)器上都是用 docker 部署的。

這臺(tái)離線的服務(wù)器是 Centos7.9 系統(tǒng)的,雖然不能訪問外網(wǎng),但還好有個(gè)本地的 yum 倉(cāng)庫(kù),可惜 yum 官方源少得可憐,只能安裝很有限的幾個(gè)軟件。

現(xiàn)在除了前端不需要遷移之外,其他的服務(wù)都需要遷移到這個(gè)離線的服務(wù)器上。

遷移步驟:

  • 在離線服務(wù)器上安裝 docker
  • 在原服務(wù)器上導(dǎo)出容器鏡像
  • 在離線服務(wù)器上傳并導(dǎo)入鏡像
  • 在離線服務(wù)器上傳各種docker配置并啟動(dòng)容器
  • 配置周邊組件,如 nginx

離線安裝docker

前面說(shuō)到這個(gè)服務(wù)器是有 yum 本地鏡像的,但里面并沒有 docker,所以需要自行下載 docker 的 RPM 安裝包。

在這個(gè)地址: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

需要下載以下安裝包(版本號(hào)本文撰寫時(shí)的最新版,請(qǐng)讀者自行下載當(dāng)下的最新版本)

  • containerd.io-1.6.21-3.1.el7.x86_64
  • docker-buildx-plugin-0.10.5-1.el7.x86_64
  • docker-ce-24.0.2-1.el7.x86_64
  • docker-ce-cli-24.0.2-1.el7.x86_64
  • docker-ce-rootless-extras-24.0.2-1.el7.x86_64
  • docker-compose-plugin-2.18.1-1.el7.x86_64

然后把這些安裝包都上傳到服務(wù)器

執(zhí)行命令安裝

sudo yum install containerd.io-1.6.21-3.1.el7.x86_64.rpm docker-ce-24.0.2-1.el7.x86_64.rpm # 以及其他...

就是把全部文件都放在同一個(gè) install 命令后面,因?yàn)檫@些包是有相互依賴要求的,如果一個(gè)個(gè)裝的話可能會(huì)因?yàn)轫樞騿栴}報(bào)錯(cuò)。

安裝之后啟動(dòng)一下 docker

sudo systemctl enable docker
sudo systemctl start docker

添加用戶組啥的也屬于安裝 docker 后的常規(guī)操作了

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

之后就可以不使用 root 用戶來(lái)執(zhí)行 docker 命令了

導(dǎo)出鏡像

導(dǎo)出鏡像有兩種方式

  • docker export - 對(duì)應(yīng) docker import 導(dǎo)入鏡像
  • docker save - 對(duì)應(yīng) docker load 導(dǎo)入鏡像

PS:這倆的導(dǎo)出導(dǎo)入命令的匹配的,不能混用

前者主要用于制作基礎(chǔ)鏡像,導(dǎo)出后是沒有歷史記錄和元數(shù)據(jù)的,也沒有 entrypoint 所以無(wú)法直接運(yùn)行,這次遷移服務(wù)使用 save 方式。

操作命令

docker save <container_id> -o image.tar

也可以重定向

docker save <container_id> > image.tar

補(bǔ)充一下這倆方式的具體區(qū)別

  • 文件大小不同,export 導(dǎo)出的鏡像文件體積小于 save 保存的鏡像,因?yàn)?save 會(huì)把所有 layer 都導(dǎo)出
  • save 可以把多個(gè)鏡像打包到一個(gè)文件,export 不可以
  • export 導(dǎo)出(import 導(dǎo)入)是根據(jù)容器拿到的鏡像,再導(dǎo)入時(shí)會(huì)丟失鏡像所有的歷史記錄和元數(shù)據(jù)信息(即僅保存容器當(dāng)時(shí)的快照狀態(tài)),所以無(wú)法進(jìn)行回滾操作
  • save 保存(load 加載)的鏡像,沒有丟失鏡像的歷史,可以回滾到之前的層(layer)

應(yīng)用場(chǎng)景區(qū)別

  • docker export 的應(yīng)用場(chǎng)景:主要用來(lái)制作基礎(chǔ)鏡像,比如我們從一個(gè) ubuntu 鏡像啟動(dòng)一個(gè)容器,然后安裝一些軟件和進(jìn)行一些設(shè)置后,使用 docker export 保存為一個(gè)基礎(chǔ)鏡像。然后,把這個(gè)鏡像分發(fā)給其他人使用,比如作為基礎(chǔ)的開發(fā)環(huán)境。
  • docker save 的應(yīng)用場(chǎng)景:如果我們的應(yīng)用是使用 docker-compose.yml 編排的多個(gè)鏡像組合,但我們要部署的客戶服務(wù)器并不能連外網(wǎng)。這時(shí)就可以使用 docker save 將用到的鏡像打個(gè)包,然后拷貝到客戶服務(wù)器上使用 docker load 載入。

打包數(shù)據(jù)

在舊的服務(wù)器上,使用了 docker 來(lái)部署 MySQL 服務(wù),并且將 data 映射出來(lái),需要把 data 也一并遷移到新的服務(wù)器上。

MySQL docker 的 volumes 配置

volumes:
	- ./data:/var/lib/mysql

因?yàn)閂PN帶寬很低,這次使用 tar + bzip2 來(lái)打包壓縮

tar -cjvf ./data data.tar.bz2

命令參數(shù)說(shuō)明:

  • -c: 建立一個(gè)壓縮檔案的參數(shù)指令 (create)
  • -j: 使用 bzip2 壓縮
  • -v: 壓縮的過(guò)程中顯示詳情 (verbose)
  • -f: 指定文件名,這個(gè)參數(shù)后面就不能再帶其他參數(shù)了

然后將這個(gè) data.tar.bz2 上傳到新的服務(wù)器。

解壓命令我也貼一下

tar -xjvf data.tar.bz2

這個(gè)命令會(huì)在當(dāng)前目錄生成 data 目錄。

命令參數(shù)說(shuō)明:

  • -x: 表示解壓 (extract)
  • 其他的參數(shù)上面有了

導(dǎo)入鏡像

把前面導(dǎo)出的 docker 鏡像上傳后,執(zhí)行導(dǎo)入命令

docker load &lt; image.tar

之后執(zhí)行 docker images 看看是否導(dǎo)入成功

啟動(dòng)容器

把原本的幾個(gè) docker-compose 配置上傳

之前為了方便更新,Django項(xiàng)目是上傳代碼之后在服務(wù)器直接 build,像這樣

version: "3.6"
services:
  web:
    restart: always
    build: .
    environment:
      - ENVIRONMENT=docker
      - URL_PREFIX=demo/api
      - DEBUG=false
      - DEFAULT_DATABASE=mysql
    command: uwsgi uwsgi.ini
    volumes:
      - .:/code

但在離線服務(wù)器上,沒有網(wǎng)絡(luò)肯定是沒法 build 了

所以要把 build . 改成 image: 鏡像名稱

搞定后順利啟動(dòng)~

配置周邊組件

只提供接口的話,也沒啥啦,再安裝個(gè) nginx 就好

然而眾所周知 yum 的默認(rèn)源連 nginx 都沒有,要安裝 nginx 的話還得添加 epel-release 源

sudo yum install epel-release

萬(wàn)幸,離線服務(wù)器的本地源有這個(gè)東西

sudo yum update
sudo yum install nginx

搞定~

然后還是老套路,用 systemctl 啟動(dòng) nginx,不重復(fù)了。

這個(gè)服務(wù)器很折騰的,既然搞定了,得測(cè)試一下,但是接口都不開放,ssh鏈接也是通過(guò)多層跳轉(zhuǎn)的,好像沒法開啟 ssh-tunnel 轉(zhuǎn)發(fā)在本地測(cè)試。

所以只能用 curl 之類的工具來(lái)測(cè)試一下。

不過(guò)我這次另辟蹊徑,用命令行瀏覽器來(lái)試試能不能打開項(xiàng)目的網(wǎng)頁(yè)。

分別試了這倆:

  • w3m
  • lynx

成功打開了網(wǎng)頁(yè),這倆瀏覽器的效果都差不多。

參考資料

到此這篇關(guān)于使用Docker遷移服務(wù)到離線服務(wù)器的文章就介紹到這了,更多相關(guān)Docker遷移服務(wù)到離線服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在IntelliJ IDEA中使用Docker的開發(fā)指南

    在IntelliJ IDEA中使用Docker的開發(fā)指南

    這篇文章主要給大家介紹了在IntelliJ IDEA中使用Docker開發(fā)指南,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)我們的使用Docker有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • 云原生之使用Docker部署homer靜態(tài)主頁(yè)的方法步驟

    云原生之使用Docker部署homer靜態(tài)主頁(yè)的方法步驟

    本文主要介紹了云原生之使用Docker部署homer靜態(tài)主頁(yè)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 使用Docker-compose離線部署Django應(yīng)用的方法

    使用Docker-compose離線部署Django應(yīng)用的方法

    這篇文章主要介紹了使用Docker-compose離線部署Django應(yīng)用的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • docker交叉編譯工具鏈解讀

    docker交叉編譯工具鏈解讀

    使用Docker容器進(jìn)行交叉編譯具有環(huán)境隔離、一致性、可移植性和簡(jiǎn)化配置等優(yōu)勢(shì),以下是一個(gè)示例的Dockerfile,用于創(chuàng)建一個(gè)包含C++11 ARM交叉編譯工具鏈的Docker容器,構(gòu)建完成后,可以在容器中進(jìn)行ARM交叉編譯
    2024-12-12
  • 為docker中的nginx配置https的方法步驟

    為docker中的nginx配置https的方法步驟

    這篇文章主要介紹了為docker中的nginx配置https的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • docker安裝nacos2.2.4圖文詳解(含:nacos容器啟動(dòng)參數(shù)、環(huán)境變量、常見問題整理)

    docker安裝nacos2.2.4圖文詳解(含:nacos容器啟動(dòng)參數(shù)、環(huán)境變量、常見問題整理)

    文章詳細(xì)介紹了如何在Docker中下載、安裝和配置Nacos?2.2.4,包括在線和離線安裝步驟、使用不同網(wǎng)絡(luò)模式(如Host模式)以及一些常見問題的解決方法,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • docker容器狀態(tài)出現(xiàn)Exit(1)的問題及解決

    docker容器狀態(tài)出現(xiàn)Exit(1)的問題及解決

    這篇文章主要介紹了docker容器狀態(tài)出現(xiàn)Exit(1)的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案

    Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案

    這篇文章主要介紹了Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案,重點(diǎn)給大家介紹如何把shell/sql腳本放入/docker-entrypoint-initdb.d/目錄中,讓容器啟動(dòng)的時(shí)候自動(dòng)執(zhí)行創(chuàng)建
    2021-06-06
  • docker?images的常用方式

    docker?images的常用方式

    這篇文章主要介紹了docker?images的常用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 如何使用 Docker 部署 Spark 集群

    如何使用 Docker 部署 Spark 集群

    本文介紹了如何通過(guò)DockerCompose部署一個(gè)Spark集群,包括一個(gè)Master節(jié)點(diǎn)和多個(gè)Worker節(jié)點(diǎn),環(huán)境要求包括DockerEngine、DockerCompose和網(wǎng)絡(luò)環(huán)境,通過(guò)配置docker-compose.yml文件,可以定義和運(yùn)行多容器應(yīng)用,感興趣的朋友一起看看吧
    2025-02-02

最新評(píng)論