在腾讯云 Debian 服务器上搭建 Docker 环境并部署常用服务

目录

裴先生
裴先生
发布于 2021-01-22 / 13 阅读
2
0
原创

背景

最近在腾讯云购买了为期 3 年的云服务器,尝试自己搭建一个博客网站。服务器基础配置如下:

服务器配置信息

# CPU 型号
root@VM-0-7-debian:~# cat /proc/cpuinfo | grep name | cut -f2 -d:
 Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz

# CPU 核心数
root@VM-0-7-debian:~# cat /proc/cpuinfo | grep "cpu cores" | cut -f2 -d:
 1

说明:这是一台 1 核 2GB 内存(1C2G)的小型云服务器。


服务器系统选择

选择 Debian 作为服务器操作系统,原因如下:

  • 底层非常稳定
  • 内核和内存占用极小
  • 在小内存云服务器上运行流畅

实测内存占用对比

  • CentOS 初始内存占用:20%–22%
  • Debian 初始内存占用:9%–11%

对于 1C2G 的低配服务器,Debian 明显更具优势。

📌 提示:Debian 国内镜像源配置可参考 Debian国内镜像源


Docker 简介

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。其核心特点包括:

  • 容器使用沙箱机制,相互隔离(类似 iPhone 的 App)
  • 容器间无直接接口
  • 性能开销极低

典型应用场景

  • Web 应用的自动化打包和发布
  • 自动化测试与持续集成/发布
  • 在服务型环境中部署和调整数据库等后台应用
  • 快速完成服务器环境搭建与项目部署
    62ADF6C3-6A05-4F1B-9890-870F3D73F94B.png

Docker 安装(Debian)

# 1. 清除旧版本(如有)
apt-get -y remove docker docker-engine docker.io

# 2. 更新源并安装 HTTPS 支持
apt-get update
apt-get install -y apt-transport-https ca-certificates wget software-properties-common

# 3. 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

# 4. 添加 Docker 仓库到 APT 源
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

# 5. 更新并验证仓库
apt update
apt-cache policy docker-ce

# 6. 安装 Docker CE
apt install docker-ce

# 7. 验证安装
systemctl status docker
docker -v

配置 Docker 镜像加速器

mkdir -p /etc/docker
vim /etc/docker/daemon.json

阿里云镜像源(推荐)

{
  "registry-mirrors": ["https://w5jpjsyt.mirror.aliyuncs.com"]
}

中科大镜像源

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

修改后需重启 Docker:systemctl restart docker


Docker 服务管理命令

操作命令
启动服务systemctl start docker
停止服务systemctl stop docker
重启服务systemctl restart docker
查看状态systemctl status docker
开机自启systemctl enable docker

Docker 核心命令详解

1. 镜像管理命令

docker images — 查看本地镜像

docker images

输出字段说明

字段含义
REPOSITORY镜像仓库名称(如 nginx, mysql
TAG镜像标签(版本标识,如 latest, 8.0
IMAGE ID镜像唯一标识符(SHA256 缩写)
CREATED镜像创建时间(距今多久)
SIZE镜像磁盘占用大小

💡 提示:同一个 IMAGE ID 可能对应多个 REPOSITORY:TAG(标签别名)。


docker search — 搜索 Docker Hub 镜像

docker search 镜像名称

输出字段说明

字段含义
NAME镜像名称
DESCRIPTION镜像简要描述
STARS星标数量,反映社区受欢迎程度
OFFICIAL[OK] 表示为官方认证镜像(由上游厂商维护)
AUTOMATED[OK] 表示该镜像是通过 GitHub 自动构建的

建议:优先选择 OFFICIAL[OK] 的镜像,安全性更高。


docker pull — 拉取镜像

docker pull 镜像名称[:标签]
  • 若不指定标签,默认拉取 latest 版本
  • 示例:
    docker pull tomcat:latest    # 拉取最新版 Tomcat
    docker pull mysql:8.0        # 拉取 MySQL 8.0
    

docker rmi — 删除镜像

# 删除指定镜像(可通过 REPOSITORY:TAG 或 IMAGE ID)
docker rmi nginx:latest
docker rmi a0d6c87b3f9a

# 删除所有本地镜像(谨慎操作!)
docker rmi $(docker images -q)

⚠️ 注意:若镜像被容器引用(即使容器已停止),需先删除容器才能删除镜像。


2. 容器管理命令

docker ps — 查看运行中的容器

docker ps

docker ps -a — 查看所有容器(包括已停止的)

docker ps -a

常用输出字段(默认未全显示,可加 --format 自定义):

字段含义
CONTAINER ID容器唯一ID
IMAGE创建容器所用的镜像
COMMAND容器启动时执行的命令
CREATED容器创建时间
STATUS运行状态(如 Up 2 hours, Exited (0) 10 minutes ago
PORTS端口映射信息
NAMES容器名称

🔍 实用技巧

# 只显示容器ID
docker ps -q

# 只显示运行中的容器ID
docker ps -q --filter "status=running"

docker stop - 停止容器

# 停止容器
docker stop mycentos2

docker start - 启动已停止的容器

# 启动已停止的容器
docker start mycentos2

docker cp - 文件拷贝

# 宿主机 → 容器
docker cp /host/file container_name:/container/path

# 容器 → 宿主机
docker cp container_name:/container/file /host/path

3. 创建与启动容器:docker run 参数详解

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数全称说明
-i--interactive保持 STDIN 打开,即使未连接(交互模式)
-t--tty分配一个伪终端(TTY),通常与 -i 联用实现命令行交互
-d--detach后台运行容器(守护式),不进入容器内部
--name为容器指定自定义名称(如未指定,Docker 自动生成随机名)
-p--publish端口映射:宿主机端口:容器端口,可多次使用映射多个端口
-P--publish-all自动将容器所有暴露端口映射到宿主机随机高端口
-v--volume挂载宿主机目录或文件到容器:宿主机路径:容器路径[:ro|rw]ro=只读,rw=读写,默认读写)
--rm容器停止后自动删除(适用于临时调试容器)
-e--env设置环境变量,如 -e MYSQL_ROOT_PASSWORD=123456
--network指定容器网络模式(如 bridge, host, none 或自定义网络)
--restart容器退出后的重启策略:no(默认)、on-failure[:max-retries]alwaysunless-stopped
--privileged赋予容器扩展权限(慎用,安全风险高)
-m / --memory限制容器最大内存使用量(如 512m, 1g
--cpus限制 CPU 使用核心数(如 --cpus="0.5" 表示最多使用半个 CPU 核心)

💡 组合使用示例

# 交互式 + 命名 + 目录挂载 + 环境变量
docker run -it --name myapp -v /host/data:/app/data -e DEBUG=true ubuntu:20.04 /bin/bash

# 守护式 + 端口映射 + 自动重启 + 内存限制
docker run -d --name webapp -p 8080:80 --restart unless-stopped -m 512m nginx

创建交互式容器

以交互式方式创建并启动容器,启动完成后直接进入容器命令行,使用 exit 退出。

⚠️ 注意:此种方式启动的容器,退出后会进入 停止状态

# 拉取镜像
docker pull centos:7

# 创建并启动交互式容器
docker run -it --name=mycentos7 centos:7 /bin/bash

创建守护式容器

适用于需要长期后台运行的服务(如 Web 服务器、数据库)。

# 创建守护式容器
docker run -di --name=mycentos2 centos:7

# 登录已运行的守护容器(退出不影响容器运行)
docker exec -it mycentos2 /bin/bash

常用应用部署

1. MySQL

快速启动(无持久化)

docker pull mysql
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

挂载数据目录(推荐生产环境使用)

docker run -d -p 3306:3306 \
  --name mysql \
  -v /usr/local/apps/mysql/conf:/etc/mysql \
  -v /usr/local/apps/mysql/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql

参数说明

  • -e:设置环境变量(如 root 密码)
  • -p:端口映射(宿主机:容器)
  • -v:目录挂载(宿主机路径:容器路径)

2. Tomcat

docker pull tomcat

docker run -d \
  -p 8080:8080 -p 443:443 -p 80:80 \
  -v /usr/local/apps/tomcat/webapps:/usr/local/tomcat/webapps \
  -v /usr/local/apps/tomcat/conf:/usr/local/tomcat/conf \
  --name tomcat \
  tomcat

挂载 webappsconf 目录便于后期部署和配置调试。


3. Portainer(可视化 Docker 管理)

详见 Portainer 部署指南(文中引用)

原创

版权声明:本博客原创文章,由 裴先生 2021年01月22日 发表。
转载说明:除特殊说明外本站文章皆由 CC BY-NC-SA 4.0 协议发布,转载须注明出处。


评论