docker的应用
1.1 docker 安装tomcat
# 如果是未下载的镜像,可以直接使用地址
docker run -d -p 8000:8080 --name mytomcat2 daocloud.io/library/tomcat:8.5.15-jre8
# 如果是已下载的镜像,可以使用镜像名或镜像名:tag
docker run -d -p 8000:8080 --name mytomcat3 镜像的标识
1.2 docker 安装mysql
# docker 安装mysql,并指定端口和密码
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:5.7.4
1.3 docker 部署ssm工程
1.3.1 修改ssm工程环境,配置容器中的数据库信息
1.3.2 通过maven 打包成 war包
1.3.3 将打成的war包复制到服务器linux中
1.3.4 将linux中的war包复制到容器内部
docker cp 要复制的文件的绝对路径 容器id:容器内部路径
1.3.5 测试访问ssm工程
1.4 docker 使用数据卷
每次部署都需要把项目文件放到容器太过麻烦,也可以通过创建数据卷的方式,把容器中某些路径映射到宿主机路径,这就是数据卷
1.4.1 创建数据卷
# 创建数据卷后,默认会放在一一个目录下,/var/lib/docker/volumes/数据卷名称/_data
docker volume create 数据卷名称
# 例子
[root@centOS ~]# docker volume create mytomcat
mytomcat
[root@centOS volumes]# pwd
/var/lib/docker/volumes
[root@centOS volumes]# ls
mytomcat
[root@centOS volumes]#
1.4.2 查看全部数据卷
# 查看所有数据卷信息
docker volume ls
# 例子
[root@centOS volumes]# docker volume ls
DRIVER VOLUME NAME
local 9922c33342a0d2f435b23ec6191a9ce03531e643db1be6b703f361edf5f3fece
local my_tomcat_data
local mytomcat
1.4.3 查看数据卷详情
# 查看数据卷详情,包含存放的路径,创建时间等
docker volume inspect 数据卷名
# 例子
[root@centOS volumes]# docker volume inspect mytomcat
[
{
"CreatedAt": "2020-08-26T22:20:20+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/mytomcat/_data",
"Name": "mytomcat",
"Options": {},
"Scope": "local"
}
]
1.4.4 删除数据卷
# 删除指定数据卷
docker volume rm 数据卷名称
# 例子
[root@centOS volumes]# docker volume rm mytomcat
mytomcat
[root@centOS volumes]# docker volume ls
DRIVER VOLUME NAME
local 9922c33342a0d2f435b23ec6191a9ce03531e643db1be6b703f361edf5f3fece
local my_tomcat_data
1.4.5 容器映射数据卷
我们学会了数据卷的增删查,但是并没有个容器关联在一起,应该怎么关联呢?
# 通过数据卷名称映射,如果数据卷不存在,docker 会帮自动创建,会将容器内部自带的文件,存放到数据卷路径中
docker run -d -p 8000:8080 --name tomcat -v 数据卷名称:容器内部的路径 镜像id
# 通过路径映射数据卷,指定一个路径作为数据卷的存放地址,但是这个路径下是空的(不会默认把容器内的文件带出来,需要手动添加)
docker run -d -p 8000:8080 --name tomcat -v 路径(/root/自己创建的文件夹): 容器内部路径 镜像id
# 例如
[root@centOS volumes]# docker run -d -p 8000:8080 --name tomcat -v /usr/local/tomcat/webapps/:/usr/local/tomcat/webapps/
96b7ed0dc6a8a55ea7ce226d5a7ab6207f63396182e61d0c411178d106c08fca
# 然后把 index.html放到 /usr/local/tomcat/webapps 这个路径下,就可以通过http://172.16.195.134:8000/ 知道对应的html文件
1.4.5.1 mysql使用数据卷
# mysql 指定数据卷存放表信息
docker run -d -p 3306:3306 --name my_docker_mysql -v /usr/local/mysql/mysql_docker01/mysql_data_docker01/:/var/lib/mysql -v /usr/local/mysql/mysql_docker01/mysql_config_docker01/:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root aa
-d : --detach,后台运行。
–name : 为你的镜像创建一个别名,该别名用于更好操作。
-p : 映射端口,一般我们会将默认端口进行更改,避免与本机的mysql端口冲突,如果你宿主机有mysql,请更改端口,如 -p 33060:3306。
-e : 环境变量。为mysql的root用户设置密码为123456。
-v : 指定数据卷,意思就是将mysql容器中的/var/lib/mysql(这个是数据库所有数据信息文件)映射到宿主机/data/mysql里面。
# myql 增加用户,授予权限命令
grant all on *.* to 'test'@'%' identified by '1234';
这时一条授予权限命令,当用户不存在时,则会自动创建。
. 前一个*星号代表所有数据库,后一个星号代表所有数据表
‘test"@’% : test是用户名,%为所有IP。
identified by ‘1234’ : 密码设置为1234.
#在容器内部登录mysql
mysql -h 数据ip -u用户名 -p
# 例子
root@a6e28cf62fa4:/usr/local/mysql# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.4-m14 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
h : 指定主机IP
-P : 这是指定端口的,如果你设置了自己的端口,记得加上这个参数。
如果没有安装mysql-client(mysql服务器的连接工具),那么就先安装一下。