docker学习笔记06

第八章、Docker常规安装简介

总体步骤

搜索镜像

拉取镜像

查看镜像

启动镜像 (服务端口映射)

停止容器

移除容器

安装tomcat

docker hub上面查找tomcat镜像

docker search tomcat

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

docker pull tomcat

docker images查看是否有拉取到tomcat

docker images tomcat

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

docker run -it -p 8080:8080 tomcat

-p小写,主机端口:docker容器端口

-p大写,随机分配端口7

-i:交互

t:终端

d:后台

访问猫首页

问题:

在火狐浏览器上localhost:8080

最后访问报404的情况:

HTTP状态404-未找到

类型 状态报告 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

Apache Tomcat/9.0.35

解决:

可能没有映射端口或者没有关闭防火墙(不是问题关键所在)

把webapps.dist目录换成webapps(解决方法)

先成功启动tomcat:

docker run -d -p 8888:8080 tomcat

docker exec -it 1dbbc5360a5f /bin/bash

查看webapps文件夹查看为空:

ls -l

rm -r webapps

mv webapps.dist webapps

免修改版说明

docker pull billygoo/tomcat8-jdk8

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

安装mysql

docker hub上面查找mysql镜像

docker search mysql

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

docker pull mysql:5.7

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

简单版

使用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

建库建表插入数据

外部Win10也来连接运行在dokcer上的mysql容器实例服务

问题:

插入中文数据试试为什么报错?

docker上默认字符集编码隐患

docker里面的mysql容器实例查看,内容如下:SHOW VARIABLES LIKE 'character%'

删除容器后,里面的mysql数据怎么办

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

实战版

新建mysql容器实例:

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

新建my.cnf:

通过容器卷同步给mysq容器实例

[root@zzyy ~]# cd /zzyyuse/mysql/conf/

[root@zzyy conf]# ls

[root@zzyy conf]# vim my.cnf

[client]

default_character_set=utf8

[mysqld]

collation_server = utf8_general_ci

character_set_server = utf8

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

docker restart mysql

docker exec -it mysql /bin/bash

mysql -uroot -p

SHOW VARIABLES LIKE 'character%';(这是一个 MySQL 查询,它用于显示与字符集(character set)相关的数据库变量。)

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

结论:

之前的DB无效 ("DB" 通常指的是 "数据库"(Database)的缩写。) 修改字符集操作+ 重启mysql容器实例 之后的DB有效需要新建。

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

mysql> create database db02; ( 这个命令用于创建一个名为 "db02" 的新数据库。)

QueryOK,1 row affected (0.00 sec)

mysql> use db02; ( 这个命令将当前数据库更改为 "db02",意味着所有后续操作将在这个数据库上执行。)

Database changed

mysql> create table t1(id int , name varchar(20)); ( 这个命令创建了一个名为 "t1" 的新表,它有两列,分别是 "id"(整数类型)和 "name"(最大长度为 20 的字符串类型)。)

mysql> insert into t1 values(1,'z3'); (这个命令向 "t1" 表中插入了一行数据,具体是插入了 (1, 'z3') 这一行。)

Query OK, 1 row affected (0.02 sec)

mysql> select * from t1; (最后这个命令执行了一个简单的查询,从 "t1" 表中选择所有行,并将结果返回。)

+------+------+

| id | name |

+------+------+

| 1 | z3 |

+------+------+

1 row in set (0.00 secedo.01 sec)

安装redis

Redis(Remote Dictionary Server)是一个开源的高性能键值存储系统,它广泛用于构建缓存、消息队列、实时分析、计数器和其他数据处理任务。Redis 是一个多才多艺的数据存储系统,可以应用于各种不同的用途,从缓存到实时分析,从消息队列到计数器。其速度和多功能性使得它成为许多应用程序的核心组件。

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

docker pull redis:6.0.8

入门命令

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

docker exec -it f216c38ea035 /bin/bash

redis -cli (这是 Redis 的命令行客户端工具,用于与 Redis 服务器进行交互。在终端中运行 

redis-cli命令时,它会启动 Redis 客户端,允许用户执行 Redis 命令。)

set k1 v1 (这是 Redis 的 SET 命令,用于设置键值对。在这里,它将键名 "k1" 的值设置为 "v1"。这表示在 Redis 中创建一个名为 "k1" 的键,并将其值设置为 "v1"。)

get k1(这是 Redis 的 GET 命令,用于获取指定键的值。在这里,它会返回键名 "k1" 对应的值,即 "V1"。)

ping (这是 Redis 的 PING 命令,用于检查与 Redis 服务器的连接是否正常。如果服务器正常运行,它将返回一个 "PONG" 响应,表示一切正常。)

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

Docker挂载主机目录Docker访问出现cannot open directory.:Permission denied

解决办法:在挂载目录后多加一个--privileged=true参数即可

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

mkdir -p /app/redis

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

cp /myredis/redis.conf /app/redis/

cd /app/redis/ (拷贝配置文件,将准备好的redis.conf文件放进/app/redis目录下)

ls -l

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

默认出厂的原始redis.conf

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

1.开启redis验证 可选

requirepass 000000

2.允许redis外地连接 必须

注释掉#bind 127.0.0.1

#IF YOU ARE SURE YOU WANT YOUR INSTANCETOLISTEN TO ALL THE INTERFACES

# JUST COMMENT THE FOLLOWING LINE.

#bind 127.0.0.1 允许redis外地连接

3.daemonize no

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

#By default Redis does not run as a daemon.Use 'yes' if you need it.

#Note that Redis will write a pidfile in /var/run/redis.pid when daemonized.

daemonize no

4.开启redis数据持久化

appendonly yes 可选

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

docker 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.conf

docker run -p 6379:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -v /app/redis/logs:/var/log/redis -d redis:6.0.8 redis-server /etc/redis/redis.conf

测试redis-cli连接上来

docker exec -it myr3 /bin/bash

set k1 v1

get k1

ping

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

修改前:

127.0.0.1:6379>select 15 (在 Redis 中选择一个不同的数据库。Redis 支持多个数据库,编号从 0 到 15,默认情况下,客户端连接到数据库0。通过执行 select 命令,用户可以切换到不同的数据库,以便在不同的数据库中存储和检索数据。我们用的配置文件,数据库默认是16个)

OK

修改后 (记得重启服务):

vim redis.conf

databases 10

宿主机的修改会同步给docker容器里面的配置。

docker restart myrs

测试redis-cli连接上来2

docker exec -it myr3 /bin/bash

redis -cli

127.0.0.1:6379> select 11

error) ERR DB index is out of range

127.0.0.1:6379> select 9

OK

127.0.0.1:6379[ 9]> select 15

(error)ERR DB index is out of range

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值