跳到主要内容

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 的资源使用,避免占用过多系统资源影响其他服务。