前言

大家好,现在hexo博客已经部署到云服务器了(部署流程)为了后面能更方便地部署更多应用,我们需要用到docker,比如后续搭建一个简易的图床,来方便给文章配图。

知识扩展:Docker 是一个开源的应用容器引擎,它允许开发者打包应用以及应用的运行环境到一个可移植的容器中。这个容器可以在任何支持 Docker 的机器上运行,确保了应用在不同环境之间的一致性和隔离性。

Docker 使用容器来运行应用。容器与虚拟机相似,但更为轻量级,因为它们共享主机系统的内核,而不需要提供整个操作系统。这意味着容器可以快速启动,并且比虚拟机占用更少的内存和系统资源。点击官网查看更详细介绍

环境准备

服务器环境:debian12.4

连接服务器

用ssh工具远程连接服务器

1
ssh yourname@服务器ip

升级软件包

1
2
sudo su # 切换到root用户
apt update -y # 升级软件包

安装常用的软件

1
apt install wget curl vim git -y # debian比较纯净,以防万一

安装docker环境

安装docker

一键安装指令(需要等待一段时间),包括更新系统包、安装所需的包、添加 Docker 的官方 GPG 密钥、设置稳定版存储库、安装 Docker Engine及 containerd

1
wget -qO- get.docker.com | bash

注意:如果在安装过程中意外中断安装,如ssh连接断开,尝试重新执行wget -qO- get.docker.com | bash可能会出现报错,报错如下

1
2
3
4
+ sh -c 'apt-get update -qq >/dev/null'
+ sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null'
E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 2639 (apt-get)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

原因是apt没有关闭,解决办法:依次执行以下命令后再重新安装

1
2
3
4
5
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update

查看docker版本

1
docker -v

安装完成后,启动Docker服务并设置开机自启

1
2
systemctl start docker
systemctl enable docker

安装docker-compose

Docker Compose 可以通过其 GitHub 发布页提供的安装脚本来安装最新版本。你可以使用以下命令安装 Docker Compose,v2.25.0可以替换为其他版本,可以点击这里查看版本

1
2
sudo curl -L "https://github.com/docker/compose/releases/download/v2.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

查看docker-compose版本

1
docker-compose --version

修改 Docker 配置(可选)

内容参考:烧饼博客
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF

然后重启 Docker 服务

1
systemctl restart docker

卸载docker(非必要)

1
2
3
4
5
6
7
8
sudo apt remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine