跳到主要内容

Docker 和相关工具的安装与使用

安装 Docker

更新系统包管理器

sudo apt update

安装 Docker 相关依赖

sudo apt install docker.io

启动 Docker 服务

sudo systemctl start docker

验证 Docker 是否安装成功

sudo docker version

安装 Seafile

使用 Docker 安装 Seafile

我可以通过以下命令来安装 Seafile:

docker run -d --name seafile \
-e SEAFILE_SERVER_HOSTNAME=sumingcheng \
-v /opt/seafile-data:/shared \
-p 20002:80 \
seafileltd/seafile:latest

最佳实践

确保将 /opt/seafile-data 目录设置为持久化存储,防止数据丢失。定期备份数据卷内容,以应对意外情况。

安装 OwnCloud

运行以下命令来安装 OwnCloud:

docker run -d --name owncloud -p 20003:80 -v /owncloud:/var/www/html owncloud

注意:如果同时运行多个服务,需确保端口号不冲突,以上将 OwnCloud 的端口修改为 20003:80

最佳实践

为不同服务分配独立的存储卷,便于数据管理和备份。例如,可以使用 /owncloud/data 作为数据卷挂载点。

安装 Seafile + MySQL

启动 MySQL 容器

docker run -d --name seafile-mysql \
-e MYSQL_ROOT_PASSWORD=你的MySQL根密码 \
-e MYSQL_DATABASE=seafile \
-e MYSQL_USER=seafile \
-e MYSQL_PASSWORD=你的MySQL密码 \
mysql:latest

启动 Seafile 容器并链接到 MySQL

docker run -d --name seafile \
-e SEAFILE_SERVER_HOSTNAME=sumingcheng \
-e SEAFILE_ADMIN_EMAIL=你的邮箱 \
-e SEAFILE_ADMIN_PASSWORD=你的Seafile密码 \
--link seafile-mysql:mysql \
-p 20002:80 \
seafileltd/seafile:latest

进入容器的 Shell

docker exec -it seafile bash

查看配置文件

vim /shared/seafile/conf/seahub_settings.py

Seafile 常用命令

# 启动
./seafile.sh start

# 停止
./seafile.sh stop

# 重启
./seafile.sh restart
./seahub.sh restart

最佳实践

使用环境变量管理敏感信息,如数据库密码,避免在命令行中明文传递。考虑使用 Docker Compose 来简化多容器应用的管理。

Docker 常用命令

创建并启动一个容器

使用 docker run 命令来创建并启动一个容器。

docker run -d -p 8080:80 nginx  # 在后台运行一个 Nginx 容器,将主机的 8080 端口映射到容器的 80 端口

列出当前正在运行的容器

使用 docker ps 命令可以列出当前正在运行的容器。

docker ps       # 列出所有正在运行的容器
docker ps -a # 列出所有容器,包括已停止的容器

停止一个正在运行的容器

使用 docker stop 命令来停止指定的容器。

docker stop 容器ID或容器名称  # 停止指定的容器

删除一个容器

使用 docker rm 命令来删除指定的容器。容器必须先停止才能删除。

docker rm 容器ID或容器名称  # 删除指定的容器

列出本地的镜像

使用 docker images 命令可以列出本地的所有镜像。

docker images   # 列出本地的所有镜像

从镜像仓库中拉取镜像

使用 docker pull 命令从镜像仓库中拉取镜像。

docker pull nginx  # 从 Docker Hub 拉取最新的 Nginx 镜像

根据 Dockerfile 构建镜像

使用 docker build 命令根据 Dockerfile 构建镜像。

docker build -t myapp .  # 在当前目录下的 Dockerfile 构建一个名为 myapp 的镜像

在正在运行的容器中执行命令

使用 docker exec 命令在正在运行的容器中执行命令。

docker exec -it 容器ID或容器名称 bash  # 在容器中打开一个交互式终端

删除镜像

使用 docker rmi 命令删除指定的镜像。

docker rmi 镜像名称或ID  # 删除指定的镜像

最佳实践

定期清理不再使用的容器和镜像,避免占用过多系统资源。使用有意义的标签管理镜像版本,便于回溯和维护。

Docker Compose 常用命令

启动容器服务

使用 docker-compose up 命令启动容器服务,会根据 docker-compose.yml 文件中的配置创建和启动容器。

docker-compose up -d  # 在后台启动容器服务

停止容器服务

使用 docker-compose down 命令停止容器服务,会停止并移除由 Compose 启动的所有容器、网络和数据卷。

docker-compose down  # 停止并移除容器服务

启动已创建的服务容器

使用 docker-compose start 命令启动已创建的服务容器。

docker-compose start  # 启动已创建的服务容器

停止已创建的服务容器

使用 docker-compose stop 命令停止已创建的服务容器。

docker-compose stop  # 停止已创建的服务容器

重启已创建的服务容器

使用 docker-compose restart 命令重启已创建的服务容器。

docker-compose restart  # 重启已创建的服务容器

查看容器状态

使用 docker-compose ps 命令查看容器状态。

docker-compose ps  # 显示容器的状态信息

查看容器日志

使用 docker-compose logs 命令查看容器日志。

docker-compose logs  # 显示容器的日志输出

在运行的容器中执行命令

使用 docker-compose exec 命令在运行的容器中执行命令。

docker-compose exec 服务名称 命令  # 在指定的服务容器中执行命令

构建镜像

使用 docker-compose build 命令构建镜像。

docker-compose build  # 根据配置构建服务所需的镜像

拉取最新的镜像

使用 docker-compose pull 命令拉取最新的镜像。

docker-compose pull  # 拉取服务所需的最新镜像

最佳实践

使用版本控制管理 docker-compose.yml 文件,确保团队协作中的一致性。利用环境变量配置不同环境(开发、测试、生产)的参数,提升灵活性。

安装 Docker Compose

以下是安装 Docker Compose 的步骤(如果有新版本可以替换新的版本号):

下载最新版本的 Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/2.18.1/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 的更新版本,确保使用最新的功能和安全补丁。将 Docker Compose 安装路径加入系统 PATH,便于全局调用。

安装 Nextcloud + MySQL

确保已安装 Docker 和 Docker Compose

在开始之前,请确保 Docker 和 Docker Compose 已正确安装并运行。

创建存储目录

mkdir -p ./nextcloud_data

创建 docker-compose.yml 文件

将以下内容复制到 docker-compose.yml 文件中,并替换密码。

version: '3'
services:
db:
image: mysql:8
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD:你的MySQL根密码
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD:你的MySQL密码
volumes:
- db:/var/lib/mysql

app:
image: nextcloud:latest
restart: always
ports:
- 8080:80
depends_on:
- db
volumes:
- nextcloud:/var/www/html
- ./nextcloud_data:/var/www/html/data

volumes:
db:
nextcloud:

启动服务

docker-compose up -d

最佳实践

使用独立的数据卷存储数据库和应用数据,确保数据隔离和安全。配置防火墙规则,仅允许必要的端口访问,提升系统安全性。

安装 Verdaccio

运行以下命令来安装 Verdaccio:

docker run -d -p 20003:4873 --name verdaccio verdaccio/verdaccio

配置 npm 使用私有仓库

npm config set registry http://sumingcheng:20003/

最佳实践

为 Verdaccio 配置持久化存储卷,防止数据丢失。例如:

docker run -d -p 20003:4873 --name verdaccio \
-v /opt/verdaccio:/verdaccio/storage \
verdaccio/verdaccio

定期备份 Verdaccio 的存储目录,确保包管理数据的安全。

安装 go-socks5-proxy

运行以下命令:

docker run -d --name socks5 -p 20005:1080 \
-e PROXY_USER=sumingcheng \
-e PROXY_PASSWORD=你的密码 \
serjs/go-socks5-proxy

测试服务

nc -vz 127.0.0.1 20005

测试连接

curl --socks5-hostname sumingcheng:20005 \
--proxy-user sumingcheng:你的密码 \
https://jsonplaceholder.typicode.com/posts/1

最佳实践

使用强密码保护 SOCKS5 代理,防止未授权访问。配置日志记录,便于监控代理使用情况和排查问题。

安装 GitLab

拉取 GitLab 镜像

docker pull gitlab/gitlab-ce

启动 GitLab 容器

docker run -d \
--hostname gitlab \
-p 20004:80 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

最佳实践

为 GitLab 分配足够的系统资源,确保其稳定运行。定期备份 GitLab 配置和数据卷内容,防止数据丢失。

安装 Jenkins

拉取 Jenkins 镜像

docker pull jenkins/jenkins

启动 Jenkins 容器

docker run -d \
--hostname jenkins \
-p 20006:8080 -p 50000:50000 \
--name jenkins \
--restart always \
-v /srv/jenkins:/var/jenkins_home \
jenkins/jenkins

最佳实践

为 Jenkins 配置持久化存储卷,确保构建数据和配置的持久性。限制 Jenkins 的资源使用,避免占用过多系统资源影响其他服务。