JerrySu5379 发表于 2024-9-14 11:43:03

这里是记录Pmine Project容器化的过程,同时分享运维经验




# 这里是记录Pmine Project容器化的过程,同时分享运维经验

---

## 我们将会涉及Docker构建镜像、使用Docker Compose来管理容器、同时在后续的文章中会涉及到Kubernetes的使用

---

## Pmine目前已经将私有的Git仓库通过GitLab的Docker容器化部署
- 但目前,我们的GitLab容器是单独部署的,我们需要将GitLab容器与其他容器进行整合,以便于后续的项目管理
- 至少实现CI/CD的功能,方便后续的项目管理和部署,自动化,提高效率
- 这将涉及到GitLab Runner的部署,以及GitLab Runner与GitLab的整合
- 同时进阶的话,我们还会涉及到Kubernetes的使用,将GitLab Runner部署到Kubernetes集群中

## FDS的私有邮件系统通过Docker容器化部署

## FDS的公共单点登录系统通过Docker容器化构建部署
- 但目前仍在使用手动部署,我们需要通过GitLab Runner来实现自动化部署
- 后续我们会将GitLab Runner部署到Kubernetes集群中

## Pmine的前端项目通过Docker容器化构建部署
- To be continued

---

# Docker的安装和使用

## Docker的安装
### 众所周知,Docker的安装非常简单,只需要一行命令即可
```shell
sudo apt-get install docker.io
```
或者
```shell
sudo yum install docker.io
```
或者
```shell
sudo snap install docker
```

### 安装完成后,我们需要将Docker服务启动
```shell
sudo systemctl start docker
```

### 同时,我们需要将Docker服务设置为开机自启动
```shell
sudo systemctl enable docker
```

### 接下来,我们可以通过以下命令来验证Docker是否安装成功
```shell
docker --version
```

---

## Docker的使用
### Docker的使用非常简单,我们可以通过以下命令来查看Docker的帮助文档
```shell
docker --help
```

### 当然,信息很多,我们可以快速熟悉一下几个常用的命令

# 查看所有的容器
```shell
docker ps -a
```

# 查看所有的镜像
```shell
docker images
```

# 拉取镜像
```shell
docker pull
```

# 运行容器
```shell
docker run -d
```

# 进入容器
```shell
docker exec -it /bin/bash
```

# 删除容器
```shell
docker rm
```

# 删除镜像
```shell
docker rmi
```

---

## 接下来,我们进阶一下,通过Docker Compose来管理容器

## 但我们除了Docker Compose,还需要熟悉以下Docker Network的使用

# 查看所有的网络
```shell
docker network ls
```

# 创建网络
```shell
docker network create
```

# 删除网络
```shell
docker network rm
```

# 运行容器,并指定网络
```shell
docker run -d --network
```

---

## Docker Compose的安装和使用

### 默认情况下,Docker Compose在Docker安装后就已经安装好了
```shell
docker-compose --version
```

### 如果没有安装,我们可以通过以下命令来安装
```shell
sudo apt-get install docker-compose
```
或者
```shell
sudo yum install docker-compose
```
或者
```shell
sudo snap install docker-compose
```

---

## Docker Compose的使用

### Docker Compose的使用非常简单,我们可以通过以下命令来查看Docker Compose的帮助文档
```shell
docker-compose --help
```

### 当然,信息很多,我们可以快速熟悉一下几个常用的命令

# 构建镜像
```shell
docker-compose build
```

# 启动容器
```shell
docker-compose up -d
```

# 停止容器
```shell
docker-compose down
```

# 查看容器
```shell
docker-compose ps
```

# 查看日志
```shell
docker-compose logs
```

---

## 接下来,我们将会通过Docker Compose来管理容器

## 我们将会展示如何通过Docker Compose来管理GitLab容器,同时进一步熟悉Docker Compose的使用,特别是Docker Compose的配置文件——docker-compose.yml

---

# Docker Compose的配置文件——docker-compose.yml

## Docker Compose的配置文件是一个YAML文件,我们可以通过以下命令来创建一个docker-compose.yml文件
```shell
touch docker-compose.yml
```
或者
```shell
vim docker-compose.yml
```
或者
```shell
nano docker-compose.yml
```

## Docker Compose的配置文件主要包括以下几个部分

# version
```yaml
version: '3'
```

# services
```yaml
services:
gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: 'gitlab'
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
```

# networks
```yaml
networks:
gitlab:
    driver: bridge
```

---

## 接下来,我们来解释一下这个配置文件

### version: '3'
- 这里指定了Docker Compose的版本

### services:
- 这里指定了我们要管理的容器
- gitlab:
- 这里指定了容器的名称
- image: 'gitlab/gitlab-ce:latest'
    - 这里指定了容器的镜像
- container_name: 'gitlab'
    - 这里指定了容器的名称
- ports:
    - '80:80'
    - '443:443'
    - 这里指定了容器的端口映射
- volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'
    - 这里指定了容器的数据卷

#### 其中,image的值是我们即将要拉取的镜像,container_name的值是我们即将要创建的容器的名称,ports的值是我们即将要映射的端口,volumes的值是我们即将要挂载的数据卷

### networks:
- 这里指定了容器的网络
- gitlab:
- 这里指定了网络的名称
- driver: bridge
    - 这里指定了网络的驱动
    - bridge是Docker默认的网络驱动
    - bridge是Docker的网络模式之一,它是Docker的默认网络模式,它会为每个容器分配一个IP地址,同时容器之间可以通过IP地址进行通信
- 还有其他的网络模式,比如host、none、overlay等
- host模式是指容器和宿主机共享网络,容器和宿主机使用同一个IP地址,容器和宿主机之间可以通过localhost进行通信
- none模式是指容器没有网络,容器之间无法通信
- overlay模式是指容器之间可以通过网络进行通信,容器之间可以通过IP地址进行通信
- 这里我们使用bridge模式,因为我们的容器是独立的,我们需要为每个容器分配一个IP地址,同时容器之间可以通过IP地址进行通信
- 这里我们只有一个网络,所以只有一个网络的配置
- 如果有多个网络,我们可以通过以下命令来创建多个网络,类似于:
```yaml
networks:
gitlab:
    driver: bridge
fds:
    driver: bridge
pmine:
    driver: bridge
```

---

## 接下来,我们通过Docker Compose来管理GitLab容器

### 首先,我们需要拉取GitLab的镜像(可选,因为Docker Compose会自动拉取镜像)
```shell
docker pull gitlab/gitlab-ce:latest
```

### 然后,我们需要创建一个目录,用来存放GitLab的数据
```shell
mkdir -p /srv/gitlab/config
mkdir -p /srv/gitlab/logs
mkdir -p /srv/gitlab/data
```

### 接下来,我们需要创建一个docker-compose.yml文件
```shell
touch docker-compose.yml
```

### 然后,我们需要编辑docker-compose.yml文件
```shell
vim docker-compose.yml
```

### 然后,我们需要将之前的配置文件复制到docker-compose.yml文件中
```yaml
version: '3'

services:
gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: 'gitlab'
    ports:
      - '2323:80'
      - '3223:443'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'

networks:
    gitlab:
      driver: bridge
```

### 接下来,我们来启动GitLab容器

# 构建镜像(可选,因为Docker Compose会自动完成)
```shell
docker-compose build
```

# 启动容器
```shell
docker-compose up -d
```

# 查看容器
```shell
docker-compose ps
```

# 查看日志
```shell
docker-compose logs
```

---

## 接下来,我们来验证一下GitLab容器是否启动成功

### 首先,我们需要访问GitLab的Web界面
```shell
http://your_ip_address:2323
```

### 然后,我们需要查看GitLab的文件,来查看GitLab的初始root密码
```shell
cat /srv/gitlab/config/initial_root_password
```

### 最后,我们需要登录GitLab的Web界面,使用root用户和初始root密码登录
```shell
http://your_ip_address:2323
```

---

## 接下来,我们将会继续通过Nginx来配置GitLab的反向代理

## 但这并不是本篇文章的重点,我们将会在后续的文章中详细介绍Nginx的使用

## 在这里,我们暂且按下不表

---

# To be continued
# ……


jiuyuan_ 发表于 2024-9-14 12:02:14

呜哇~大佬tql

JerrySu5379 发表于 2024-9-14 12:06:05

jiuyuan_ 发表于 2024-9-14 12:02
呜哇~大佬tql

谢谢九卷儿!!!!!
页: [1]
查看完整版本: 这里是记录Pmine Project容器化的过程,同时分享运维经验