Docker学习07-常规软件安装

之前忘了上传这一篇笔记,补一下

0x00 前言总体步骤

以前我们创建一个微服务,是需要很多的软件进行配置安装的,即下图这样子。安了这个安那个,十分的复杂麻烦。

Docker学习07-常规软件安装

但是现在不一样了,当我们学会了docker之后,我们安装软件的方法,就是docker run

Docker学习07-常规软件安装

大体步骤其实就是几个词:搜索、拉取、查看、启动、停止、移除。最好按照官网上的步骤来,要规范。

0x01 Tomcat 安装

1、dockerhub上面查找tomcat镜像

Docker学习07-常规软件安装

Docker学习07-常规软件安装

2、从dockerhub上拉取tomcat镜像到本地

3、docker images查看

4、使用镜像创建tomcat实例运行镜像,之后访问网站

docker run -d -p 8080:8080 --name=t1 tomcat	#注意要加-d!!!后面不能加bin bash!!bash是为了前端交互的!

发现是404,这是为什么呢??是因为tomcat最新版就是有这么个小BUG,注意修改即可。

Docker学习07-常规软件安装

  • Docker 默认采用的是 NAT 网络模式,所以会自动创建iptable规则并自动开放端口,所以无需考虑防火墙问题
  • docker拉取的tomcat中,webapps这个目录里面是空的,没有任何内容。所以需要将其删除之后,将webapps.dist改成webapps

Docker学习07-常规软件安装

5、访问tomcat首页

Docker学习07-常规软件安装

6、免修改版的安装

上面我们发现了,还要修改,是不是很麻烦??而且我们平时根本就用不着这么高的tomcat10版本好吧,所以这里介绍一个免修改版的。

不过要考虑清楚,这是需要承担一定的风险,甚至别人写的有可能会有后门,小心为益!

docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

7、设置开机自启动

我们搭建好了之后,重新启动电脑,docker就不run了,tomcat就没了,怎么办?

  • 第一,确保docker是自启动的
systemctl enable docker
  • 第二,输入下面这行命令,保证开机自启动
docker update 容器ID --restart=always

0x02 Mysql安装

入门级安装

1、查找mysql,在官网上查找。而且官网后面都有介绍

docker search mysql

Docker学习07-常规软件安装

2、拉取mysql

Docker学习07-常规软件安装

3、运行mysql

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker ps 
docker exec -it 容器ID /bin/bash
mysql -uroot -p

Docker学习07-常规软件安装

4、使用数据库链接工具链接

Docker学习07-常规软件安装

5、坑点

使用docker安装的mysql,默认是latin编码,插入中文会乱码!

mysql>show variables like '%character%'

实战安装

为什么说mysql需要实战安装?因为真实的环境下,我们需要里面的数据进行备份。再来对比一下刚才的安装。

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 

上条命令确实是运行成功了,但是没什么用,因为无法插入中文,无法数据备份等。

1、第一步,新建mysql容器实例

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

之前说过, -v可以使用多个,在这里就是利用了起来。

/var/log/mysql:mysql的日志文件

/var/lib/mysql:mysql的数据文件

/etc/mysql/conf.d:mysql的配置文件,需要在里面进行配置从而修改成中文。

2、新建mysql.conf

在宿主机刚才创建的conf文件夹中,新建一个文件mysql.conf,随后粘贴进下面内容

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

3、重新启动mysql容器实例再重新进入并查看字符编码

第一次启动实例,是为了docker mysql的数据卷建立。而重启一遍,是为了刷新刚才的配置

docker ps 
docker restart mysql

4、进入容器查看编码情况

docker run -d -p 3306:3306 --privileged=true -v /dir/mysql/log:/var/log/mysql -v /dir/mysql/data:/var/lib/mysql -v /dir/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7
mysql -uroot -p 
	show variables like '%character%';

5、进入建库建表插数据

mysql -u root -p 
create database test;
use test;
create table t1(id int, name varchar(20));
insert into t1 values(1,'zs');

之后就用数据库链接工具链接即可,或者使用select * from t1查看结果中文能否正常显示。

结论

修改字符集操作+重启mysql容器实例,之后的DB有效,需要新建

docker安装完mysql并run出容器后,建议请先修改完字符集编码后再新建mysql库-表-插数据

6、删除容器实例再启动查看数据还有无

docker rm -f 容器ID
docker run -d -p 3306:3306 --privileged=true -v /dir/mysql/log:/var/log/mysql -v /dir/mysql/data:/var/lib/mysql -v /dir/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7
mysql -uroot -p 
	show databases;
	use test;
	show tables;

所以,就算把容器实例删了,数据依旧存在。

0x03 redis安装

这里因为我不怎么涉及到redis的渗透,暂时可以先放一放。

https://www.bilibili.com/video/BV1gr4y1U7CY?p=39

Docker学习07-常规软件安装

入门命令

dock pull redis:6.0.8
docker run -d -p 6379:6379 redis
docker ps -n2 
docker exec -it 容器ID bash
redis-cli 127.0.0.1:6379

1、在Centos宿主机下新建目录/app/redis

mkdir -p /app/redis

2、将一个redis.conf文件模版拷贝进/app/redis目录下

3、/app/redis目录下修改redis.conf文件

4、使用redis6.0.8镜像创建容器(也叫运行镜像)

0x04 Nginx安装

前面的都会了,Nginx安装就是一个练习。

上一篇:Panadas对缺失值的处理


下一篇:mysqld_multi实现多主一从同步