一、mysql安装
简单安装
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysqlmysql容器本地挂载
cd /usr
mkdir mysql
cd mysql/
mkdir data
mkdir conf
mkdir init
 
可以手动导入自己的数据库信息


docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v /usr/mysql/data:/var/lib/mysql \-v /usr/mysql/conf:/etc/mysql/conf.d \-v /usr/mysql/init:/docker-entrypoint-initdb.d \mysql
然后就可以连接了

常见操作指令
# 4.查看root目录,可以发现~/mysql/data目录已经自动创建好了
ls -l mysql
# 结果:
总用量 4
drwxr-xr-x. 2 root    root   20 5月  19 15:11 conf
drwxr-xr-x. 7 polkitd root 4096 5月  19 15:11 data
drwxr-xr-x. 2 root    root   23 5月  19 15:11 init# 查看data目录,会发现里面有大量数据库数据,说明数据库完成了初始化
ls -l data# 5.查看MySQL容器内数据
# 5.1.进入MySQL
docker exec -it mysql mysql -uroot -p123
# 5.2.查看编码表
show variables like "%char%";
# 5.3.结果,发现编码是utf8mb4没有问题
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+# 6.查看数据
# 6.1.查看数据库
show databases;
# 结果,hmall是黑马商城数据库
+--------------------+
| Database           |
+--------------------+
| hmall              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
# 6.2.切换到hmall数据库
use hmall;
# 6.3.查看表
show tables;
# 结果:
+-----------------+
| Tables_in_hmall |
+-----------------+
| address         |
| cart            |
| item            |
| order           |
| order_detail    |
| order_logistics |
| pay_order       |
| user            |
+-----------------+
# 6.4.查看address表数据
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
| id | user_id | province | city   | town     | mobile      | street        | contact   | is_default | notes |
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
| 59 |       1 | 北京     | 北京   | 朝阳区    | 13900112222 | 金燕龙办公楼   | 李佳诚    | 0          | NULL  |
| 60 |       1 | 北京     | 北京   | 朝阳区    | 13700221122 | 修正大厦       | 李佳红    | 0          | NULL  |
| 61 |       1 | 上海     | 上海   | 浦东新区  | 13301212233 | 航头镇航头路   | 李佳星    | 1          | NULL  |
| 63 |       1 | 广东     | 佛山   | 永春      | 13301212233 | 永春武馆       | 李晓龙    | 0          | NULL  |
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
4 rows in set (0.00 sec)可以自己试试

exit退出

可以创建一个网络
docker network create network1
# 2.然后查看网络
docker network ls
# 3.让dd和mysql都加入该网络,注意,在加入网络时可以通过--alias给容器起别名 # 这样该网络内的其它容器可以用别名互相访问!
# 3.1.mysql容器,指定别名为db,另外每一个容器都有一个别名是容器名
docker network connect network1 mysql --alias db我这里就不用了
docker network connect network1 mysql
 docker network inspect network1
可以进入容器
docker exec -it 容器名称 bash二、安装elasticsearch
docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network hm-net \-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1三、安装Kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601  \
kibana:7.12.1四、安装MongoDB
1.docker 拉取mysql镜像
docker pull mongo:latest
2.运行容器
创建外部挂载的文件并进行授权
mkdir -p /mydata/mongo/config
mkdir -p /mydata/mongo/data
mkdir -p /mydata/mongo/logs
touch /mydata/mongo/config/mongod.conf
chmod 777 /mydata/mongo然后,使用编辑器打开mongod.conf文件,
cd /mydata/mongo/config
vim mongod.conf
并添加以下内容:
# 数据库存储路径
dbpath=/mydata/mongo/data# 日志文件路径
logpath=/mydata/mongo/logs/mongod.log# 监听的端口
port=27017# 允许所有的 IP 地址连接
bind_ip=0.0.0.0# 启用日志记录
journal=true# 是否后台运行
fork=true     # 启用身份验证
#auth=true 运行MongoDB容器
docker run -dit --name mongo \
-p 27017:27017 \
-v /mydata/mongo/config/mongod.conf:/etc/mongod.conf \
-v /mydata/mongo/data:/data/db \
-v /mydata/mongo/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--restart=always  \
mongo
参数说明
-i:表示运行容器
-t:表示容器启动后进入其命令行
-d:守护式方式创建容器在后台运行
-name:容器名称-p 27017:27017     端口映射    前面是外部访问端口:后面内部开发的端口,mongoDB默认是27017端口-v /mydata/mongo/data:/data/db  给容器内部的数据文件指向mongodbdata ,即删除了容器,容器数据也不会丢失,下次创建容器继续挂载到/mydata/mongo/data即可看到删除容器之前的数据
-e MONGO_INITDB_ROOT_USERNAME=admin
-e MONGO_INITDB_ROOT_PASSWORD=123456  指定容器内的环境变量 初始化容器账号、密码
--restart=always   容器挂掉后自动重启进入容器内部
docker exec -it mongo /bin/mongosh
//或
docker exec -it mongodb bash//登录容器
mongo admin -u admin -p 123456     -u 后面的是创建容器指定的账号   -p 后面跟的是创建容器指定的密码
 说明:
 如果MongoDB6.0及以上使用:
 docker exec -it mongo /bin/mongosh
 如果是6.0以下的版本使用:
 docker exec -it mongo /bin/mongo
mongo中各个角色对应的权限
 权限    说明
 read    允许用户读取指定数据库
 readWrite    允许用户读写指定数据库
 dbAdmin    允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
 userAdmin    允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
 clusterAdmin    只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
 readAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的读权限
 readWriteAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的读写权限
 userAdminAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
 dbAdminAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
 root    只在admin数据库中可用。超级账号,超级权限
五、安装redis
docker run --restart=always -p 6379:6379 --name myredis -d redis:6.2.1  --requirepass ningzaichun或
docker run --restart=always \
-p 6379:6379 \
--name myredis \
-v /home/dj/redis/redis.conf:/etc/redis/redis.conf \
-v /home/dj/redis/data:/data \
-d redis:7.0.12 redis-server /etc/redis/redis.conf六、安装nginx
docker pull nginx:1.24.0
docker run -p 80:80 -d --name nginx nginx:1.24.0
拷贝 Nginx 主配置文件/etc/nginx/nginx.conf:
# nginx容器名、/etc/nginx/nginx.conf 配置文件容器内的地址
# D:\Programing\Docker\volumns\nginx\conf 宿主机上拷贝的目标地址
docker cp nginx:/etc/nginx/nginx.conf D:\Programing\Docker\volumns\nginx\conf
Nginx 主配置文件包含了影响 Nginx 全局行为的命令,包括事件处理、HTTP 服务器的基本配置(如监听端口、文件路径等)、日志文件位置以及其他重要配置。
 拷贝 html 目录:/usr/share/nginx/html
docker cp nginx:/usr/share/nginx/html D:\Programing\Docker\volumns\nginx
这是 Nginx 的默认文档根目录。当您使用 Nginx 来提供静态网页服务时,放置在此目录下的文件和目录将可以通过 web 访问。(注:可以在配置文件 server 块中,使用 root 指令指定根目录)
正式运行镜像
拷贝文件完成后,删除第一次试运行的 nginx 容器:
正式运行 nginx,将宿主机上的配置文件和文档根目录挂载到容器上:
# 多行便于展示()
docker run -p 81:80 \--network api-my_net \-d --name nginx \-v D:\Programing\Docker\volumns\nginx\conf\nginx.conf:/etc/nginx/nginx.conf \-v D:\Programing\Docker\volumns\nginx\conf\conf.d:/etc/nginx/conf.d \-v D:\Programing\Docker\volumns\nginx\html:nginx:/usr/share/nginx/html \nginx:1.24.0# 可直接复制该行命令运行
docker run -p 81:80 --network my_net -d --name nginx -v D:\Programing\Docker\volumns\nginx\conf\nginx.conf:/etc/nginx/nginx.conf  -v D:\Programing\Docker\volumns\nginx\conf\conf.d:/etc/nginx/conf.d -v D:\Programing\Docker\volumns\nginx\html:/usr/share/nginx/html nginx:1.24.0
参数解释:
--network:将容器加入到名为 my_net 的网络。注:如果该网络不存在,docker 会报错。若网络不存在,需要执行docker network create my_net创建。
 -p:端口映射,冒号前为宿主机端口,冒号后为容器内的端口,即宿主机上访问 81 端口的 HTTP 请求会被交给 nginx 容器的 80 端口。
 -d:后台运行容器;
 --name:指定容器名称,本例中名称为 nginx。
 -v:挂载配置文件、html 目录到宿主机;冒号前为宿主机文件路径,冒号后为挂载到容器中的路径。可以看到宿主机被挂载的三个目录/文件是第一次运行时从容器内拷贝出来的,