将软件安装包,携带到甲方现场,然后在现场安装、配置、调测,经常会遇到各种各样的环境问题,导致软件的安装和配置失败。
为了解决这个现场安装带来的问题,早期的软件开发商们,干脆在公司里将软件系统安装到一台计算机/服务器之后, 然后将主机发货到甲方现场,直接上电即可使用。
这种在出厂前将软件预先装好,然后发给用户直接使用的方案,被称为 装箱/拆箱 方案
装箱/拆箱方案,显然是一个非常好用的工程方案,但是物理主机的发货,物流的原因,发货速度缓慢且不安全。
后来,很多企业将安装软件系统的物理主机替换为 虚拟机 ,将软件预装到虚拟机里,然后将这个虚拟机的镜像通过互联网发送给一线, 用户现场那边先使用虚拟化软件虚拟一个计算机,然后将这个虚拟机镜像加载起来,迅速就把软件系统给搭建起来了。
虚拟机是一个非常好用装箱/拆箱方案,后来被云端厂商们广泛采用,快速搭建自己的IT网络、操作系统这些基础设施。
虚拟机,显然是一个好用的装箱方案,但是,如果用来安装众多的软件,它里面还要预装操作系统,这时候成本就非常高。
后来,IT人员基于Linux的用户名空间隔离技术,在这个基础上开发出了容器技术 docker
docker同样提供了装箱/拆箱的方案,跟虚拟机比起来,更轻巧,它并不需要打包一个操作系统,只需要额外打包依赖的基础包和相关软件。
这使得docker相对虚拟机来说,更加的轻巧,然后被IT人员广泛使用。
现在很多软件开发商,由于自身软件安装和配置具有相当的复杂性,用户直接安装和配置,非常难以一次成功。 所以,这些软件厂商们通常会直接提供了已经安装和配置好的docker镜像的方案,让用户通过docker直接装载docker镜像,让用户减少了安装、配置的复杂性, 直接就可以运行它们的软件。
注意:下面的安装过程,是Ubuntu22上的安装过程,其他版本请另外查阅
# 更新系统包
apt-get update -y
# 安装依赖工具
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
# 添加 Docker官方GPG密钥
# 注意:下载秘钥可能会因为网络问题而失败,如果下载不成功,那么重试几次
mkdir -p /etc/apt/keyrings
rm /etc/apt/keyrings/docker.gpg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 重新更新系统包
apt-get update -y
#安装 Docker 引擎
apt-get install docker-ce docker-ce-cli containerd.io -y
# 启动 Docker 并设置开机自启
systemctl start docker
systemctl enable docker
systemctl status docker
# 验证镜像加速器是否生效
docker info
# 安装docker-compose
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 验证安装docker-compose
docker compose --version
Docker Hub 位于国外,现状国内网络环境可能无法直接访问,需通过镜像源加速拉取
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF
# 重新启动docker
systemctl daemon-reload
systemctl restart docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
newgrp docker # 立即生效,无需重新登录
在当前目录下,通过下列命令生成docker-compose.yml文件:
cat > docker-compose.yml << 'EOF'
version: '3'
services:
hello-world:
image: hello-world
EOF
在当前目录下,运行下列命令
# 启动docker-compose.yml
# 注意:docker-compose早期的命令是docker-compose,现在的命令是docker compose
docker compose up
注意:下面的安装过程,是Ubuntu24上的安装过程,其他版本请另外查阅
# 更新系统包
apt-get update -y
# 安装依赖工具
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
# 添加 Docker官方GPG密钥
# 注意:下载秘钥可能会因为网络问题而失败,如果下载不成功,那么重试几次
mkdir -p /etc/apt/keyrings
rm /etc/apt/keyrings/docker.gpg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 重新更新系统包
apt-get update -y
#安装 Docker 引擎
apt-get install docker-ce docker-ce-cli containerd.io -y
# 启动 Docker 并设置开机自启
systemctl start docker
systemctl enable docker
systemctl status docker
# 验证镜像加速器是否生效
docker info
# 安装docker-compose
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 验证安装docker-compose
docker compose --version
Docker Hub 位于国外,现状国内网络环境可能无法直接访问,需通过镜像源加速拉取
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF
# 重新启动docker
systemctl daemon-reload
systemctl restart docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
newgrp docker # 立即生效,无需重新登录
在当前目录下,通过下列命令生成docker-compose.yml文件:
cat > docker-compose.yml << 'EOF'
version: '3'
services:
hello-world:
image: hello-world
EOF
在当前目录下,运行下列命令
# 启动docker-compose.yml
# 注意:docker-compose早期的命令是docker-compose,现在的命令是docker compose
docker compose up