commit ea37df293dac6760108f68963fe0363c0b6a6890 Author: gewuyou <1063891901@qq.com> Date: Sun Apr 20 23:11:40 2025 +0800 init: 创建Docker相关教程 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62c8935 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ \ No newline at end of file diff --git a/Writerside/c.list b/Writerside/c.list new file mode 100644 index 0000000..c4c77a2 --- /dev/null +++ b/Writerside/c.list @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Writerside/cfg/buildprofiles.xml b/Writerside/cfg/buildprofiles.xml new file mode 100644 index 0000000..3174740 --- /dev/null +++ b/Writerside/cfg/buildprofiles.xml @@ -0,0 +1,18 @@ + + + + + + + + false + + + + + false + + + + \ No newline at end of file diff --git a/Writerside/docker.tree b/Writerside/docker.tree new file mode 100644 index 0000000..06c449a --- /dev/null +++ b/Writerside/docker.tree @@ -0,0 +1,14 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Writerside/images/completion_procedure.png b/Writerside/images/completion_procedure.png new file mode 100644 index 0000000..3535a3f Binary files /dev/null and b/Writerside/images/completion_procedure.png differ diff --git a/Writerside/images/completion_procedure_dark.png b/Writerside/images/completion_procedure_dark.png new file mode 100644 index 0000000..a65beb0 Binary files /dev/null and b/Writerside/images/completion_procedure_dark.png differ diff --git a/Writerside/images/convert_table_to_xml.png b/Writerside/images/convert_table_to_xml.png new file mode 100644 index 0000000..2518a64 Binary files /dev/null and b/Writerside/images/convert_table_to_xml.png differ diff --git a/Writerside/images/convert_table_to_xml_dark.png b/Writerside/images/convert_table_to_xml_dark.png new file mode 100644 index 0000000..4716122 Binary files /dev/null and b/Writerside/images/convert_table_to_xml_dark.png differ diff --git a/Writerside/images/new_topic_options.png b/Writerside/images/new_topic_options.png new file mode 100644 index 0000000..bc6abb6 Binary files /dev/null and b/Writerside/images/new_topic_options.png differ diff --git a/Writerside/images/new_topic_options_dark.png b/Writerside/images/new_topic_options_dark.png new file mode 100644 index 0000000..bf3e48d Binary files /dev/null and b/Writerside/images/new_topic_options_dark.png differ diff --git a/Writerside/redirection-rules.xml b/Writerside/redirection-rules.xml new file mode 100644 index 0000000..f518e08 --- /dev/null +++ b/Writerside/redirection-rules.xml @@ -0,0 +1,13 @@ + + + + + + Created after removal of "Docker教程主页" from Jcnc教程 + Docker教程主页.html + + \ No newline at end of file diff --git a/Writerside/root.tree b/Writerside/root.tree new file mode 100644 index 0000000..81eea67 --- /dev/null +++ b/Writerside/root.tree @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/Writerside/topics/Docker_PostgreSQL.md b/Writerside/topics/Docker_PostgreSQL.md new file mode 100644 index 0000000..56f6684 --- /dev/null +++ b/Writerside/topics/Docker_PostgreSQL.md @@ -0,0 +1,155 @@ +# Docker安装PostgresSQL指南 +## 前言 + +本文将介绍如何在Docker中安装PostgreSQL数据库。 + +## Docker安装步骤 + +### 1. 拉取PostgreSQL镜像 + +> 注意下方命令拉取的是最新版本的PostgreSQL镜像,如果你需要指定版本,请使用 +> +> ```sh +> docker pull postgres:指定版本号 +> ``` +> +> 命令 + +``` +docker pull postgres +``` +> 执行结果 +> +> ![image-20250420104553777](assets/Docker_PostgreSQL/image-20250420104553777.png) +> +### 2. 启动PostgreSQL容器 + +```sh +docker run --name my-postgres \ + -e POSTGRES_PASSWORD=mysecretpassword \ + -p 5432:5432 \ + -v /var/service/postgresql/my-postgres/data:/var/lib/postgresql/data \ + --restart unless-stopped \ + -d postgres +``` + +参数说明: + +- `--name`:为容器指定名称 + +- `-e POSTGRES_PASSWORD`:设置postgres用户的密码(必须) + +- `-v`参数将容器内的数据目录映射到主机目录。 + + - 对于-v /var/service/postgresql/my-postgres/data:/var/lib/postgresql/data,前者路径是主机路径,后者为容器中路径 + +- `--restart unless-stopped` 表示: + + >1. 当Docker守护进程启动时,自动启动这个容器 + >2. 如果容器正常退出(手动停止),则不会自动重启 + >3. 如果容器异常退出(崩溃),会自动重启 + >4. 当然你可以使用其它策略,或者不选择策略 + > + >### 其他可选的restart策略: + > + >- `--restart no`:不自动重启(默认值) + >- `--restart on-failure[:max-retries]`:只在非正常退出时重启,可指定最大重试次数 + >- `--restart always`:总是重启,无论退出状态如何(包括手动停止后) + +- `-p 5432:5432`:将容器端口映射到主机端口 + +- `-d`:后台运行容器 + +**注:如果不想当你删除容器时数据丢失,请将容器内的数据目录挂载到主机目录中** + +> 执行结果 +> +> ![image-20250420111459451](assets/Docker_PostgreSQL/image-20250420111459451.png) +> +> 验证容器是否启动,请执行`docker ps`命令 +> +> ![image-20250420111643192](assets/Docker_PostgreSQL/image-20250420111643192.png) +> + +### 3. 连接到PostgreSQL容器 + +``` +docker exec -it postgres psql -U postgres +``` + +- `-it`:交互式运行 +- `-U postgres`:指定用户名为postgres + +### 4. 创建数据库 + +``` +CREATE DATABASE mydatabase; +``` + +### 5. 退出PostgreSQL容器 + +``` +\q +``` + +## Docker Compose安装步骤 + +> 这个可以允许你不预先安装镜像,文件执行时会自动帮你下载,因此更建议使用此种方式 + +### 1. 创建`docker-compose.yml`文件 + +```yaml +services: + postgres: + image: postgres:latest + container_name: my-postgres + environment: + POSTGRES_PASSWORD: mysecretpassword # 必填,数据库访问密码 + POSTGRES_USER: myuser # 可选,自定义用户名 + POSTGRES_DB: mydb # 可选,自定义初始数据库 + ports: + - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data # 声明挂载的数据卷所映射的目录 +volumes: + postgres_data: # 声明所使用的数据卷 +``` + +> 示例步骤 +> +> 首先我们找到一个合适的目录,比如/var/service/postgresql/my-postgres +> 直接 ```cd /var/service/postgresql/my-postgres``` +> 然后执行 ```nano docker-compose.yml``` +> 将上面的内容复制进去,然后按Ctrl+X,再按Y,再按Enter保存文件 +> +> ![image-20250420112228948](assets/Docker_PostgreSQL/image-20250420112228948.png) +> + +### 2. 启动服务 + +> 一般建议在你所使用的工作平台创建并编辑好Docker-Compose文件再上传到你的Linux服务器中(你执行命令的目录下必须有这个文件) + +```sh +# 执行下方命令 +docker-compose up -d +``` + +> 注意: +> +> 也许你执行上方命令会提示 +> +> ![image-20250420112323250](assets/Docker_PostgreSQL/image-20250420112323250.png) +> +> 这是因为你的Docker Compose版本已经不支持这种方式了,请使用下方命令 +> +> ```sh +> docker compose up -d +> ``` +> +> ![image-20250420112546002](assets/Docker_PostgreSQL/image-20250420112546002.png) +> +> 怎么样?是不是更方便 + +## 总结 + +本文介绍了如何在Docker中安装PostgreSQL数据库. diff --git a/Writerside/topics/Docker安装.md b/Writerside/topics/Docker安装.md new file mode 100644 index 0000000..754bfc0 --- /dev/null +++ b/Writerside/topics/Docker安装.md @@ -0,0 +1,194 @@ +# Docker安装指南 + +## 介绍{id="docker_0"} + +Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似虚拟机),更重要的是容器性能开销极低。 + +## 安装Docker {id="docker_1"} + +### 准备工作 +- 系统要求:Docker支持的系统包括`CentOS`、`Debian`、`Fedora`、`Ubuntu`等。 +- 准备安装包:Docker安装包可以从Docker官网下载,地址为:[https://www.docker.com/get-docker](https://www.docker.com/get-docker)。 + +### 安装步骤 + +#### 安装 Docker 引擎 {id="docker_2"} + +##### **更新包列表并安装必要的依赖** + +```bash +sudo apt-get update +sudo apt-get install apt-transport-https ca-certificates curl software-properties-common +``` + +##### **添加 Docker 官方 GPG 密钥** + +```bash +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/trusted.gpg.d/docker.asc +``` + +##### **设置 Docker 仓库** {id="docker_3"} + +```bash +sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" +``` + +##### **更新包列表并安装 Docker** {id="docker_4"} + +```bash +sudo apt-get update +sudo apt-get install docker-ce docker-ce-cli containerd.io +``` + +#### 验证 Docker 安装 {id="docker_5"} + +你可以通过运行以下命令验证 Docker 是否正常工作: + +```sh +docker --version +``` + +> 如果输出了对应的版本,说明docker已经安装成功 + +#### 启动 Docker 服务 {id="docker_6"} + +安装完成后,你可以通过以下命令启动 Docker 服务: + +```bash +sudo service docker start +``` + +或者,如果你的环境支持 `systemd`,你可以使用 `systemctl`: + +``` +sudo systemctl start docker +``` + +#### 配置 Docker 开机自启动 {id="docker_7"} + +如果你希望 Docker 在每次启动时自动启动,可以使用以下命令: + +```sh +sudo systemctl enable docker +``` + +#### 配置 Docker 权限 {id="docker_8"} + +为了避免每次使用 Docker 命令时都需要 `sudo` 权限,可以将当前用户添加到 Docker 用户组: + +```sh +sudo usermod -aG docker $USER +``` + +执行完后,重新启动服务器或退出当前终端并重新登录,然后你就可以直接使用 `docker` 命令而不需要加 `sudo` 了。 + +#### 安装 Docker Compose + +如果你还需要 Docker Compose,可以按照以下步骤安装: + +1. **下载 Docker Compose**: + + ```sh + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + ``` + + > 关于这个路径中的1.29.2,请替换你想要安装的版本 + +2. **赋予执行权限**: + + ```sh + sudo chmod +x /usr/local/bin/docker-compose + ``` + +3. **验证安装**: + + ```sh + docker-compose --version + ``` +## 一键安装Docker {id="docker_9"} +> 执行下方命令即可一键安装Docker与Docker Compose +````bash +curl -fsSL https://get.docker.com | sh | tee docker-install.log +```` +## 卸载Docker + +- 停止Docker服务:运行以下命令,停止Docker服务。 + +``` +sudo systemctl stop docker +``` + +- 卸载Docker:运行以下命令,卸载Docker。 + +``` +sudo yum remove docker-ce +``` + +- 确认卸载:运行以下命令,确认Docker已卸载。 + +``` +sudo docker version +``` + +## 常见问题 + +- 如何查看Docker版本? + +``` +docker version +``` + +- 如何查看Docker信息? + +``` +docker info +``` + +- 如何查看Docker镜像? + +``` +docker images +``` + +- 如何查看Docker容器? + +``` +docker ps -a +``` + +- 如何运行Docker镜像? + +``` +docker run [OPTIONS] IMAGE [COMMAND] [ARG...] +``` + +- 如何停止Docker容器? + +``` +docker stop [OPTIONS] CONTAINER [CONTAINER...] +``` + +- 如何删除Docker镜像? + +``` +docker rmi [OPTIONS] IMAGE [IMAGE...] +``` + +- 如何删除Docker容器? + +``` +docker rm [OPTIONS] CONTAINER [CONTAINER...] +``` + +- 如何登录Docker镜像仓库? + +``` +docker login [OPTIONS] [SERVER] +``` + +- 如何推送Docker镜像到仓库? + +``` +docker push [OPTIONS] NAME[:TAG] +``` + diff --git a/Writerside/topics/Docker常见问题.md b/Writerside/topics/Docker常见问题.md new file mode 100644 index 0000000..f38da6b --- /dev/null +++ b/Writerside/topics/Docker常见问题.md @@ -0,0 +1,100 @@ +# Docker常见问题 +## 1. Docker镜像拉取失败 +> 可以尝试更换镜像源 +> +> 首先进入打开daemon配置文件 +> +> ```sh +> #执行 +> nano /etc/docker/daemon.json +> # 或者 +> vim /etc/docker/daemon.json +> ``` +> +> 一般是空的文件,我们可以把网上找到的镜像源粘贴到上面,格式形如 +> +> ```json +> { +> "dns": ["8.8.8.8", "8.8.4.4"], +> "registry-mirrors": [ +> "https://docker.mirrors.sjtug.sjtu.edu.cn", +> "https://cr.laoyou.ip-ddns.com", +> "https://docker.1panel.live", +> "https://image.cloudlayer.icu", +> "https://hub.fast360.xyz", +> "https://docker-0.unsee.tech", +> "https://docker.1panelproxy.com", +> "https://docker.tbedu.top", +> "https://dockerpull.cn", +> "https://docker.m.daocloud.io", +> "https://hub.rat.dev", +> "https://docker.kejilion.pro", +> "https://docker.hlmirror.com", +> "https://docker.imgdb.de", +> "https://docker.melikeme.cn", +> "https://ccr.ccs.tencentyun.com" +> ] +> } +> ``` +> +> 然后重启Docker服务即可 +> +> ```sh +> sudo systemctl restart docker +> ``` + +## 2. Docker容器自启动 + +> 这里拿pgsql举例 + +### **方法 1:使用 `docker run` 时设置自启动** + +在运行容器时,使用 `--restart` 参数指定重启策略 + +``` +docker run --name my-postgres \ + -e POSTGRES_PASSWORD=mysecretpassword \ + -p 5432:5432 \ + -v /var/lib/postgresql/data:/var/lib/postgresql/data \ + --restart unless-stopped \ # 关键参数:设置自启动策略 + -d postgres +``` + +### **`--restart` 可选策略** + +| 策略 | 说明 | +| :------------------------- | :----------------------------------------------------------- | +| `no` | **默认**,容器不会自动重启 | +| `always` | **总是重启**(即使手动停止 `docker stop`,Docker 服务重启后也会自动启动) | +| `unless-stopped` | **除非手动停止**(`docker stop` 后不会自启,其他情况如系统重启会自动恢复) | +| `on-failure[:max-retries]` | **失败时重启**(可设置最大重试次数,如 `on-failure:5`) | + +------ + +### **方法 2:修改已运行的容器** + +如果容器已经创建,可以用 `docker update` 修改其重启策略: + +``` +docker update --restart unless-stopped my-postgres +``` + +------ + +### **方法 3:在 `docker-compose.yml` 中配置** + +如果使用 Docker Compose,在 `services` 下添加 `restart` 字段: + +``` +services: + postgres: + image: postgres + container_name: my-postgres + restart: unless-stopped # 可选 always / on-failure / no + environment: + POSTGRES_PASSWORD: mysecretpassword + volumes: + - /var/lib/postgresql/data:/var/lib/postgresql/data + ports: + - "5432:5432" +``` \ No newline at end of file diff --git a/Writerside/topics/Docker教程主页.md b/Writerside/topics/Docker教程主页.md new file mode 100644 index 0000000..8320a41 --- /dev/null +++ b/Writerside/topics/Docker教程主页.md @@ -0,0 +1,3 @@ +# Docker教程主页 + +此处主要存放Docker相关的教程,包括Docker的基本概念、安装、使用、Dockerfile编写、镜像管理、容器管理等。 \ No newline at end of file diff --git a/Writerside/topics/assets/Docker_PostgreSQL/image-20250420104553777.png b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420104553777.png new file mode 100644 index 0000000..bbb7c6a Binary files /dev/null and b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420104553777.png differ diff --git a/Writerside/topics/assets/Docker_PostgreSQL/image-20250420111459451.png b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420111459451.png new file mode 100644 index 0000000..34ff001 Binary files /dev/null and b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420111459451.png differ diff --git a/Writerside/topics/assets/Docker_PostgreSQL/image-20250420111643192.png b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420111643192.png new file mode 100644 index 0000000..7e6a626 Binary files /dev/null and b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420111643192.png differ diff --git a/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112228948.png b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112228948.png new file mode 100644 index 0000000..a406ca6 Binary files /dev/null and b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112228948.png differ diff --git a/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112323250.png b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112323250.png new file mode 100644 index 0000000..e4887b1 Binary files /dev/null and b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112323250.png differ diff --git a/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112546002.png b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112546002.png new file mode 100644 index 0000000..d1411c9 Binary files /dev/null and b/Writerside/topics/assets/Docker_PostgreSQL/image-20250420112546002.png differ diff --git a/Writerside/topics/主页.md b/Writerside/topics/主页.md new file mode 100644 index 0000000..2a3920c --- /dev/null +++ b/Writerside/topics/主页.md @@ -0,0 +1,3 @@ +# 主页 + +这是教程的主页,本文档主要记录在写项目的过程中需要安装的软件、配置环境、编写代码、运行项目等相关内容。 \ No newline at end of file diff --git a/Writerside/v.list b/Writerside/v.list new file mode 100644 index 0000000..2d12cb3 --- /dev/null +++ b/Writerside/v.list @@ -0,0 +1,5 @@ + + + + + diff --git a/Writerside/writerside.cfg b/Writerside/writerside.cfg new file mode 100644 index 0000000..50d7627 --- /dev/null +++ b/Writerside/writerside.cfg @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tutorial.iml b/tutorial.iml new file mode 100644 index 0000000..80cc739 --- /dev/null +++ b/tutorial.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file