Spring Boot入门+深入(六)-Docker

目录

一、Docker概述

1、简介

2、核心概念

3、安装Docker

1、安装linux虚拟机

2、在linux虚拟机上安装docker

4、Docker常用命令&操作

1.镜像操作

2.容器操作

安装tomcat

访问tomcat报404-未找到错误

docker容器内修改文件

挂载宿主目录到容器--为了方便拷贝文件传输

5、Docker启动和关闭所有容器命令

二、Docker中软件安装

1、安装MySQL示例

2、安装RabbitMQ示例

3、安装ElasticSearch示例

失败经验:

4、安装Zookeeper示例

4.1docker中查看注册进zookeeper中服务方式

5、安装mongdb示例

6、安装MinIO示例

7、redis安装


一、Docker概述

1、简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker支持将软件编译成一个镜像;然后 在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。 运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操作系统,安装好后什么都有了;

2、核心概念

docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);

docker客户端(Client):连接docker主机进行操作;

docker仓库(Registry):用来保存各种打包好的软件镜像;

docker镜像(Images):软件打包好的镜像;放在docker仓库中;

docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

使用Docker的步骤:

1.安装Docker

2.去Docker仓库找到这个软件对应的镜像;

3.使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;

4.对容器的启动停止就是对软件的启动停止;

3、安装Docker

1、安装linux虚拟机

①VMWare、VirtualBox(安装)

②导入相关虚拟机镜像等

③双击启动linux虚拟机

④使用客户端连接linux服务器进行命令操作

⑤设置虚拟机网络

⑥设置好网络以后使用命令重启虚拟机的网络(不同机器可能命令不一样)

service network restart

⑦查看linux的ip地址

ip addr

⑧使用客户端连接linux

2、在linux虚拟机上安装docker

步骤:

1、检查内核版本,必须是3.10及以上
uname ‐r
2、安装docker
yum install docker
3、输入y确认安装
4、启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker ‐v
Docker version 1.13.1, build 7d71120/1.13.1
5、开机启动docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi‐user.target.wants/docker.service to
/usr/lib/systemd/system/docker.service.
6、停止docker
systemctl stop docker

CentOS 7 安装报错:Cannot find a valid baseurl for repo: base/7/x86_6

可能是连不上网:ping 114.114.114.114   检查网络是否连通。

Docker启动报错:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
解决方式,卸载Docker,再安装。

1.查询安装过的包
yum list installed | grep docker
    本机安装过旧版本
       docker.x86_64,docker-client.x86_64,docker-common.x86_64
2.删除安装的软件包
yum -y remove docker.x86_64                        
yum -y remove docker-client.x86_64                  
yum -y remove docker-common.x86_64

卸载不行,把yum包更新到最新

yum update

重启虚拟机再重新安装docker

使用docker pull ..发现

报:Get https://registry-1.docker.io/v2/

说明网络断开

可能是连不上网:ping 114.114.114.114   检查网络是否连通。 ping www.baidu.com

4、Docker常用命令&操作

#可查看docker 信息,保存路径等
docker info    

1.镜像操作

操 作 命令 说明
检 索

docker search 关键字

例如:docker search redis

我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。

Docker Hub

拉 取 docker pull 镜像名:tag :tag是可选的,tag表示标签,多为软件的版本,默认是latest
列 表 docker images 查看所有本地镜像
删 除 docker rmi 镜像id 删除指定的本地镜像

2.容器操作

软件镜像---->运行镜像---->产生一个容器(正在运行的软件);

操作 命令 说明
运行 docker run --name container-name -d image-name eg:docker run –name myredis –d redis

--name:自定义容器名

-d:后台运行

image-name:指定镜像模板

列表 docker ps(查看运行中的容器); 加上-a;可以查看所有容器
停止 docker stop container-name/container-id 停止当前你运行的容器
启动 docker start container-name/container-id 启动容器
删除 docker rm container-id 删除指定容器
端口映射

-p 6379:6379

例:docker run -d -p 6379:6379 --name myredis docker.io/redis

-p: 主机端口(映射到)容器内部的端口
容器日志 docker logs container-name/container-id 查看镜像启动日志
更多命令 docker | Docker Documentation                                                  也可以参考每一个镜像的文档

步骤:

安装tomcat

1、搜索镜像
[root@localhost ~]# docker search tomcat
2、拉取镜像
[root@localhost ~]# docker pull tomcat
3、根据镜像启动容器
docker run ‐‐name mytomcat ‐d tomcat:latest
4、查看运行中的容器
docker ps
5、 停止运行中的容器
docker stop 容器的id
6、查看所有的容器
docker ps ‐a
7、启动容器
docker start 容器id
8、删除一个容器
docker rm 容器id
9、启动一个做了端口映射的tomcat(在本地访问linuxIP地址:8888)
[root@localhost ~]# docker run ‐d ‐p 8888:8080 tomcat
‐d:后台运行
‐p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
10、关闭了linux的防火墙,才能在外面访问到对应的服务
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
11、查看容器的日志
docker logs container‐name/container‐id
12、查看docker中启动的镜像占用的内存
docker stats

访问tomcat报404-未找到错误

Spring Boot入门+深入(六)-Docker_第1张图片

原因:tomcat下webapps文件夹下使用ls发现没有任何文件

解决方式:

1、查看运行容器docker ps
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
74d6522815b8        tomcat              "catalina.sh run"        16 minutes ago      Up 16 minutes       0.0.0.0:8081->8080/tcp                                 tomcat1
[root@localhost ~]#
2、docker exec -it 74d6522815b8 /bin/bash
[root@localhost ~]# docker exec -it 74d6522815b8 /bin/bash
3、查看tomcat下目录结构,webapps文件夹下是空白
root@74d6522815b8:/usr/local/tomcat# ls
BUILDING.txt     LICENSE  README.md      RUNNING.txt  conf  logs            temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin          lib   native-jni-lib  webapps  work
root@74d6522815b8:/usr/local/tomcat# cd webapps
root@74d6522815b8:/usr/local/tomcat/webapps# ls
root@74d6522815b8:/usr/local/tomcat/webapps#
4、解决方式一:把webapps.dist下的文件复制到webapps下面
root@74d6522815b8:/usr/local/tomcat/webapps# cd ..
root@74d6522815b8:/usr/local/tomcat# mv webapps.dist/* webapps
....

...
此时再查看webapps文件夹,有文件
root@74d6522815b8:/usr/local/tomcat# cd webapps
root@74d6522815b8:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
5、解决方式二:把webapps文件夹删除,把webapps.dist改为webapps

root@74d6522815b8:/usr/local/tomcat/webapps# cd ..
root@74d6522815b8:/usr/local/tomcat# rm -rf webapps
root@74d6522815b8:/usr/local/tomcat# mv webapps.dist webapps
.........

此时再查看webapps文件夹,有文件
root@74d6522815b8:/usr/local/tomcat# cd webapps
root@74d6522815b8:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
再访问浏览器成功

访问浏览器:

Spring Boot入门+深入(六)-Docker_第2张图片

==============

docker容器内修改文件

1.进入容器

执行命令:docker exec -it 镜像id /bin/bash

2.Docker容器中创建文件并进行修改需要安装vim

这里要下载vim,不然无法对文件进行修改 具体执行如下两个命令:apt-get update、apt-get install vim

挂载宿主目录到容器--为了方便拷贝文件传输

1.tomcat 容器 webapps 路径:/usr/local/tomcat/webapps

2.在宿主目录下新建目录 /home/tomcat1/webapps和/home/tomcat2/webapps

3.停止 tomcat 容器并删除该容器

1、查看容器id
docker ps -a 
2、停止容器
docker stop 容器id
3、删除容器
docker rm 容器id
--------------------
4、对于开启自启动的镜像进行取消自启动
docker update --restart=no 
5、开启自启动
docker update –restart=always 
6、取消所有自启动
docker update --restart=no $(docker ps -q)

4.重新跑一个 tomcat 容器并挂载宿主目录

1、运行容器tomcat1
docker run --name tomcat1 -d -p 8080:8080 -v /home/tomcat1/webapps:/usr/local/tomcat/webapps --privileged=true tomcat
2、运行容器tomcat2
docker run --name tomcat2 -d -p 8081:8080 -v /home/tomcat2/webapps:/usr/local/tomcat/webapps --privileged=true tomcat 

--privileged=true命令:从容器中拷贝文件到宿主机发现没有权限,添加--privileged=true命令,有拷贝文件等权限。

5、Docker启动和关闭所有容器命令

1、docker中 启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
2、docker中 关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

3、docker中 删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
4、docker中 删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)

二、Docker中软件安装

1、安装MySQL示例

docker pull mysql

错误的启动

[root@localhost ~]# docker run ‐‐name mysql01 ‐d mysql
42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
mysql退出了
[root@localhost ~]# docker ps ‐a
CONTAINER ID     IMAGE     COMMAND     CREATED         STATUS         PORTS       NAMES
42f09819908b mysql "docker‐entrypoint.sh" 34 seconds ago Exited(1) 33 seconds ago mysql01

//错误日志
[root@localhost ~]# docker logs 42f09819908b
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and
MYSQL_RANDOM_ROOT_PASSWORD;//这个三个参数必须指定一个

正确的启动

[root@localhost ~]# docker run ‐‐name mysql01 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
CONTAINER ID  IMAGE  COMMAND            CREATED           STATUS     PORTS    NAMES
b874c56bec49 mysql "docker‐entrypoint.sh" 4 seconds ago Up 3 seconds 3306/tcp mysql01

做端口映射

[root@localhost ~]# docker run ‐p 3306:3306 ‐‐name mysql02 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# docker ps
CONTAINER ID IMAGE        COMMAND          CREATED         STATUS        PORTS          NAMES
ad10e4bc5c6a mysql "docker‐entrypoint.sh" 4 seconds ago Up 2 seconds 0.0.0.0:3306‐>3306/tcp mysql02

几个其他的高级操作

docker run ‐‐name mysql03 ‐v /conf/mysql:/etc/mysql/conf.d ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw
‐d mysql:tag
把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)
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的一些配置参数

2、安装RabbitMQ示例

docker pull rabbitmq:3-management

3-management版本因为带后台管理系统。

docker images  //查看镜像
//启动RabbitMQ镜像
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 镜像ID

镜像启动运行后,访问http://IP:15672/

Spring Boot入门+深入(六)-Docker_第3张图片

 用户名密码:guest/guest

Spring Boot入门+深入(六)-Docker_第4张图片

3、安装ElasticSearch示例

从docker github搜索elasticsearch查看版本7.9.2

docker pull elasticsearch:7.9.2

通过镜像,启动一个容器,并将9200和9300端口映射到本机(ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口)

ElasticSearch JAVA编写的,运行消耗内存2G多,启动时需要限制内存-e ES_JAVA_OPTS="-Xms256m -Xmx256m",

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --name ES01 镜像ID

运行完,查看是否启动ElasticSearch

#查看运行的容器
docker ps 

成功运行会显示9200等端口容器信息。

验证ElasticSearch是否安装成功:

#linux docker环境端验证,出现json数据代表成功
curl 'http://localhost:9200'

浏览器端验证:http://IP地址:9200   

结果如下代表成功:

{
  "name" : "23da5ddf57e3",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "kidKPuQZRLKe2QlYuuOLoQ",
  "version" : {
    "number" : "7.9.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "d34da0ea4a966c4e49417f2da2f244e3e97b4e6e",
    "build_date" : "2020-09-23T00:45:33.626720Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

失败经验:

我第一次安装失败,比较坎坷,当时pull拉取镜像网速比较慢。

拉取多次才弄完。最后安装一直有报错。  怀疑是拉取的镜像有问题。

#查看日志
docker logs 镜像ID

报错信息如下:

error:
Invalid -Xlog option '-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m', see error log for details.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
        at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:126)
        at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
        at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:137)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)

网上说:ElasticSearch不能root权限安装,需要jdk环境,等等。试完都不成功。

没有好的解决方式。

最后访问浏览器老是访问拒绝。

最后重新整一个新的虚拟机环境,重新拉取ElasticSearch,重新安装,验证成功。

4、安装Zookeeper示例

#拉取zookeeper
docker pull zookeeper
#查看镜像
docker images
#运行zookeeper
docker run --name zk01 -p 2181:2181 --restart always -d 镜像ID
#查看是否运行成功
docker ps

4.1docker中查看注册进zookeeper中服务方式

1、docker ps  查看容器id
[root@localhost ~]# docker ps
CONTAINER ID    IMAGE    COMMAND    CREATED   STATUS   PORTS     NAMES  
70baef548c15     763543bbcf0a    "/docker-entrypoin..."   6 weeks ago    Up 14 minutes       2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zk01
2、docker exec -it 容器id /bin/bash
[root@localhost ~]# docker exec -it 70baef548c15 /bin/bash
root@70baef548c15:/apache-zookeeper-3.7.0-bin#
3、zkCli.sh 进入zookeeper的客户端
root@70baef548c15:/apache-zookeeper-3.7.0-bin#zkCli.sh
...
[zk: localhost:2181(CONNECTED) 0]
4、ls /    查看根节点
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1]

5、安装mongdb示例

1、拉取镜像
docker pull mongo:latest
2、创建目录
mkdir -p /mongodb/datadb
3、修改目录权限
chmod 777 /mongodb/datadb
4、运行镜像
docker run -d --name mongodb -v /mongodb/datadb:/data/db -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin --privileged=true mongo
注:
-d 后台运行容器
--name mongodb 运行容器名
-v /mongodb/datadb:/data/db 挂载目录
-p 27017:27017:将27017映射到外部端口27017 将容器的27017端口映射到主机的27017端口,27017是和宿主机的通信接口,所有docker内部容器的连接使用27017接口,集群配置需连接容器内部27017端口,故最好保持前后端口一致
-e MONGO_INITDB_ROOT_USERNAME=admin 指定用户名
-e MONGO_INITDB_ROOT_PASSWORD=admin 指定密码
--privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限
5、查看mongodb日志
docker logs mongodb

6、安装MinIO示例

1、搜索镜像
[root@localhost ~]# docker search minio
INDEX       NAME                                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/minio/minio                    Multi-Cloud Object Storage                      646                  [OK]
docker.io   docker.io/bitnami/minio                  Bitnami MinIO Docker Image                      60
docker.io   docker.io/minio/mc                       Minio Client (mc) provides a modern altern...   37                   [OK]
.....
2、拉取镜像
docker pull minio/minio
3、查看镜像
[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/minio/minio   latest              f0e517148bc5        17 hours ago        303 MB
docker.io/mongo         latest              1cca5cf68239        8 weeks ago         695 MB
docker.io/mongo         3.2                 fb885d89ea5c        4 years ago         300 MB
[root@localhost ~]#
4、创建目录
mkdir -p /minio/data
mkdir -p /minio/config
5、修改目录权限
chmod 777 /minio/data
chmod 777 /minio/config
6、运行镜像
docker run -d -p 9000:9000 -p 9001:9001 --name=minio --restart=always --privileged=true -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=12345678" -v /minio/data:/data -v /minio/config:/root/.minio  minio/minio server /data --console-address ":9001" --address ":9000"
------------------------------------------------------------
这里的 \ 指的是命令还没有输入完,还需要继续输入命令,先不要执行的意思。
这里的9001端口指的是minio的客户端端口。虽然设置9001,但是我们在访问9000的时候,他也会自动跳到9001。
9000端口是minio的服务端端口,我们程序在连接minio的时候,就是通过这个端口来连接的。
-v就是docker run当中的挂载,这里的/minio/data:/data意思就是将容器的/data目录和宿主机的/minio/data目录做映射,这样我们想要查看容器的文件的时候,就不需要看容器当中的文件了。
注意在执行命令的时候,他是会自动在宿主机当中创建目录的。我们不需要手动创建。
minio所上传的文件默认都是存储在容器的data目录下的!
假如删除容器了宿主机当中挂载的目录是不会删除的。假如没有使用-v挂载目录,那他在宿主机的存储位置的文件会直接删除的。
宿主机的挂载目录一定是根目录,如果是相对路径会有问题。还有容器当中的目录也是必须是绝对路径(根路径就是带/的)。
所谓的挂载其实就是将容器目录和宿主机目录进行绑定了,操作宿主机目录,容器目录也会变化,操作容器目录,宿主机目录也会变化。这样做的目的 可以间接理解为就是数据持久化,防止容器误删,导致数据丢失的情况。
MINIO_ROOT_USER:账号 MINIO_ROOT_PASSWORD:密码 (正常账号应该不低于3位,密码不低于8位,不然容器会启动不成功)
--console-address 指定客户端端口
-d --restart=always 代表重启linux的时候容器自动启动
--name minio 容器名称
7、查看运行中的容器
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
46805bc81940        minio/minio         "/usr/bin/docker-e..."   4 seconds ago       Up 3 seconds        0.0.0.0:9000-9001->9000-9001/tcp   minio
8、查看log
[root@localhost ~]# docker logs 46805bc81940
WARNING: Detected Linux kernel version older than 4.0.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x.x linux kernel version for best performance
Formatting 1st pool, 1 set(s), 1 drives per set.
WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
Warning: Default parity set to 0. This can lead to data loss.
MinIO Object Storage Server
Copyright: 2015-2022 MinIO, Inc.
License: GNU AGPLv3 
Version: RELEASE.2022-12-02T19-19-22Z (go1.19.3 linux/amd64)
Status:         1 Online, 0 Offline.
API: http://172.17.0.2:9000  http://127.0.0.1:9000
Console: http://172.17.0.2:9001 http://127.0.0.1:9001
Documentation: https://min.io/docs/minio/linux/index.html
[root@localhost ~]#
9、出现如下log代表成功启动
...
API: http://172.17.0.2:9000  http://127.0.0.1:9000
Console: http://172.17.0.2:9001 http://127.0.0.1:9001
Documentation: https://min.io/docs/minio/linux/index.html
...

浏览器端验证:http://IP地址:9001

Spring Boot入门+深入(六)-Docker_第5张图片

7、redis安装

1、由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装
yum install -y gcc
2、拉取镜像
docker pull redis
3、启动redis
docker run -d --name "redis"  -p 6379:6379 redis --requirepass "123456" 

参数说明:
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
--requirepass:密码
我这里没有做持久化的配置
4、查看启动的容器
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
16d9d3a548a1        redis               "docker-entrypoint..."   5 seconds ago       Up 4 seconds        0.0.0.0:6379->6379/tcp             redis
[root@localhost ~]#
5、启动成功后,我们进入 redis 客户端
docker exec -it 16d9d3a548a1 redis-cli 
#16d9d3a548a1  是你的容器ID
[root@localhost ~]# docker exec -it 16d9d3a548a1 redis-cli
127.0.0.1:6379>
6、输入登录密码
[root@localhost ~]# docker exec -it 16d9d3a548a1 redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379>
7、查看帮助 redis-cli -h
[root@localhost ~]# docker exec -it 16d9d3a548a1 redis-cli -h
redis-cli 7.0.11

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h       Server hostname (default: 127.0.0.1).
  -p           Server port (default: 6379).
  -s         Server socket (overrides hostname and port).
  -a       Password to use when connecting to the server.
                     You can also use the REDISCLI_AUTH environment
                     variable to pass this password more safely
                     (if both are used, this argument takes precedence).
  --user   Used to send ACL style 'AUTH username pass'. Needs -a.
  --pass   Alias of -a for consistency with the new --user option.
  --askpass          Force user to input password with mask from STDIN.
                     If this argument is used, '-a' and REDISCLI_AUTH
                     environment variable will be ignored.
  -u            Server URI.
  -r         Execute specified command N times.
  -i       When -r is used, waits  seconds per command.
                     It is possible to specify sub-second times like -i 0.1.
                     This interval is also used in --scan and --stat per cycle.
                     and in --bigkeys, --memkeys, and --hotkeys per 100 cycles.
  -n             Database number.
  -2                 Start session in RESP2 protocol mode.
  -3                 Start session in RESP3 protocol mode.
  -x                 Read last argument from STDIN (see example below).
  -X                 Read  argument from STDIN (see example below).
  -d      Delimiter between response bulks for raw formatting (default: \n).
  -D      Delimiter between responses for raw formatting (default: \n).
  -c                 Enable cluster mode (follow -ASK and -MOVED redirections).
  -e                 Return exit error code when command execution fails.
  --tls              Establish a secure TLS connection.
  --sni        Server name indication for TLS.
  --cacert     CA Certificate file to verify with.
  --cacertdir   Directory where trusted CA certificates are stored.
                     If neither cacert nor cacertdir are specified, the default
                     system-wide trusted root certs configuration will apply.
  --insecure         Allow insecure TLS connection by skipping cert validation.
  --cert       Client certificate to authenticate with.
  --key        Private key file to authenticate with.
  --tls-ciphers  Sets the list of preferred ciphers (TLSv1.2 and below)
                     in order of preference from highest to lowest separated by colon (":").
                     See the ciphers(1ssl) manpage for more information about the syntax of this string.
  --tls-ciphersuites  Sets the list of preferred ciphersuites (TLSv1.3)
                     in order of preference from highest to lowest separated by colon (":").
                     See the ciphers(1ssl) manpage for more information about the syntax of this string,
                     and specifically for TLSv1.3 ciphersuites.
  --raw              Use raw formatting for replies (default when STDOUT is
                     not a tty).
  --no-raw           Force formatted output even when STDOUT is not a tty.
  --quoted-input     Force input to be handled as quoted strings.
  --csv              Output in CSV format.
  --json             Output in JSON format (default RESP3, use -2 if you want to use with RESP2).
  --quoted-json      Same as --json, but produce ASCII-safe quoted strings, not Unicode.
  --show-pushes  Whether to print RESP3 PUSH messages.  Enabled by default when
                     STDOUT is a tty but can be overridden with --show-pushes no.
  --stat             Print rolling stats about server: mem, clients, ...
  --latency          Enter a special mode continuously sampling latency.
                     If you use this mode in an interactive session it runs
                     forever displaying real-time stats. Otherwise if --raw or
                     --csv is specified, or if you redirect the output to a non
                     TTY, it samples the latency for 1 second (you can use
                     -i to change the interval), then produces a single output
                     and exits.
  --latency-history  Like --latency but tracking latency changes over time.
                     Default time interval is 15 sec. Change it using -i.
  --latency-dist     Shows latency as a spectrum, requires xterm 256 colors.
                     Default time interval is 1 sec. Change it using -i.
  --lru-test   Simulate a cache workload with an 80-20 distribution.
  --replica          Simulate a replica showing commands received from the master.
  --rdb    Transfer an RDB dump from remote server to local file.
                     Use filename of "-" to write to stdout.
 --functions-rdb  Like --rdb but only get the functions (not the keys)
                     when getting the RDB dump file.
  --pipe             Transfer raw Redis protocol from stdin to server.
  --pipe-timeout  In --pipe mode, abort with error if after sending all data.
                     no reply is received within  seconds.
                     Default timeout: 30. Use 0 to wait forever.
  --bigkeys          Sample Redis keys looking for keys with many elements (complexity).
  --memkeys          Sample Redis keys looking for keys consuming a lot of memory.
  --memkeys-samples  Sample Redis keys looking for keys consuming a lot of memory.
                     And define number of key elements to sample
  --hotkeys          Sample Redis keys looking for hot keys.
                     only works when maxmemory-policy is *lfu.
  --scan             List all keys using the SCAN command.
  --pattern     Keys pattern when using the --scan, --bigkeys or --hotkeys
                     options (default: *).
  --quoted-pattern  Same as --pattern, but the specified string can be
                         quoted, in order to pass an otherwise non binary-safe string.
  --intrinsic-latency  Run a test to measure intrinsic system latency.
                     The test will run for the specified amount of seconds.
  --eval       Send an EVAL command using the Lua script at .
  --ldb              Used with --eval enable the Redis Lua debugger.
  --ldb-sync-mode    Like --ldb but uses the synchronous Lua debugger, in
                     this mode the server is blocked and script changes are
                     not rolled back from the server memory.
  --cluster  [args...] [opts...]
                     Cluster Manager command and arguments (see below).
  --verbose          Verbose mode.
  --no-auth-warning  Don't show warning message when using password on command
                     line interface.
  --help             Output this help and exit.
  --version          Output version and exit.

Cluster Manager Commands:
  Use --cluster help to list all available cluster manager commands.

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli -D "" --raw dump key > key.dump && redis-cli -X dump_tag restore key2 0 dump_tag replace < key.dump
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:
  redis-cli --quoted-input set '"null-\x00-separated"' value
  redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  redis-cli --scan --pattern '*:12345*'

  (Note: when using --eval the comma separates KEYS[] from ARGV[] items)

When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands
and settings.

[root@localhost ~]#

8、nacos安装

1、拉取镜像
docker pull nacos/nacos-server:2.0.3

9、Kafka安装

1、拉取镜像
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
2.启动
2.1、启动zookeeper容器
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
2.2、启动kafka容器
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.0.113 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest

192.168.0.113 改为宿主机器的IP地址,如果不这么设置,可能会导致在别的机器上访问不到kafka。
3、查看是否启动成功
docker ps

4、Docker中操作Kafka
4.1、进入到kafka容器内部
docker exec -it kafka bash
4.2、进入到kafka的安装目录,查看到kafka相关的命令
root@c4cb1dd889e8:/# cd /opt/kafka/bin/
root@c4cb1dd889e8:/opt/kafka/bin# ls
connect-distributed.sh        kafka-preferred-replica-election.sh
connect-mirror-maker.sh       kafka-producer-perf-test.sh
connect-standalone.sh         kafka-reassign-partitions.sh
kafka-acls.sh                 kafka-replica-verification.sh
kafka-broker-api-versions.sh  kafka-run-class.sh
kafka-cluster.sh              kafka-server-start.sh
kafka-configs.sh              kafka-server-stop.sh
kafka-console-consumer.sh     kafka-storage.sh
kafka-console-producer.sh     kafka-streams-application-reset.sh
kafka-consumer-groups.sh      kafka-topics.sh
kafka-consumer-perf-test.sh   kafka-verifiable-consumer.sh
kafka-delegation-tokens.sh    kafka-verifiable-producer.sh
kafka-delete-records.sh       trogdor.sh
kafka-dump-log.sh             windows
kafka-features.sh             zookeeper-security-migration.sh
kafka-leader-election.sh      zookeeper-server-start.sh
kafka-log-dirs.sh             zookeeper-server-stop.sh
kafka-metadata-shell.sh       zookeeper-shell.sh
kafka-mirror-maker.sh

topic操作

topic操作
1、创建topic
# 执行topic脚本 添加topic:example 一个分区 一个副本
kafka-topics.sh --create --topic example --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1
root@c4cb1dd889e8:/opt/kafka/bin# kafka-topics.sh --create --topic example --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1
Created topic example.
2、查询topic列表
kafka-topics.sh --zookeeper zookeeper:2181 --list
root@c4cb1dd889e8:/opt/kafka/bin# kafka-topics.sh --zookeeper zookeeper:2181 --list
__consumer_offsets
example
example1
3、删除topic
root@c4cb1dd889e8:/opt/kafka/bin# kafka-topics.sh --zookeeper zookeeper:2181 --delete --topic example1
Topic example1 is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
4、查询topic详情
root@c4cb1dd889e8:/opt/kafka/bin# kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic example
Topic: example  TopicId: 6IJ2GNWJRT6UGa1A_kYqgQ PartitionCount: 1       ReplicationFactor: 1    Configs:
        Topic: example  Partition: 0    Leader: 1001    Replicas: 1001  Isr: 1001
#这里我们可以看到分区数、副本数、leader等topic下的信息
5、生产者消费者
启动完消费者和生产者,这里面的消费者消费的前提是消费者命令要一直开启,
否则的话,生产者发送的数据,消费者就不会消费到,这里只能消费到实时传输的数据!
开启2个窗口一个开启生产者,发送消息,一个开启消费者,消费消息
5.1、生产者发送消息
root@c4cb1dd889e8:/opt/kafka/bin# kafka-console-producer.sh --broker-list  localhost:9092 --topic example
>hello
>haha
>nihao
>

5.2、消费者消费消息
root@c4cb1dd889e8:/opt/kafka/bin# kafka-console-consumer.sh --bootstrap-server  localhost:9092 --topic example
hello
haha
nihao

更多安装可百度搜索docker  菜鸟教程,更多安装实例

Spring Boot入门+深入(一):Spring Boot入门+深入(一)

Spring Boot入门+深入(七):Spring Boot入门+深入(七)-数据访问

你可能感兴趣的:(spring,boot,docker,容器)