Docker入门到项目部署

基于黑马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 命令行界面后,你将回到容器的命令行终端,可以继续执行其他命令或退出容器的命令行界面。

  • 部署项目后端

  • 部署项目前端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唯手熟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值