Docker下常规软件安装

  • 1. Docker 安装tomcat
  • 1.1 docker hub上面查找tomcat镜像
  • 1.2 拉取tomcat
  • 1.3 启动tomcat
  • 1.4 访问tomcat
  • 1.4.1. 查看防火墙状态
  • 1.4.2. 开启防火墙
  • 1.4.3. 查看端口信息
  • 1.4.4. 开启端口和重启防火墙
  • 1.4.5. 重启docker
  • 1.4.6. 重启tomcat
  • 1.4.7. 阿里云服务器需要开放8080端口
  • 1.4.8. 访问成功
  • 2. Docker 安装mysql
  • 2.1 Docker hub上面查找mysql镜像
  • 2.2 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
  • 2.3 使用mysql5.7镜像创建容器(也叫运行镜像)
  • 2.3.1 根据官网命令安装
  • 2.3.2 进入容器
  • 2.3.3 连接mysql
  • 2.3.4 创建数据库
  • 2.3.5 创建数据表
  • 2.3.6 插入数据
  • 2.3.7 查看数据
  • 2.3.8 插入中文,报错
  • 2.3.9 查看字符集
  • 2.3.10 问题思考
  • 3. Docker 安装mysql(实战版)
  • 3.1 新建mysql容器实例
  • 3.2 新建my.cnf
  • 3.3 写入内容
  • 3.4 查看文件
  • 3.5 重新启动mysql容器实例再重新进入并查看字符编码
  • 3.6 结论
  • 4. 安装redis
  • 4.1 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
  • 4.2 入门命令
  • 4.3 在CentOS宿主机下新建目录/software/redis
  • 4.4 将一个redis.conf文件模板拷贝进/software/redis目录下
  • 4.5 开启redis验证 可选
  • 4.6 允许redis外地连接 必须
  • 4.7 开启redis数据持久化
  • 4.8 使用redis6.0.8镜像创建容器(也叫运行镜像)
  • 4.9 测试redis-cli连接上来
  • 5. 安装Ngnix


1. Docker 安装tomcat

1.1 docker hub上面查找tomcat镜像

docker search tomcat

1.2 拉取tomcat

docker pull tomcat:8.0.53

1.3 启动tomcat

docker run -it -p 8080:8080 tomcat:8.0.53
docker run -it -p 8080:8080 --name tomcat-8 tomcat:8.0.53

1.4 访问tomcat

出现了无法访问情况。

1.4.1. 查看防火墙状态

systemctl status firewalld

1.4.2. 开启防火墙

systemctl start firewalld

1.4.3. 查看端口信息

firewall-cmd --list-ports  # 只看端口信息

1.4.4. 开启端口和重启防火墙

开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙:systemctl restart firewalld.service

1.4.5. 重启docker

systemctl restart docker

1.4.6. 重启tomcat

docker restart 73f1990b9b40

1.4.7. 阿里云服务器需要开放8080端口

docker 手动下载image docker 下载软件_容器

1.4.8. 访问成功

docker 手动下载image docker 下载软件_docker 手动下载image_02

2. Docker 安装mysql

2.1 Docker hub上面查找mysql镜像

docker search mysql

2.2 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7

docker pull mysql:5.7

2.3 使用mysql5.7镜像创建容器(也叫运行镜像)

2.3.1 根据官网命令安装

https://hub.docker.com/_/mysql

官网命令:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

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

出现错误

docker: Error response from daemon: driver failed programming external connectivity on endpoint dazzling_goldstine (3c71e2b0978077270348fcaf218f5c6f831316ea04a50046eabce8238e4d723d): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

问题原因,宿主机阿里云服务器上也启动了mysql

docker 手动下载image docker 下载软件_容器_03


所以docker内的mysql换一个端口3336

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

启动成功

2.3.2 进入容器

docker exec -it 55a5e792eeb3 /bin/bash

2.3.3 连接mysql

mysql -uroot -p

2.3.4 创建数据库

create database db01;

2.3.5 创建数据表

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

2.3.6 插入数据

insert into t1 values(1, 'chent');

2.3.7 查看数据

select * from t1;

docker 手动下载image docker 下载软件_docker_04

2.3.8 插入中文,报错

docker 手动下载image docker 下载软件_redis_05

2.3.9 查看字符集

SHOW VARIABLES LIKE 'character%'

2.3.10 问题思考

  1. 删除容器后,里面的mysql数据如何办?
  2. 容器实例一删除,你还有什么? 删容器到跑路。。。。。?

3. Docker 安装mysql(实战版)

3.1 新建mysql容器实例

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

3.2 新建my.cnf

vim my.cnf

3.3 写入内容

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

3.4 查看文件

cat my.cnf

docker 手动下载image docker 下载软件_redis_06

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

docker 手动下载image docker 下载软件_面试_07


字符集已经修改

3.6 结论

之前的DB 无效

修改字符集操作+重启mysql容器实例

之后的DB 有效,需要新建

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

4. 安装redis

4.1 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8

docker pull redis:6.0.8

4.2 入门命令

docker run -d -p 6379:6379 --name redis6 redis:6.0.8

命令提醒:容器卷记得加入–privileged=true

4.3 在CentOS宿主机下新建目录/software/redis

[root@iZbp10sz66ubwpbh2bw9jbZ ~]# cd /software
[root@iZbp10sz66ubwpbh2bw9jbZ software]# mkdir redis
[root@iZbp10sz66ubwpbh2bw9jbZ software]# ls
mysql  redis
[root@iZbp10sz66ubwpbh2bw9jbZ software]# cd redis
[root@iZbp10sz66ubwpbh2bw9jbZ redis]#

4.4 将一个redis.conf文件模板拷贝进/software/redis目录下

docker 手动下载image docker 下载软件_容器_08

/software/redis目录下修改redis.conf文件

4.5 开启redis验证 可选

requirepass 123

4.6 允许redis外地连接 必须

注释掉 # bind 127.0.0.1

docker 手动下载image docker 下载软件_docker 手动下载image_09

daemonize no

将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败

docker 手动下载image docker 下载软件_redis_10

4.7 开启redis数据持久化

appendonly yes  可选

docker 手动下载image docker 下载软件_docker_11

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

docker run  -p 6379:6379 --name myredis6 --privileged=true -v /software/redis/redis.conf:/etc/redis/redis.conf -v /software/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf

很遗憾,没起来

docker 手动下载image docker 下载软件_redis_12


用docker logs 查看日志

docker 手动下载image docker 下载软件_docker 手动下载image_13


意思是配置文件,第七行,有个空格

docker 手动下载image docker 下载软件_redis_14


删除空格,重新启动

docker 手动下载image docker 下载软件_redis_15

4.9 测试redis-cli连接上来

docker exec -it myredis6 redis-cli

docker 手动下载image docker 下载软件_docker_16

5. 安装Ngnix

太简单了,略~~~