Docker 服务器安装部署教程:从零基础到容器化实践

快小二编导 技术教程

在云原生时代,Docker 凭借“一次构建、到处运行”的特性,成为开发者和运维人员必备的工具。它通过容器技术打包应用及其依赖,解决了环境不一致的痛点。本文将从环境准备、Docker 安装、镜像与容器操作、Docker Compose 编排四个核心环节,带你完成 Docker 服务器的部署与实践,即使是零基础也能快速上手。

一、环境准备:选择合适的服务器与系统

Docker 对硬件要求不高,但为了稳定运行,建议满足以下基础配置:

  • CPU:1核及以上(生产环境建议2核+)
  • 内存:2GB及以上(避免因内存不足导致容器崩溃)
  • 存储:20GB以上可用磁盘空间(镜像和容器会占用一定空间)
  • 网络:能访问公网(用于拉取官方镜像)

操作系统选择:Docker 对 Linux 支持最好,推荐使用以下发行版(按优先级排序):

  1. Ubuntu 20.04/22.04:官方推荐,包管理工具 apt 易用,社区文档丰富;
  2. CentOS 7/8:企业级常用,稳定性强;
  3. Debian 11+:轻量稳定,适合资源有限的服务器。

注意:Windows Server 或 macOS 也可安装 Docker,但生产环境优先选择 Linux(性能更优、资源占用更低)。

随机图片

二、Docker 安装:两种主流方式(以 Ubuntu/CentOS 为例)

Docker 分为 CE(社区版)EE(企业版),个人和中小企业选择 CE 即可。以下是两种系统的安装步骤:

(一)Ubuntu 系统安装 Docker CE

1. 卸载旧版本(若有)

如果服务器之前装过旧版 Docker,需先卸载:

sudo apt-get remove docker docker-engine docker.io containerd runc

2. 设置软件源(提高安装速度)

Docker 官方源在国内访问较慢,建议替换为阿里云源:

# 安装依赖包
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 添加阿里云 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 添加 Docker 软件源
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

3. 安装 Docker CE

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

4. 验证安装

执行以下命令,若输出 Docker 版本信息,则安装成功:

docker --version
# 输出示例:Docker version 24.0.6, build ed223bc

(二)CentOS 系统安装 Docker CE

1. 卸载旧版本

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

2. 设置软件源

同样使用阿里云源加速:

# 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加阿里云 Docker 源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 安装 Docker CE

sudo yum install -y docker-ce docker-ce-cli containerd.io

4. 启动 Docker 并设置开机自启

CentOS 安装后默认不会启动 Docker,需手动开启:

# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 验证状态
sudo systemctl status docker
# 输出 "active (running)" 即为正常

(三)配置国内镜像加速(关键优化)

Docker 官方镜像仓库(Docker Hub)在国内访问较慢,需配置国内镜像源(如阿里云、网易云):

1. 编辑 Docker 配置文件

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://你的阿里云镜像加速地址.mirror.aliyuncs.com"]
}
EOF

如何获取阿里云镜像加速地址?
登录阿里云官网 → 进入“容器镜像服务” → 左侧“镜像加速器” → 复制专属加速地址。

2. 重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

3. 验证加速是否生效

docker info
# 查看 "Registry Mirrors" 字段,若显示配置的加速地址则成功

三、Docker 核心操作:镜像与容器实战

Docker 的核心是镜像(Image)容器(Container)

  • 镜像:是容器的“模板”,包含应用程序及其依赖环境(如 Nginx 镜像、MySQL 镜像);
  • 容器:是镜像的“运行实例”,一个镜像可以创建多个容器。

(一)镜像操作:拉取、查看与删除

1. 拉取官方镜像

以 Nginx 为例,拉取最新版本的镜像:

docker pull nginx:latest
# 若不指定标签(如 :latest),默认拉取 latest 版本

2. 查看本地镜像

docker images
# 输出示例:
# REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
# nginx        latest    605c77e624dd   2 weeks ago    141MB

3. 删除镜像

# 通过镜像ID删除(IMAGE ID 可通过 docker images 查看)
docker rmi 605c77e624dd

# 强制删除(若镜像被容器使用,需加 -f 参数)
docker rmi -f 605c77e624dd

(二)容器操作:创建、启动与管理

1. 创建并启动容器

以 Nginx 为例,创建一个对外暴露 80 端口的容器:

docker run -d -p 80:80 --name my-nginx nginx:latest

参数说明:

  • -d:后台运行容器(守护进程模式);
  • -p 80:80:端口映射(主机端口:容器端口);
  • --name my-nginx:给容器命名(方便后续操作);
  • nginx:latest:基于该镜像创建容器。

2. 查看运行中的容器

docker ps
# 输出示例:
# CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                NAMES
# a7e3b2f9c123   nginx:latest   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp   my-nginx

3. 进入容器内部

若需修改容器内的配置(如 Nginx 配置文件),可进入容器:

docker exec -it my-nginx /bin/bash
# -it:交互式终端模式;/bin/bash:进入容器后执行的命令

进入后可执行 ls /etc/nginx 查看配置文件,修改后需重启容器生效。

4. 停止与启动容器

# 停止容器
docker stop my-nginx

# 启动已停止的容器
docker start my-nginx

# 重启容器
docker restart my-nginx

5. 删除容器

# 先停止容器(若运行中)
docker stop my-nginx

# 删除容器
docker rm my-nginx

# 强制删除运行中的容器(加 -f 参数)
docker rm -f my-nginx

四、Docker Compose:多容器编排工具

当需要同时运行多个容器(如 Nginx + MySQL + 后端服务)时,手动管理每个容器会非常繁琐。Docker Compose 可以通过一个 docker-compose.yml 文件定义多容器服务,实现一键启动、停止。

(一)安装 Docker Compose

以 Linux 为例,下载最新版本(可在 GitHub releases 查看最新版本号):

# 下载 Compose(替换为最新版本号)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version
# 输出示例:Docker Compose version v2.23.0

(二)编写 docker-compose.yml 示例

以“Nginx + 静态网页”为例,创建一个简单的多容器服务:

1. 创建项目目录

mkdir docker-demo && cd docker-demo

2. 编写 docker-compose.yml

version: '3'  # Compose 文件版本(需与 Docker 版本兼容)
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"  # 主机8080端口映射到容器80端口
    volumes:
      - ./html:/usr/share/nginx/html  # 挂载本地目录到容器(实现文件同步)
    restart: always  # 容器退出时自动重启

3. 创建静态网页

docker-demo 目录下创建 html 文件夹,并编写 index.html

mkdir html && echo "<h1>Hello Docker Compose!</h1>" > html/index.html

4. 启动服务

docker-demo 目录下执行:

docker-compose up -d
# -d:后台运行

5. 验证服务

打开浏览器访问 http://服务器IP:8080,若看到“Hello Docker Compose!”则成功。

6. 停止服务

# 停止并删除容器(保留镜像和挂载数据)
docker-compose down

# 仅停止容器(不删除)
docker-compose stop

五、常见问题与解决方案

  1. Docker 命令需要 sudo?
    原因:当前用户未加入 docker 用户组。
    解决:

    sudo usermod -aG docker $USER
    # 重启终端或重新登录生效
  2. 容器启动后立即退出?
    原因:容器内没有前台运行的进程(Docker 要求容器必须有一个前台进程才能保持运行)。
    解决:确保镜像的启动命令是前台运行(如 Nginx 的 nginx -g 'daemon off;')。

  3. 镜像拉取失败?
    原因:网络问题或镜像源未配置。
    解决:检查网络连接,确认已配置国内镜像加速(参考本文“配置国内镜像加速”部分)。

六、总结

通过本文的步骤,你已完成 Docker 服务器的安装、镜像与容器的基本操作,以及 Docker Compose 的多容器编排。Docker 的核心价值在于“环境一致性”和“轻量化”,后续你可以尝试部署更多应用(如 MySQL、Redis、Node.js 服务),逐步掌握容器化技术。

如果需要深入学习,建议参考 Docker 官方文档(docs.docker.com),或尝试 Docker Swarm、Kubernetes 等容器编排工具,进一步提升运维效率。

0 19625

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码