如何在美国VPS服务器上部署Docker容器化应用

美国VPS服务器上部署**Docker容器化应用**是一种高效且灵活的方式,可以提供轻量级的虚拟化、隔离的运行环境、简单的应用部署和版本管理。Docker使得应用程序的打包、测试、部署变得更加容易,尤其适合跨平台、跨环境的应用。

 

## 一、步骤概览

 

1. **前置条件和环境准备**

2. **安装Docker**

3. **拉取Docker镜像**

4. **运行Docker容器**

5. **管理持久化存储和网络**

6. **使用Docker Compose编排多容器应用**

7. **通过Nginx反向代理、SSL加密实现外网访问**

 

---

 

## 二、详细步骤

 

### 1. **前置条件和环境准备**

 

在开始之前,请确保以下条件满足:

 

- 您拥有一个**美国VPS服务器**,并且可以通过SSH访问该服务器。

- 服务器运行的是**Linux操作系统**(如Ubuntu、CentOS等)。本文以**Ubuntu 20.04**为例,但大多数Linux发行版的操作流程类似。

- 您有一个普通用户账号,具有`sudo`权限。

 

#### 检查VPS环境:

- 确保操作系统是最新的:

 

    ```bash

    sudo apt update && sudo apt upgrade -y

    ```

 

- 安装必要的工具,如`curl`和`git`(用于后续步骤中的下载和部署):

 

    ```bash

    sudo apt install curl git -y

    ```

 

### 2. **安装Docker**

 

Docker可以通过官方的APT/YUM仓库安装。以下是如何在Ubuntu上安装Docker的步骤。

 

#### 1. **安装Docker依赖项**

 

```bash

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

```

 

#### 2. **添加Docker官方GPG密钥和Docker仓库**

 

```bash

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

```

 

然后,添加Docker的官方仓库:

 

```bash

echo "deb [arch=$(dpkg --print-architecture signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

```

 

#### 3. **安装Docker**

 

```bash

sudo apt update

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

```

 

#### 4. **启动并启用Docker服务**

 

```bash

sudo systemctl start docker

sudo systemctl enable docker

```

 

#### 5. **检查Docker是否成功安装**

 

使用以下命令检查安装是否成功,并查看Docker的版本:

 

```bash

docker --version

```

 

输出类似于:

 

```bash

Docker version 24.0.0, build xyz1234

```

 

您也可以运行`hello-world`容器,测试Docker的安装是否正常:

 

```bash

sudo docker run hello-world

```

 

如果一切正常,您将看到Docker运行成功的消息。

 

#### 6. **为非root用户配置Docker权限(可选)**

 

如果您希望以非root用户运行Docker命令,可以将当前用户加入`docker`组:

 

```bash

sudo usermod -aG docker ${USER}

```

 

然后注销并重新登录,或者运行以下命令使更改生效:

 

```bash

newgrp docker

```

 

### 3. **拉取Docker镜像**

 

Docker镜像是容器的基础,您可以从**Docker Hub**或其他镜像仓库拉取现成的应用镜像。

 

#### 1. **搜索Docker镜像**

 

Docker Hub是Docker的官方镜像仓库,您可以使用`docker search`命令来查找可用的镜像。例如,搜索`nginx`镜像:

 

```bash

docker search nginx

```

 

#### 2. **拉取Docker镜像**

 

要拉取镜像,使用`docker pull`命令。例如,拉取最新的`nginx`镜像:

 

```bash

docker pull nginx

```

 

### 4. **运行Docker容器**

 

使用拉取的镜像创建并运行容器。

 

#### 1. **运行简单的容器**

 

以下命令启动一个**nginx**容器,并将主机的**8080端口**映射到容器的**80端口**:

 

```bash

docker run -d -p 8080:80 --name mynginx nginx

```

 

- `-d`:后台运行容器。

- `-p 8080:80`:将主机的端口`8080`映射到容器的端口`80`。

- `--name`:为容器指定名称。

 

访问VPS的IP地址并使用端口8080,您应该看到Nginx的默认欢迎页面。

 

#### 2. **查看运行中的容器**

 

使用以下命令查看当前正在运行的容器:

 

```bash

docker ps

```

 

#### 3. **停止/启动容器**

 

- 停止一个容器:

 

    ```bash

    docker stop mynginx

    ```

 

- 启动一个容器:

 

    ```bash

    docker start mynginx

    ```

 

#### 4. **删除容器**

 

如果不再需要某个容器,可以删除它:

 

```bash

docker rm mynginx

```

 

### 5. **管理持久化存储和网络**

 

在Docker中,容器默认是**无状态的**,即如果容器被删除,所有的数据也会随之丢失。因此,需要通过**挂载卷(Volumes)**来实现数据持久化。

 

#### 1. **挂载卷**

 

Docker卷是持久化存储的主要方式。以下示例演示如何将主机目录挂载到容器的目录中,实现持久化存储。

 

```bash

docker run -d -p 8080:80 --name mynginx -v /data/nginx:/usr/share/nginx/html nginx

```

 

- `-v /data/nginx:/usr/share/nginx/html`:将VPS主机的`/data/nginx`目录挂载到容器的`/usr/share/nginx/html`目录,这样即使容器被删除,VPS主机上的数据也会保留。

 

#### 2. **网络配置**

 

Docker提供了多种网络模式(bridge、host、overlay等)。默认情况下,Docker容器使用**bridge网络**,可以通过`docker network`命令进行管理。

 

- 查看现有的Docker网络:

 

    ```bash

    docker network ls

    ```

 

- 创建一个自定义网络:

 

    ```bash

    docker network create mynetwork

    ```

 

- 运行容器并加入自定义网络:

 

    ```bash

    docker run -d --name mynginx --network=mynetwork nginx

    ```

 

这样,容器`mynginx`将加入`mynetwork`网络,可以与同一网络中的其他容器通信。

 

### 6. **使用Docker Compose编排多容器应用**

 

**Docker Compose**是一个用于定义和运行多容器Docker应用的工具。通过`docker-compose.yml`文件,您可以定义多个容器及其依赖关系。

 

#### 1. **安装Docker Compose**

 

首先,安装Docker Compose:

 

```bash

sudo apt install docker-compose -y

```

 

#### 2. **创建`docker-compose.yml`文件**

 

例如,以下是一个使用`docker-compose`部署**Nginx和MySQL**的示例:

 

```yaml

version: '3'

 

services:

  web:

    image: nginx

    ports:

      - "8080:80"

    volumes:

      - ./html:/usr/share/nginx/html

    networks:

      - mynetwork

 

  db:

    image: mysql:5.7

    environment:

      MYSQL_ROOT_PASSWORD: example

    volumes:

      - ./db:/var/lib/mysql

    networks:

      - mynetwork

 

networks:

  mynetwork:

```

 

- **web服务**:运行Nginx容器,并将本地`./html`目录挂载到容器的Nginx目录。

- **db服务**:运行MySQL容器,设置MySQL的root密码并将数据持久化到本地`./db`目录。

 

#### 3. **启动多容器应用**

 

使用`docker-compose up`命令启动所有的服务:

 

```bash

docker-compose up -d

```

 

#### 4. **管理多容器应用**

 

- 查看运行中的服务:

 

    ```bash

    docker-compose ps

    ```

 

- 停止服务:

 

    ```bash

    docker-compose stop

    ```

 

- 删除服务:

 

    ```bash

    docker-compose down

    ```

 

### 7. **通过Nginx反向代理和SSL加密实现外网访问**

 

如果您希望通过**域名**和**HTTPS**访问您的容器化应用,可以使用Nginx作为反向代理,并使用**Let's Encrypt**免费获取SSL证书。

 

#### 1. **安装Nginx**

 

```bash

sudo apt install nginx -y

```

 

#### 2. **配置Nginx反向代理**

 

编辑Nginx配置文件,将流量转发到Docker容器的端口:

 

```bash

sudo nano /etc/nginx/sites-available/default

```

 

添加以下配置:

 

```nginx

server {

    listen 80;

    server_name example.com;

 

    location / {

        proxy_pass http://localhost:8080;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}

```

 

保存并退出,然后重新启动Nginx:

 

```bash

sudo systemctl restart nginx

```

 

#### 3. **启用SSL**

 

使用**Certbot**获取SSL证书:

 

```bash

sudo apt install certbot python3-certbot-nginx -y

sudo certbot --nginx -d example.com

```

 

Certbot会自动配置SSL证书并重启Nginx。完成后,您可以通过`https://example.com`访问您的应用。

 

---

 

## 三、总结

 

在**美国VPS服务器**上部署Docker容器化应用,可以显著简化应用的配置和管理。通过Docker,您可以轻松地创建、部署和扩展应用,同时利用容器的隔离性确保应用的安全性和稳定性。以下是部署Docker容器化应用的关键步骤:

 

1. **安装Docker**:通过Docker官方仓库安装Docker。

2. **拉取Docker镜像**:从Docker Hub等镜像仓库拉取应用的镜像。

3. **运行容器**:使用`docker run`命令启动容器,并配置端口映射。

4. **持久化存储和网络配置**:通过卷和网络管理持久化数据以及容器之间的通信。

5. **使用Docker Compose编排容器**:通过`docker-compose.yml`文件管理复杂的多容器应用。

6. **Nginx反向代理和SSL加密**:通过Nginx和Let's Encrypt实现外网域名和HTTPS访问。

 

通过这些步骤,您可以快速在美国VPS上部署和管理Docker容器化应用,实现高效、灵活的应用交付。

超过 50,000 人的信任 网硕互联期待你加入我们的会员。