安装和使用 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。