目录
1.从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
5.使用redis6.0.8镜像创建容器(也叫运行镜像)
一、总体步骤
- 搜索镜像
- 拉取镜像
- 查看镜像
- 启动镜像(服务端口映射)
- 停止容器
- 移除容器
二、安装tomcat
1.docker hub上面查找tomcat镜像
- docker search tomcat
2.从docker hub上拉取tomcat镜像到本地
- docker pull tomcat
3.查看是否有拉取到的 tomcat
- docker images tomcat
4.使用tomcat镜像创建容器实例(也叫运行镜像)
- docker run -d -p 8080:8080 –name t1 tomcat
5.访问 Tomcat 首页
解决办法:
- 可能没有映射端口或者没有关闭防火墙
- 把webapps.dist目录换成webapps
(1)重新进入 Tomcat
发现 webapps 目录为空:
(2)删除原本的 webapps ,并把 webapps.dist 重命名为 webapps:
(3)重新访问即可成功:
6.免修改版 tomcat
- docker pull billygoo/tomcat8-jdk8
- docker run -d -p 8080:8080 –name t2 billygoo/tomcat8-jdk8
(1)先删除原来的进程:
(2) 拉取并运行
(3)访问首页
不用在Tomcat修改文件,直接访问成功,8版本:
三、安装 mysql
同Tomcat镜像一样的步骤
1.拉取mysql镜像,这次拉取 mysql 5.7 版本
2.使用mysql5.7镜像创建容器(也叫运行镜像)
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# 增加utf8编码
命令出处:Docker Hub
(1)启动容器实例,添加端口3306映射,并设置密码:
(2)进入mysql容器,并连接数据库
(3)使用基本的sql语句:
(3)在外部 PC端 连接运行在dokcer上的mysql容器实例服务
我这里使用 Navicat 连接成功:
可以看到在 docker 创建的数据库和数据:
(4)试着插入一条中文数据:
为什么会报错?因为docker上默认字符集编码没有utf8:
SHOW VARIABLES LIKE ‘character%’;
解决办法:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
删除容器后,里面的mysql数据如何办?容器实例一删除,你还有什么?
3.实战篇
(1)新建mysql容器实例
把前面创建的容器删掉,再新建:
docker run -d -p 3306:3306 --privileged=true -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=qwe123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# 挂载三个容器卷
(2)新建my.cnf,通过容器卷同步给mysql容器实例
在宿主机执行,添加 utf8 编码:
[root@docker01 ~]# cd /home/mysql/conf/
[root@docker01 conf]# vim my.cnf
# 输入下面信息:
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
(3)重新启动mysql容器实例再重新进入并查看字符编码
(4)重新插入中文数据:
mysql> create database db01;
Query OK, 1 row affected (0.00 sec)
mysql> use db01;
Database changed
mysql> create table t1(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t1 values(1, 'lisi');
Query OK, 1 row affected (0.01 sec)
(4)假如将当前容器实例删除,再重新来一次,之前建的db01实例还有吗?
数据恢复:
四、安装 Redis
1.从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
2.Redis 入门命令
3.在宿主机创建 redis.conf 文件
#1. 删除前面创建的容器实例
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a59b8b2ecdfc redis:6.0.8 "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp pedantic_faraday
[root@docker01 ~]# docker rm -f a59b8b2ecdfc
a59b8b2ecdfc
#2. 在宿主机创建目录
[root@docker01 ~]# mkdir -p /usr/local/redis
[root@docker01 ~]# cd /usr/local/redis/
#3. 创建redis.conf,并写入官方默认配置文件内容(下面会发内容连接)
[root@docker01 redis]# vim redis.conf
redis.conf 官方地址:Redis configuration | Redis
也可以看我的这篇Redis文章:Redis 配置文件详解
4.修改 redis.conf 配置内容
(1)允许外部访问redis,注释掉 # bind 127.0.0.1
(2)将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
(3)开启redis数据持久化 appendonly yes(这步可以省略)
(4)设置 redis 密码 去掉注释,requirepass qwe123456
5.使用redis6.0.8镜像创建容器(也叫运行镜像)
docker run -p 6379:6379 --name redis01 --privileged=true -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
6.测试连接 redis
redis 容器实例默认是没有设置密码的,我们在宿主机设置了密码,所以连接的时候要加入密码才可以进行操作。这也证明我们redis实例启动的是宿主机的redis.conf 文件。如果需要修改 外部的redis.conf 后,需要重启实例:docker restart redis01
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74603.html