基于黑马docker课程的学习以及个人总结!!!!
day02-Docker - 飞书云文档 (feishu.cn)
-
先安装Linux系统环境
-
安装Docker
-
再看day02-Docker
以下是个人的总结和想法......
一、连接docker下载的数据库
-
可以打开自己的图形化工具:navicat
-
在navicat的主机中填入你虚拟机的IP地址和对应密码即可连接成功
# 第1步,去DockerHub查看nginx镜像仓库及相关信息 # 第2步,拉取Nginx镜像 docker pull nginx # 第3步,查看镜像 docker images # 结果如下: REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 605c77e624dd 16 months ago 141MB mysql latest 3218b38490ce 17 months ago 516MB # 第4步,创建并允许Nginx容器 docker run -d --name nginx -p 80:80 nginx # 第5步,查看运行中容器 docker ps # 也可以加格式化方式访问,格式会更加清爽 docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}" # 第6步,访问网页,地址:http://虚拟机地址 # 第7步,停止容器 docker stop nginx # 第8步,查看所有容器 docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}" # 第9步,再次启动nginx容器 docker start nginx # 第10步,再次查看容器 docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}" # 第11步,查看容器详细信息 docker inspect nginx # 第12步,进入容器,查看容器内目录 docker exec -it nginx bash # 或者,可以进入MySQL docker exec -it mysql mysql -uroot -p # 第13步,删除容器 docker rm nginx # 发现无法删除,因为容器运行中,强制删除容器 docker rm -f nginx
下载的工具在docker中。
# 第5步,查看运行中容器 docker ps
可以部署多各相同工具,但是映射的宿主机端口不能相同!
保存到本地
docker save -o nginx.tar nginx:latest
加载
删除
进入容器
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。
(实现本地修改同步远程:本机与虚拟机也可以建立相似的关系,例如嵌入式的文件编译!)
二、项目部署
删除容器里面的拉起的没有内容的工具
-
部署项目需要的MySQL数据库
# 1.删除原来的MySQL容器 docker rm -f mysql # 2.进入root目录 cd ~ # 3.创建并运行新mysql容器,挂载本地目录 docker run -d \ --name mysql \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123 \ -v ./mysql/data:/var/lib/mysql \ -v ./mysql/conf:/etc/mysql/conf.d \ -v ./mysql/init:/docker-entrypoint-initdb.d \ mysql #这是一个用于在 Docker 中运行 MySQL 容器的命令。下面是对每个参数的解释: - `-d`:表示以后台(detached)模式运行容器。 - `--name mysql`:指定容器的名称为 "mysql"。 - `-p 3306:3306`:将主机的 3306 端口映射到容器的 3306 端口,这样可以通过主机的 3306 端口访问 MySQL 服务。 - `-e TZ=Asia/Shanghai`:设置容器的时区为亚洲/上海时区。这样可以确保容器内的时间与主机的时间保持一致。 - `-e MYSQL_ROOT_PASSWORD=123`:设置 MySQL 的 root 用户的密码为 "123"。你可以根据需要将密码更改为其他安全的值。 - `-v ./mysql/data:/var/lib/mysql`:将主机的 `./mysql/data` 目录挂载到容器的 `/var/lib/mysql` 目录,用于持久化存储 MySQL 数据。 - `-v ./mysql/conf:/etc/mysql/conf.d`:将主机的 `./mysql/conf` 目录挂载到容器的 `/etc/mysql/conf.d` 目录,用于自定义 MySQL 的配置文件。 - `-v ./mysql/init:/docker-entrypoint-initdb.d`:将主机的 `./mysql/init` 目录挂载到容器的 `/docker-entrypoint-initdb.d` 目录,用于自定义初始化脚本。在容器启动时,MySQL 会执行这个目录中的 SQL 脚本来初始化数据库。 - `mysql`:指定要运行的容器镜像名称,这里是使用官方的 MySQL 镜像。 通过运行这个命令,你将在 Docker 中创建一个名为 "mysql" 的容器,该容器会运行 MySQL 服务,并将主机的端口 3306 映射到容器的端口 3306。同时,你还可以通过挂载卷来实现数据持久化和自定义配置。(实现本地修改) # 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)
命令
ls //查看当前目录下的文件 ll //查看当前目录下的文件和文件权限 ls -l data //查看当前目录下data的所以文件
退出数据库
exit
要退出 MySQL 数据库的命令行界面,可以使用以下方法: 如果你在 MySQL 命令行界面中,可以直接使用 exit 命令退出。输入 exit 并按下 Enter 键,你将退出 MySQL 命令行界面。 如果你在 Docker 容器的命令行界面中,并且已经登录到 MySQL 服务器,可以使用以下方法退出: 使用 Ctrl + D 组合键:在命令行中按下 Ctrl 键和 D 键,你将退出 MySQL 命令行界面并返回到容器的命令行终端。 使用 exit 命令:在 MySQL 命令行界面中输入 exit 并按下 Enter 键,你将退出 MySQL 命令行界面并返回到容器的命令行终端。 无论使用哪种方法,退出 MySQL 命令行界面后,你将回到容器的命令行终端,可以继续执行其他命令或退出容器的命令行界面。
-
部署项目后端
-
部署项目前端