跳到主要内容
← 指南列表

安装和使用 Docker

使用 Docker,可以将程序和运行环境整体打包,在任何服务器上都能以同样的方式运行。以 Ubuntu 服务器为准进行说明。

1. 安装

使用 Docker 官方安装脚本。

curl -fsSL https://get.docker.com | sudo sh

如果不想每次都加 sudo,请将自己的账户加入 docker 组,然后重新连接。

sudo usermod -aG docker $USER

确认是否安装成功。

docker run --rm hello-world

如果出现“Hello from Docker!”,就说明成功了。

2. 试着运行容器

试着运行 Web 服务器(Nginx)。

docker run -d --name web -p 80:80 --restart unless-stopped nginx
  • -d 后台运行
  • -p 80:80 将服务器的 80 端口连接到容器的 80 端口
  • --restart unless-stopped 即使服务器重启,也会自动重新运行

在浏览器中访问 http://server-ip,就能看到 Nginx 页面。

3. 常用命令

docker ps                 # 运行中的容器列表
docker logs -f web        # 查看日志(按 Ctrl + C 退出)
docker restart web        # 重启
docker stop web           # 停止
docker rm web             # 删除(停止后)
docker images             # 已下载的镜像列表
docker system df          # Docker 占用的磁盘空间

4. 用 Docker Compose 一次管理多个

用一个配置文件就可以一起管理多个容器。创建 compose.yaml 文件。

services:
  web:
    image: nginx
    ports:
      - "80:80"
    restart: unless-stopped
docker compose up -d      # 运行
docker compose down       # 停止并删除
docker compose logs -f    # 查看日志

⚠️ 防火墙注意事项

用 Docker 开放的端口(-p)会无视 ufw 防火墙设置而对外开放。像 DB 这样只应在服务器内部使用的容器,请像下面这样只连接到 127.0.0.1。

docker run -d --name db -p 127.0.0.1:3306:3306 -e MARIADB_ROOT_PASSWORD=long-password mariadb

防火墙设置请参阅在防火墙中开放端口。

磁盘满了

不用的镜像、容器堆积起来,会占用大量磁盘空间。

docker system prune

这会清理未在运行的容器和未使用的镜像。确认可以删除后,请输入 y。

如果问题仍未解决,请在 Discord 提交工单。