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