2022版Docker基础篇 - 8、Docker常规安装简介

连接视频


Docker常规安装简介

总体步骤

  1. 搜索镜像
  2. 拉取镜像
  3. 查看镜像
  4. 启动镜像
    服务端口映射
  5. 停止容器
  6. 移除容器

在这里插入图片描述


安装tomcat

1、docker hub上面查找tomcat镜像

docker search tomcat
在这里插入图片描述

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

docker pull tomcat
在这里插入图片描述

3、docker images查看是否有拉取到该tomcat

docker images tomcat
在这里插入图片描述

4、使用tomcat镜像创建容器实例(也叫运行镜像)

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

在这里插入图片描述

docker run -d -p 8080:8080 --name t1 tomcat
在这里插入图片描述

5、 访问tomcat首页

localhost:8080

遇到的问题:
在这里插入图片描述

可能一:

没有映射端口或者没有关闭防火墙

可能二:

webapps.dist目录换成webapps:先将webapps这个空文件夹删除,再将webapp.dist重命名为webapps

docker exec -it 1fc238d4cf10 /bin/bash【进入tomcat容器中】
在这里插入图片描述
重命名之后,再次访问localhost:8080
在这里插入图片描述

6、免修改版说明

使用tomcat8这个特定版本:

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

在这里插入图片描述
在这里插入图片描述


安装mysql

1、docker hub上面查找mysql镜像

docker search mysql
在这里插入图片描述

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

docker pull mysql:5.7
在这里插入图片描述

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

命令出处:https://hub.docker.com/_/mysql

简单版

使用mysql镜像

第一步:运行mysql:5.7镜像

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
在这里插入图片描述

注意:建议先使用ps -f | grep mysql命令先看一下宿主机是否有正在运行的mysql且端口3306是否被占用,如果占用,需要将映射端口换掉。

ps -f | grep mysql
在这里插入图片描述

第二步:查看正在运行的容器

docker ps
在这里插入图片描述

第三步:进入该mysql容器内

docker exec -it 容器ID /bin/bash
mysql -uroot -p

docker exec -it afd4ff88c01c /bin/bash
在这里插入图片描述

第四步:在该容器内建库建表插入数据

在这里插入图片描述

外部Win10使用小海豚软件连接运行在dokcer上的mysql容器实例服务,如下图所示:
在这里插入图片描述
在这里插入图片描述

客户端软件可以成功连接mysql容器。

问题

问题一:插入中文数据试试

在这里插入图片描述

为什么报错?

因为使用dockermysql容器有中文乱码的问题。

docker里面的mysql容器实例输输入以下命令,内容如下

SHOW VARIABLES LIKE 'character%';
在这里插入图片描述

注意:不要在连接mysql的软件中输入上面的命令,否则显示的还是utf-8编码,但这不是真正的编码方式。

解决:详见下面的实战版。

问题二:删除容器后,里面的mysql数据如何办

容器实例一删除,你还有什么? 删容器到跑路。。。。。?


实战版

1、新建mysql容器实例

docker 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

docker 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
在这里插入图片描述
在这里插入图片描述

注:实战版运行mysql镜像的命令与简单版运行的命令差不多,只是多了三个挂载数据卷的命令。

2、新建my.cnf --> 通过容器卷同步给mysql容器实例 (使用此步骤的目的是解决中文乱码的问题)

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

cd /docker/mysql/conf
在这里插入图片描述
vim my.cnf
在这里插入图片描述
SHOW VARIABLES LIKE 'character%';
在这里插入图片描述

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

docker restart mysql
在这里插入图片描述

再新建库新建表再插入中文测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上成功解决中文乱码的问题。

结论

之前的DB 无效

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

之后的DB 有效,需要新建

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


假如将当前容器实例删除,再重新来一次,之前建的db1实例还有吗?

docker rm -f mysql
在这里插入图片描述
docker 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【再次启动mysql容器】
在这里插入图片描述
在这里插入图片描述

答案是还有,所以日常工作中建议挂载数据容器卷,这样即使删除了容器实例,当重新启动了该容器后,宿主机上对应的容器卷中的数据还会自动传递给该容器,保证了数据的不丢失。


安装redis

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

docker pull redis:6.0.8
在这里插入图片描述

入门命令

docker run -d -p 6379:6379 redis:6.0.8
在这里插入图片描述

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

Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied解决办法:在挂载目录后多加一个--privileged=true参数即可

CentOS宿主机下新建目录 /app/redis

1、建目录

mkdir -p /app/redis
在这里插入图片描述

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

cp /myredis/redis.conf /app/redis/
在这里插入图片描述

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

vim 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

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

docker run  -p 6379:6379 --name myredis --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.conf

docker run -p 6379:6379 --name myredis --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.conf
在这里插入图片描述

测试redis-cli连接上来

docker exec -it 运行着Redis服务的容器ID redis-cli
在这里插入图片描述

请证明docker启动使用了我们自己指定的配置文件

修改前 我们用的配置文件,数据库默认是16个
在这里插入图片描述
在这里插入图片描述

修改后

vim /app/redis/redis.conf
在这里插入图片描述
docker restart myredis
docker exec -it myredis /bin/bash
redis-cli
在这里插入图片描述

宿主机的修改会同步给docker容器里面的配置。 - 记得重启服务


安装Nginx

见高级篇Portainer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值