Docker 搭建常见服务

Docker Hub

  1. Docker Hub 是一个由 Docker 公司运行和管理的镜像云存储库
  2. Docker Hub 官方地址:hub.docker.com/
  3. 通过 Dcoker Hub 可以搜索收录的公告镜像,也可以进行镜像仓库的私有化部署
  4. Docker Hub 官网镜像中带有Offical Image标志的,为官方发布,更加安全可靠

image-20211106212051836

MySQL

  1. 打开 Docker Hub 官网,搜索 MySQL 镜像,推荐选择带有Offical Image标志的

image-20211107092359150
2. 在Description中可查看描述文档,在Tags中可查看版本号

image-20211107092753989
3. 拉取镜像

1
shell复制代码docker pull mysql:8.0.27

image-20211107093258892
4. MySQL 容器基本启动命令

1
2
3
4
5
shell复制代码docker run 
--name some-mysql
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-d mysql:tag

使用-e指定环境变量,MYSQL_ROOT_PASSWORD 指定 root 用户密码

使用-p指定端口映射,将容器内 3306 映射到宿主机 3306,以供外部访问
5. MySQL 容器数据持久化

1
2
3
4
5
6
shell复制代码docker run 
--name some-mysql
-p 3306:3306
-v /my/custom/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-d mysql:tag

使用-v指定数据卷映射,MySQL 容器的数据默认存放在/var/lib/mysql,通过数据卷映射到宿主机目录(可自动创建),方便备份

MySQL 容器被持久化到宿主机目录,再次挂载时,会自动加载原库表数据以及数据库密码设置
6. MySQL 容器自定义配置文件

MySQL 容器对配置文件进行了拆分,主配置文件为/etc/mysql/my.cnf,使用!includedir引入了/etc/mysql/conf.d/etc/mysql/mysql.conf.dmysql.conf.d存放了默认配置文件,conf.d留给用户自定义配置,一般只需要映射 /etc/mysql/conf.dmysql.cnf即可

1
2
3
4
5
6
7
shell复制代码docker run 
--name some-mysql
-p 3306:3306
-v /my/custom/data:/var/lib/mysql
-v /my/custom/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-d mysql:tag

image-20211107102440620
7. MySQL 容器常见启动环境变量

MYSQL_DATABASE指定启动时创建的数据库名称

MYSQL_USERMYSQL_PASSWORD指定MYSQL_DATABASE的用户和密码

可通过在 /docker-entrypoint-initdb.d 下映射 SQL 脚本或 Shell 脚本文件来初始化 MySQL 数据库

Nginx

  1. 拉取 Nginx 镜像
1
shell复制代码docker pull nginx:1.21.3
  1. 运行 Nginx web 服务
1
2
3
4
shell复制代码docker run 
--name some-nginx
-v /some/content:/usr/share/nginx/html:ro # :ro 代表只读,容器内数据改变不影响外部
-d nginx:tag

作为 Web 服务器时,Nginx 容器 Web 资源默认存放在容器内的/usr/share/nginx/html,映射到宿主机目录可用于部署前端系统
3. 配置 Nginx 反向代理

Nginx 容器配置文件默认存放在容器内的/etc/nginx/nginx.conf

若没有该配置文件模板,可启动一个临时容器,用docker cp命令复制到宿主机

1
2
3
shell复制代码docker run --name tmp-nginx -d nginx
docker cp tmp-nginx:/etc/nginx/nginx.conf /host/path/nginx.conf
docker rm -f tmp-nginx

修改nginx.conf,添加反向代理配置如下

1
2
3
4
5
6
7
8
9
10
ini复制代码upstream myservers {
server 192.168.1.8;
server 192.168.1.9;
server 192.168.1.10;
}
server {
location / {
proxy_pass http://myservers/;
}
}

启动 Nginx 容器

1
2
3
4
shell复制代码docker run 
--name my-custom-nginx-container
-v /host/path/nginx.conf:/etc/nginx/nginx.conf
-d nginx:tag

Redis

  1. 拉取 Redis 镜像
1
shell复制代码docker pull redis:6.2.5

同一个版本号有不同版本,如6.2.5-buster[6.2.5-alpine],区别是基于的 Linux 系统不同,在大小和内置工具上有差异
2. 启动 Redis

1
shell复制代码docker run --name some-redis -p 6379:6379 -d redis:tag
  1. 开启数据持久化

快照方式(默认开启),快照文件是容器内/data目录的dump.rdb文件

1
2
3
4
5
shell复制代码docker run 
--name some-redis
-p 6379:6379
-v /var/docker/redis/data:/data
-d redis:tag

开启 AOF 持久化,减少丢数据的风险,最多丢失一秒内的数据

1
2
3
4
5
6
shell复制代码docker run 
--name some-redis
-p 6379:6379
-v /var/docker/redis/data:/data
-d redis:tag
redis-server --appendonly yes # 可在 run 命令后直接追加启动后容器要执行的命令

AOF 文件名为appendonly.aof,默认生成到/data目录
4. 自定义 Redis 配置文件

新建redis.conf配置文件,添加自定义配置项

1
2
3
4
5
6
7
8
shell复制代码# 设置为 0.0.0.0,即开启远程访问
bind 0.0.0.0
# 开启 AOF
appendonly yes
# 设置端口
port 6379
# 设置访问密码
requirepass xxxxx

启动 Redis 并加载自定义redis.conf

1
2
3
4
5
6
7
shell复制代码docker run 
--name some-redis
-p 6379:6379
-v /var/docker/redis/data:/data
-v /var/docker/redis/redis.conf:/etc/redis.conf # 挂载配置文件
-d redis:tag
redis-server /etc/redis.conf # 启动 server 时使用配置文件

RabbitMQ

  1. 在 Docker Hub 上搜索 RabbitMQ

image-20211108212725487

拉取 RabbitMQ 镜像

1
shell复制代码docker pull rabbitmq:3.8.23-management

版本号中带有 management 的镜像是带有 Web 管理界面

不带 management 的镜像只能通过命令操作
2. 启动 RabbitMQ 基本服务

1
2
3
4
5
6
7
shell复制代码# 15672 Web 管理页面端口
# 5672 通信端口
docker run \
--name rabbitmq \
-p 15672:15672 \
-p 5672:5672 \
-d rabbitmq:3.8.23-management

Web 管理界面默认的账户密码为 guest/guest
3. 启动 RabbitMQ 并指定管理员初始账号密码

1
2
3
4
5
6
7
8
9
shell复制代码 # RABBITMQ_DEFAULT_USER 用户名
# RABBITMQ_DEFAULT_PASS 密码
docker run \
--name rabbitmq \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=xxxx \
-d rabbitmq:3.8.23-management
  1. 启动时创建一个虚拟主机
1
2
3
4
5
6
7
8
9
shell复制代码# RABBITMQ_DEFAULT_VHOST 指定虚拟主机名称
docker run \
--name rabbitmq \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=xxxx \
-e RABBITMQ_DEFAULT_VHOST=demoMQ \
-d rabbitmq:3.8.23-management
  1. 自定义 RabbitMQ 配置

默认配置文件是/etc/rabbitmq/rabbitmq.conf

image-20211108222440762

自定义配置文件启动,并持久化/var/lib/rabbitmq运行目录

1
2
3
4
5
6
7
shell复制代码docker run \
--name rabbitmq \
-p 15672:15672 \
-p 5672:5672 \
-v /var/docker/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /var/docker/rabbitmq/data:/var/lib/rabbitmq \
-d rabbitmq:3.8.23-management

浏览器访问宿主机的 15672 端口,可进入登录界面,使用配置的账户登录即可

image-20211112220802017

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%