docker小白第七天

docker小白第七天

tomcat安装

docker hub上面查找tomcat镜像

docker小白第七天_第1张图片
点进tomcat,可以看到下载镜像的命令。但是因为文件太大,并且是国外下载镜像很慢,所以我们从前期配置好的阿里云镜像仓库下载。

docker search tomcat
docker pull tomcat

docker小白第七天_第2张图片

docker启动tomcat容器

然后下载完成后,查看是否已拉取到本地

docker images tomcat

启动tomcat镜像,新建一个容器实例。

docker run -d -p 8080:8080 --name tomcat1 tomcat
-p小写代表   主机端口:docker容器端口
-P大写代表   随机分配端口
i:交互
t:终端
d:后台

然后docker ps查看是否启动容器成功。
在这里插入图片描述然后访问猫的首页,localhost:8080,可能会出现访问不到的问题,以下是解决方案。

docker小白第七天_第3张图片

通过交互式命令行再次进tomcat容器查看信息
docker exec -it tomcat1 /bin/bash
ls -l

docker小白第七天_第4张图片
cd进webapps查看,发现里边什么也没有
docker小白第七天_第5张图片

rm -r webapps
新版的tomcat已经不用webapps作为访问的初始页面了,需要把这个删掉,用webapps.dist代替
mv webapps.dist webapps
对webapps.dist改名

重启虚机,然后输入关闭防火墙命令

systemctl stop firewalld
测试完成后,记得在开启防火墙
systemctl start firewalld

在宿主机windows上,输入虚拟机ip地址:8080,即可访问。
docker小白第七天_第6张图片

tomcat访问webapps免修改版

docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
替换为老板的tomcat进行启动

mysql安装

拉取mysql镜像

docker search mysql
docker pull mysql:5.7
下载5.7版本
docker images mysql:5.7
查看镜像是否下载成功

docker小白第七天_第7张图片

创建容器

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
如果linux上装过mysql,且已经运行了,则不能使用docker启动mysql容器,占用3306端口。

然后输入docker ps查看已经启动的容器
docker小白第七天_第8张图片

docker exec -it 398a3f377d60 /bin/bash
以交互式命令行进入docker容器界面
mysql -uroot -p
然后输入前边配置的root账户的密码

docker小白第七天_第9张图片
然后就可以执行一些数据库命令了

show databases;
create database db01;
use db01;
create table t1(id int, name varchar(20));
insert into t1 values(1,'z3');
select * from t1;
记得加英文的冒号

docker小白第七天_第10张图片
在这里插入图片描述
docker小白第七天_第11张图片
docker小白第七天_第12张图片

windows宿主机通过工具访问容器数据库

在虚拟机上新建了一个linux系统,然后起了一个容器数据库,端口是3306,尝试在宿主机windows系统上通过数据库图形化管理工具进行连接查看。
注意:记得关闭虚拟机的防火墙

systemctl stop firewalld

在数据库管理工具上测试,输入虚机ip,和端口,点测试连接。
docker小白第七天_第13张图片
然后连接数据库,设置刚刚新建的db01为默认库,执行命令查看里边的表t1数据。
docker小白第七天_第14张图片
注意问题一,数据库插入中文字符报错,可以通过以下命令到linux服务器内的数据库查看

show variables like 'character%';
查看编码解码的设置

docker小白第七天_第15张图片
可以看到client客户端的编码方式是latin1,不是utf-8.
docker小白第七天_第16张图片
注意问题二,删除容器后,里边的mysql数据可能会丢失,记得挂载容器卷。

mysql容器实战避雷

插入中文字符报错解决

前文提到两个问题,需要注意避雷,通过实践案例演示一遍。先停掉并删除之前的数据库容器实例。

docker stop 容器id
docker rm -f 容器id

然后重头开始新建mysql容器

docker run -d -p 3306:3306 --privileged=true -v /cz/mysql/log:/var/log/mysql -v /cz/mysql/data:/var/lib/mysql -v /cz/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

–privileged=true是开启容器卷的全部权限
同时多个-v,表示一次挂载多个容器卷,若新建不成功,记得开启刚刚关闭的防火墙或者杀死刚刚还存在的3306端口。如下图所示 可以看到已经新建成功。
docker小白第七天_第17张图片

cd /cz/mysql/conf
vim my.cnf

然后编辑my.cnf

[client]
default_character_set = utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
然后保存退出
docker restart mysql
改完配置后重启mysql容器
docker exec -it mysql bash
进入mysql容器的命令行
mysql -uroot -p
进入数据库
show variables like 'character%';
再次查看编码解码的设置

docker小白第七天_第18张图片
然后在数据库执行如下命令

create database db01;
use db01;
create table t1(id int, name varchar(20));

在windows的mysql管理工具,执行插入中文字符不报错了。
docker小白第七天_第19张图片

误删除docker容器mysql后的数据处理

1、当误删除mysql容器实例时,若创建该容器时有挂载容器卷,则再次创建一个新容器时,容器卷的挂载位置相同,则启动容器后,会发现数据还在。
2、宿主机的卷若被删除,则无法恢复。这是注意点。

你可能感兴趣的:(docker,容器,运维)