容器 & docker & docker-compose

最后更新于:

容器 & docker & docker-compose

1 yaml文件语法规则

1.1 规则一:缩进

yaml使用一个固定的缩进风格表示数据层结构关系,需要每个缩进级别由两个空格组成,一定不能使用tab键。

1.2 规则二:冒号

每个冒号后面一定要有一个空格,以冒号结尾不需要空格。

1services:
2image: mtphotos/mt-photos:latest

1.3 规则三:短横线

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分。

1environment:
2  - TZ=Asia/Shanghai
3  - LANG=C.UTF-8
4  - PUID=1000
5  - PGID=100

2 容器是什么?

容器就是一个轻量化,独立,把环境依赖和配置打包在一起,单独运行。

3 docker和docker-compose区别

什么是容器以及docker和docker-compose区别,我就不说了,本质是一样的,只不过compose更好管理。而且我现在只使用docker-compose.yaml这样的文件,优点是可以一个yaml文件搭建一个项目,包含好几个容器,这样方便管理。

4 如何安装docker

我主要以 debian 12为例,所以安装docker的命令如下:

清华大学镜像wiki,里面有安装docker教程。

1export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"

如果你使用curl或者使用wget

1apt install curl -y
2curl -fsSL https://raw.githubusercontent.com/docker/docker-install/master/install.sh | sh
3# 或者使用wget
4wget -O- https://raw.githubusercontent.com/docker/docker-install/master/install.sh | sh

5 安装docker-compose管理工具

docker-compose 管理工具有很多,最精简的是 portainer,占用很小,我的基本 docker 路径目录树如下建立:

 1root(根目录)
 2├── docker(分支节点:docker目录)
 3│ ├── apps(叶子节点:docker app目录)
 4│ │ ├── emby路径
 5│ │ └── music路径
 6│ └── docker-compose(叶子节点:docker-compose.yaml目录)
 7│ │ ├── emby
 8│ │ │ └── docker-compose.yaml
 9│ │ ├── music
10│ │ └──── docker-compose.yaml
11...

我这样建立目录是为了方便管理,yaml 文件和 docker 项目数据是分开的。


5.1 portainer

在ssh中以root用户直接输入以下代码,就可以安装中文版本的portainer,web访问端口是9000,http://ip:9000,安装完成请立即访问并且注册密码,密码必须为数字,英文以及标点符号得三种复杂组合。

1docker run -d --restart=always --name=portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce

当然上面这个是docker,下面这个我发一下compose版本的。

 1# 官方文档
 2# https://hub.docker.com/r/6053537/portainer-ce
 3
 4# ---
 5
 6name: portainer-ce
 7# 最后编辑时间:2025-03-12
 8services:
 9  portainer-ce:
10    # 镜像地址
11    image: 6053537/portainer-ce
12    # 容器名
13    container_name: portainer-ce
14    # 主机名
15    hostname: portainer-ce
16    # 路径
17    volumes:
18      # docker核心配置
19       - /var/run/docker.sock:/var/run/docker.sock
20    # 网络模式:桥接模式
21    network_mode: bridge
22    # 端口
23    ports:
24      # webUI端口
25      - 9000:9000
26    # 重启策略,总是重启
27    restart: always

docker可以直接在ssh上运行代码就行了,但是docker-compose.yaml文件的docker怎么运行呢?

1# 创建文件夹
2mkdir -p /docker/apps/docker-compose/portainer-ce
3# cd 到存放yaml文件夹下
4cd /docker/apps/docker-compose/portainer-ce
5# 拉取镜像并且启动docker 
6docker compose pull && docker compose up -d

5.2 dpanel

在ssh中以root用户直接输入以下代码,就可以安装dpanel,web访问端口是8807,http://ip:8807。

dpanel的wiki文档可以阅读一下。

docker代码如下:

1docker run -it -d --name dpanel --restart=always \
2 -p 8880:80 -p 4443:443 -p 8807:8080 \
3 -v /var/run/docker.sock:/var/run/docker.sock \
4 -v /docker/apps/dpanel:/dpanel -e APP_NAME=dpanel dpanel/dpanel:latest
5#/docker/appsdpanel安装路径可以根据个人喜好修改,端口也一样

compose的yaml代码如下:

 1# 官方文档
 2# https://dpanel.cc
 3# https://github.com/donknap/dpanel
 4# https://hub.docker.com/r/dpanel/dpanel
 5
 6# ssh  cd 到文件夹下
 7# cd /docker/apps/dpanel
 8
 9# 手动更新升级启动 
10# docker compose pull && docker compose up -d
11
12
13# ---
14
15name: dpanel
16# 最后编辑时间:2025-03-05
17services:
18  dpanel:
19    # 镜像地址,tag可选 latest/lite
20    # lite 版去掉了域名转发相关,需要自行转发域名绑定容器,不需要绑定 80 及 443 端口
21    image: registry.cn-hangzhou.aliyuncs.com/dpanel/dpanel:latest
22    # 容器名字
23    # 更改此名称后,请同步修改下方 APP_NAME 环境变量
24    container_name: dpanel 
25    # 主机名
26    hostname: dpanel
27    environment:
28      # 请保持此名称与 container_name 一致
29      APP_NAME: dpanel 
30      # 账号
31      INSTALL_USERNAME: admin
32      # 密码
33      INSTALL_PASSWORD: admin
34    volumes:
35      # docker核心路径
36      - /var/run/docker.sock:/var/run/docker.sock
37      # 数据库文件目录
38      - /docker/apps/dpanel:/dpanel 
39    # 网络模式
40    network_mode: bridge
41    ports:
42      # 域名转发相关,lite版不需要
43      - 8805:80
44      - 8806:443
45      # WebUI 端口
46      - 8807:8080
47    # 重启策略,总是重启
48    restart: always
49
50  dpanel-plugin-explorer: 
51    # 镜像地址,该镜像为 dpanel 的文件浏览器,隔离特权
52    image: alpine:latest
53    # 容器名字
54    container_name: dpanel-plugin-explorer
55    # 容器特权模式
56    privileged: true
57    pid: host
58    command: ["sh", "-c", "tail -f /dev/null"]
59    # 重启策略,总是重启
60    restart: always

5.3 宝塔面板

介绍了两款轻量级面板,那么我来介绍两款比较好用全面的面板。宝塔面板不多说了,直接安装官方版本如下链接和代码。

宝塔官网链接。

1if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

当然装了官方版本,也有开心版,试验性Centos/Ubuntu/Debian安装命令独立运行环境python3.7。

1curl -sSO http://io.bt.sb/install/install_panel.sh&& bash install_panel.sh

或者安装debian 和Ubuntu版本

1wget -O install.sh http://io.bt.sb/install/install-ubuntu_6.0.sh&& bash install.sh

5.4 1Panel

1Panel 是新一代的 Linux 服务器运维管理面板,也是我觉得比较好用的面板,后面的文章我都以 1Panel 或者 dpanel 为例。

1Panel官网链接。

1bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"

6 好玩的 docker 项目

好玩的 docker 项目有很多,我这里主要通过下载,音乐,影视,几个方面介绍。

推荐使用微信支付
微信支付二维码
推荐使用支付宝
支付宝二维码
最新文章

文档导航

此分类暂无内容