Linux下Docker的配置及常用镜像
引言
在现代软件开发和部署过程中,容器化技术已经变得越来越重要。Docker是一个领先的容器化平台,它可以帮助开发人员和运维团队轻松创建、分发和运行应用程序及其依赖环境。通过将应用程序和其依赖项打包成一个独立的容器,Docker提供了一种一致、可靠和可移植的软件交付方式。
本博文将介绍Linux环境下Docker的安装和使用方法,以及如何使用Docker Compose来管理多个容器的组合。我们还会介绍一些常用的Docker命令,帮助您快速上手并利用Docker来加速开发、测试和部署流程。
本文以美西vps为例,系统为Ubuntu 22.04。同时也会介绍一些我正在用的Docker容器及其安装配置方法。
Docker和Docker Compose的安装与卸载
Docker的安装
- 命令行输入以下命令,自动下载安装脚本并开始安装
1 | curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh |
- 查看Docker版本,如果出现版本号证明安装成功
1 | docker -v |
- 设置开机自启动
1 | systemctl enable docker |
Docker Compose的安装
docker compose官方GitHub仓库:
Docker Compose是用于定义和运行多容器Docker应用程序的工具。下面是安装Docker Compose的步骤:
- 下载 Docker Compose 的二进制文件并将其保存到
/usr/local/bin/docker-compose
1 | sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose # 可以替换更新的版本号 |
- 添加可执行权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
- 查看版本号,如能显示,安装成功
1 | docker-compose --version |
Docker和Docker Compose的卸载
-
卸载Docker Engine:具体的卸载方法取决于您使用的操作系统。您可以参考Docker官方文档中的卸载指南,按照适用于您的操作系统的步骤进行操作。
-
卸载Docker Compose:如果您要卸载Docker Compose,只需删除之前下载的Docker Compose二进制文件即可。
1 | sudo rm /usr/local/bin/docker-compose |
Docker常用命令介绍
Docker提供了丰富的命令行工具,用于管理和操作容器、镜像、网络和数据卷等。下面是一些常用的Docker命令,帮助您开始使用Docker:
- 镜像(Images)管理:
docker pull <image>
:从Docker镜像仓库中拉取指定的镜像。docker images
:列出本地已安装的镜像。docker build -t <image>:<tag> <path>
:根据Dockerfile构建自定义镜像。
- 容器(Containers)管理:
docker run <image>
:基于指定的镜像创建并运行一个新容器。docker start <container>
:启动停止的容器。docker stop <container>
:停止正在运行的容器。docker exec -it <container> <command>
:在正在运行的容器中执行命令。docker rm <container>
:删除指定的容器。
- 网络(Networks)管理:
docker network ls
:列出已创建的Docker网络。docker network create <network>
:创建自定义网络。docker network connect <network> <container>
:将容器连接到指定的网络。
- 数据卷(Volumes)管理:
docker volume create <volume>
:创建一个新的数据卷。docker volume ls
:列出已创建的数据卷。docker run -v <volume>:<path>
:将数据卷挂载到容器中的指定路径。
以上只是一些常见的Docker命令示例,还有更多命令和选项可供探索。您可以参考Docker官方文档中的命令参考部分,以获取更详细的命令说明和示例。
Docker项目
Alist
GitHub仓库:
安装
1 | docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest |
参数释义:
docker run
:docker命令,用于创建并运行一个docker容器-d
:该选项使容器在后台以守护进程(daemon)方式运行,即保持后台运行--restart=always
: 这个选项指定容器在停止后总是自动重启-v /etc/alist:/opt/alist/data
: 这个选项将主机的/etc/alist
目录挂载到容器中的/opt/alist/data
目录,实现主机和容器之间的文件共享。-p 5244:5244
: 这个选项将容器的 5244 端口映射到主机的 5244 端口,使得可以通过主机的 5244 端口访问容器中的服务-e PUID=0
: 这个选项设置环境变量PUID
的值为 0-e PGID=0
: 这个选项设置环境变量PGID
的值为 0-e UMASK=022
: 这个选项设置环境变量UMASK
的值为 022--name="alist"
: 这个选项指定容器的名称为alist
xhofe/alist:main
: 这个参数指定要使用的 Docker 镜像,其中xhofe/alist
是镜像的名称,latest
是标签(tag)或版本号,即安装最新版本
1 | version: '3.3' |
访问Alist
- 局域网内通过局域网ip+端口号访问。比如
192.168.1.1:5244
- 如果安装在有公网ip的服务器上,通过公网ip+端口号访问。比如
102.54.45.67:5244
- 如果配置了内网穿透或者Nginx反向代理,通过域名访问。比如
https://alist.example.com
。
Nginx反向代理
在Nginx配置文件的 server 字段中添加内容:
1 | location / { |
Vaultwarden
Vaultwarden
是一款跨平台的密码管理工具,可以帮助用户安全地存储和管理其各种帐户的凭据信息。Vaultwarden提供了一个完整的密码管理系统,包括用户身份验证、加密存储和安全访问API等功能。
Vaultwarden必须使用https访问,所以必须配置SSL证书。
Vaultwarden
是Bitwarden
的第三方实现。两者差别如下:
- 除不支持官方企业版的部分功能(如目录同步、SSO、群组、自定义角色以及基于企业组织层面的 Duo Security 两步登录)外,其他大部分功能均免费支持。并跟随官方版本保持及时更新。
- Vaultwarden 比官方版更轻量。官方版使用 .Net 开发,使用 MSSQL 数据库,要求至少 2GB 内存;Vaultwarden 使用 Rust 编写,改用 SQLite 数据库(现在也支持 MySQL 和 PostgreSQL),运行时只需要 10M 内存,可以说对硬件基本没有要求。
GitHub仓库:
安装
1 | docker pull vaultwarden/server:latest # (可省略) |
可选的环境变量见方式二
- 创建一个新的目录,然后切换到该目录下。接下来,创建如下的
docker-compose.yml
文件
1 | version: '3' |
可选环境变量释义:
TZ
:时区SIGNUPS_ALLOWED
:是否允许注册新用户INVITATIONS_ALLOWED
:是否可以邀请用户,即使设置了禁止注册/邀请用户,在 admin 页面仍然可以邀请用户ADMIN_TOKEN
:开启 admin 管理页面,推荐使用。LOG_FILE
:输出日志,默认使用 stdout 输出日志,可以通过设置该参数输出到文件SHOW_PASSWORD_HINT
:是否开启密码提示DOMAIN
:域名
- 在创建的
docker-compose.yml
文件的路径下运行以下命令
1 | docker-compose up -d |
这将会读取并解析 docker-compose.yml
文件,并根据配置创建并启动容器。如果镜像不存在,Docker 将自动下载所需的镜像。您将能够在命令行中看到容器的输出日志。-d
表示后台运行容器(守护进程模式)。
访问Vaultwarden
- 局域网内通过局域网ip+端口号访问。比如
192.168.1.1:8880
- 如果安装在有公网ip的服务器上,通过公网ip+端口号访问。比如
102.54.45.67:8880
- 如果配置了内网穿透或者Nginx反向代理,通过域名访问。比如
vault.example.com
。博主本人就是通过这种方式访问Vaultwarden。
必须配置SSL才能正常访问。具体实现见下一节的Nginx反代。
Nginx反代
1 | server { |
Memos
Memos是一个轻量级的自我托管备忘录中心和碎片化知识卡片管理工具。可以看作是Flomo的第三方开源实现。
- 📅 方便记录每日 / 周计划
- 💡 方便记录一些奇思妙想
- 📕 可以随手写写读后感
- 🏗️ 有时候可以代替在微信上经常使用的“文件传输助手”、手机的备忘录
- 📒 可以打造一个属于自己的轻量化“卡片”笔记簿
支持Web端,桌面端,移动端和微信小程序。
各平台的客户端可在官方GitHub仓库中下载:
安装
1 | docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos ghcr.io/usememos/memos:latest |
Nginx反代
是否通过https访问是可选项。
1 | server { |