Ubuntu22.04 离线安装 Docker,部署应用
本文最后更新于24 天前

需求

客户的服务器不连接外网,在不连接互联网的情况下使用 ubuntu 22.04 基于 docker 部署项目。 ## 解决方案

制作apt源

把部署项目所需的软件包制作成一个自定义的源,复制到内网使用,计划使用软件如下: 安装docker需要 docker-ce docker-ce-cli containerd.io docker-compose-plugin(可选)运维工具 vim net-tools netplan.io htop ufw iptables其他基础依赖

#!/bin/bash
set -e

# 添加 Docker 官方源
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
add-apt-repository deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable

apt update
apt install -y dpkg-dev

#rm -rf ./offline-packages
rm -rf ./offline-packages.tar.gz

# 创建目录
mkdir -p ./offline-packages
cd ./offline-packages

# 获取依赖列表
PKG_LIST=$(apt-cache depends --recurse --no-recommends --no-suggests \
            --no-conflicts --no-breaks --no-replaces --no-enhances \
          ca-certificates curl gnupg lsb-release software-properties-common apt-transport-https \
          git-man git iptables less patch \
          netplan.io htop ufw openvswitch-switch \
    docker-ce docker-ce-cli containerd.io docker-compose-plugin vim net-tools |
    grep -E '^[a-zA-Z0-9]' | sort -u)

# 下载所有包
for pkg in $PKG_LIST; do
    echo 正在下载: $pkg
    apt-get download $pkg || echo 跳过无法下载的包: $pkg
done

# 创建仓库索引
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

tar czvf ../offline-packages.tar.gz ./

内网导入apt源,并安装软件

导入软件源

#!/bin/bash
set -e

rm -rf /data/offline-packages
mkdir /data/offline-packages

tar zxvf offline-packages.tar.gz -C /data/offline-packages
cd /data/offline-packages

# 创建 sources.list 条目
rm /etc/apt/sources.list.d/offline.list
echo deb [trusted=yes] file:$(pwd) ./ | sudo tee /etc/apt/sources.list.d/offline.list
sudo apt update

安装软件

sudo apt install -y docker-ce docker-ce-cli containerd.io vim net-tools docker-compose-plugin

导出docker 镜像

# 导出redis
REDIS_IMAGE_VERSION=7.4.2-alpine
REDIS_IMAGE_TAG=redis:$REDIS_IMAGE_VERSION
docker save -o $EXPORT_FOLDER/redis-$REDIS_IMAGE_VERSION.tar $REDIS_IMAGE_TAG

# 导出Portainer
PORTAINER_IMAGE_VERSION=2.33.1
PORTAINER_IMAGE_TAG=portainer/portainer-ce:$PORTAINER_IMAGE_VERSION
docker save -o $EXPORT_FOLDER/portainer-$PORTAINER_IMAGE_VERSION.tar $PORTAINER_IMAGE_TAG

# 导出mysql
MYSQL_IMAGE_VERSION=5.7.44
MYSQL_IMAGE_TAG=mysql:$MYSQL_IMAGE_VERSION
docker save -o $EXPORT_FOLDER/mysql-$MYSQL_IMAGE_VERSION.tar $MYSQL_IMAGE_TAG

内网导入docker镜像

docker load -i ***.tar

netplan 配网

修改/etc/netplan/*.yaml
# Let NetworkManager manage all devices on this system
network:
ethernets:
ens32: ## network card name
dhcp4: false
addresses:
- 192.168.3.88/24 ## set static IP
routes:
- to: default
via: 192.168.3.1 ## gateway
nameservers:
addresses: [ 8.8.8.8,192.168.3.1 ]
version: 2

修改完配置后,使用下面命令使得netplan配置生效:

netplan generate 
netplan apply


扫码关注,及时关注技术动态


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇