Docker常规安装简介-tomcat,mysql,redis
总体步骤
搜索镜像
拉取镜像
查看镜像
启动镜像
服务端口映射
停止容器
移除容器
安装tomcat
docker hub上面查找tomcat镜像
1
docker search tomcat
从docker hub上拉取tomcat镜像到本地
1
docker pull tomcat
docker images查看是否有拉取到该tomcat
1
docker images
使用tomcat镜像创建容器实例(也叫运行镜像)
1
docker run -it -p 8080:8080 tomcat
-p 小写,主机端口:docker容器端口
-P 大写,随机分配端口
i:交互
t:终端
d:后台
- 访问tomcat首页
localhost:8080
遇到的问题:无法访问404
可能一:
没有映射端口或者没有关闭防火墙
可能二:
把webapps.dist目录换成webapps:先将webapps这个空文件夹删除,再将webapp.dist重命名为webapps
重命名之后,再次访问localhost:8080
- 免修改版说明
使用tomcat8这个特定版本:
1 | docker pull billygoo/tomcat8-jdk8 |
安装mysql
docker hub上面查找mysql镜像
1 | docker search mysql |
- 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
1
docker pull mysql:5.7
- 使用mysql5.7镜像创建容器(也叫运行镜像)
简单版
使用mysql镜像
第一步:运行mysql:5.7镜像
1 | docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 |
注意:建议先使用ps -f | grep mysql命令先看一下宿主机是否有正在运行的mysql且端口3306是否被占用,如果占用,需要将映射端口换掉。
第二步:查看正在运行的容器
1 | dockers ps |
第三步:进入该mysql容器内
1 | docker exec -it 容器ID /bin/bash |
1 | mysql -uroot -p |
第四步:在该容器内建库建表插入数据
问题
问题一:插入中文数据试试
为什么报错?
因为使用docker的mysql容器有中文乱码的问题。
在docker里面的mysql容器实例输输入以下命令,内容如下:
SHOW VARIABLES LIKE ‘character%’
注意:不要在连接mysql的软件中输入上面的命令,否则显示的还是utf-8编码,但这不是真正的编码方式。
解决:详见下面的实战版。
问题二:删除容器后,里面的mysql数据如何办
容器实例一删除,你还有什么? 删容器到跑路。。。。。?
实战版
- 新建mysql容器实例注:实战版运行mysql镜像的命令与简单版运行的命令差不多,只是多了三个挂载数据卷的命令。
1
2
3
4
5
6
7docker run -d -p 3306:3306 --privileged=true \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
mysql:5.7
- 新建my.cnf –> 通过容器卷同步给mysql容器实例 (使用此步骤的目的是解决中文乱码的问题)
1
2
3
4
5[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8 - 重新启动mysql容器实例再重新进入并查看字符编码
再新建库新建表再插入中文测试
安装redis
- 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8入门命令
1
docker pull redis:6.0.8
命令提醒:容器卷记得加入–privileged=true1
docker run -d -p 6379:6379 redis:6.0.8
Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied解决办法:在挂载目录后多加一个–privileged=true参数即可
在CentOS宿主机下新建目录/app/redis
mkdir -p /app/redis
将一个redis.conf文件模板拷贝进/app/redis目录下
/app/redis目录下修改redis.conf文件
3.1 开启redis验证 可选 requirepass 123
3.2 允许redis外地连接 必须 注释掉 # bind 127.0.0.1
3.3 daemonize no
将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
3.4 开启redis数据持久化 appendonly yes 可选 - 默认出厂的原始redis.conf
- 使用redis6.0.8镜像创建容器(也叫运行镜像)测试redis-cli连接上来
1
2
3
4docker run -p 6379:6379 --name myr3 --privileged=true \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
-d redis:6.0.8 redis-server /etc/redis/redis.conf1
docker exec -it 运行着Redis服务的容器ID redis-cli
请证明docker启动使用了我们自己指定的配置文件
宿主机的修改会同步给docker容器里面的配置。 - 记得重启服务