1.铺垫
1.什么是Docker
快速构建、运行、管理应用的工具(部署项目,以及项目依赖的各种组件,运维工具)
2.部署mysql
docker run -d
–name mysql2
-p 3307:3306
-e TZ=Asia/Shanghai
-e MYSQL_ROOT_PASSWORD=123
mysql
docker exec -it mysql bash
mysql -h 127.0.0.1 -u root -p123
2.1命令解读
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123\
mysql
- docker run创建并运行一个容器,-d是让容器在后台运行
- –name:给容器去一个名字,必须唯一
- -p 3306:3306:设置端口映射
- -e key=value:是设置环境变量
- mysql:指定运行的镜像的名字 正常为mysql:8.0 默认为最新版本
Docker基础
1.常见命令
1.镜像拉取
docker pull nginx
2.查看镜像
docker images
3.保存镜像到本地
docker save -o nginx.tar nginx:latest
[root@localhost ~]# docker save -o nginx.tar nginx:latest[root@localhost ~]# ^C[root@localhost ~]# ll
total 191248
-rw-------. 1 root root 2925 Oct 17 02:49 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Oct 17 06:31 docker
-rw-------. 1 root root 195826176 Oct 18 02:14 nginx.tar
-rw-------. 1 root root 2033 Oct 17 02:49 original-ks.cfg
4.删除镜像
docker rmi nginx:latest
5.从本地下载镜像
docker load -i nginx.tar
6.创建并运行容器(以nginx为例)
docker run -d --name nginx -p 80:80 nginx
7.查看容器
docker ps
docker ps --format “table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}”
查看所有容器
docker ps -a
8.停掉容器
docker stop nginx
9.重启/启动容器
docker start nginx
10.查看容器详细信息
docker inspect nginx
11.进入容器,查看容器内目录
docker exec -it nginx bash
12.查看日志
docker logs -f nginx
13.删除容器
docker rm mysql2
docker rm mysql2 -f 强制删除,不用先停下
2.命令别名
# 修改/root/.bashrc文件vi /root/.bashrc
内容如下:
# .bashrc# User specific aliases and functionsaliasrm='rm -i'aliascp='cp -i'aliasmv='mv -i'aliasdps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'aliasdis='docker images'# Source global definitionsif[ -f /etc/bashrc ];then. /etc/bashrc
fi
3.数据卷
案例-利用nginx容器部署静态资源
- 创建Nginx容器,修改nginx容器内的html目录下的index.html文件查看变化。
- 将静态资源部署到nginx的html目录。数据卷是一个虚拟目录,是容器目录和宿主机目录之间映射的桥梁。
3.1数据卷命令
# 1.首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
# 2.然后查看数据卷
docker volume ls# 结果
DRIVER VOLUME NAME
local 29524ff09715d3688eae3f99803a2796558dbd00ca584a25a4bbc193ca82459f
local html
# 3.查看数据卷详情
docker volume inspect html
# 结果[{"CreatedAt": "2024-05-17T19:57:08+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/html/_data","Name": "html","Options": null,"Scope": "local"}]# 4.查看/var/lib/docker/volumes/html/_data目录
ll /var/lib/docker/volumes/html/_data
# 可以看到与nginx的html目录内容一样,结果如下:
总用量 8
-rw-r--r--. 1 root root 497 12月 28 2021 50x.html
-rw-r--r--. 1 root root 615 12月 28 2021 index.html
# 5.进入该目录,并随意修改index.html内容
cd /var/lib/docker/volumes/html/_data
vi index.html
# 6.打开页面,查看效果# 7.进入容器内部,查看/usr/share/nginx/html目录内的文件是否变化
docker exec -it nginx bash
3.2数据卷与容器挂载方式二
1.查看容器是否有挂载数据卷
docker inspect mysql
# 1.删除原来的MySQL容器
docker rm-f mysql
# 2.进入root目录
cd ~
[root@bogon ~]# mkdir mysql[root@bogon ~]# cd mysql/[root@bogon mysql]# mkdir data[root@bogon mysql]# mkdir conf[root@bogon mysql]# mkdir init[root@bogon mysql]## 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
# 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)
4.自定义镜像
镜像包含了应用程序,程序运行的系统函数库。运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。
5.网络
两个容器在一个网段中,可以相互访问。
自定义网络:
1.创建:
docker network create ee
2.连接(容器连接网络)
docker network connect ee mysql
24: br-e652f2b78fb1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:b7:82:7f:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-e652f2b78fb1
容器创建时确定使用的网关:
docker run -d --name dd -p 8080:8080 --network ww docker-demo
部署
1.Java项目
2.前端
3.DockerCompose
版权归原作者 小马吃饱了 所有, 如有侵权,请联系我们删除。