一.Docker简介
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
二.在Linux上部署Docker的步骤
以下是在Linux上安装Docker的步骤:
1:更新系统(可选)
在安装Docker之前,需要确保系统是最新的。可以使用以下命令更新系统:
sudo apt-get update
2:安装Docker
在CentOS上,可以使用yum安装Docker:
sudo yum install docker
3:启动Docker服务
安装完成后,需要启动Docker服务:
sudo systemctl start docker
也可以设置Docker服务在启动时自动运行:
sudo systemctl enable docker
4:验证Docker是否安装成功
运行以下命令来验证Docker是否安装成功:
docker --version
如果Docker已经成功安装,这个命令会输出Docker的版本信息。
三.在Docker中部署MySQL:5.7
1:拉取MySQL镜像
从Docker Hub上拉取MySQL的镜像。使用以下命令拉取5.7的MySQL镜像(不同版本都可以指定):
docker pull mysql:5.7
2:运行MySQL容器
可以使用以下命令来运行一个MySQL容器:
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=sailing -d mysql:5.7
这个命令会创建一个新的MySQL 5.7容器,并将容器的3306端口映射到主机的3306端口。需要将sailing
替换为你想要设置的MySQL root用户的密码。
3:验证MySQL容器是否运行成功
使用以下命令查看正在运行的Docker容器:
docker ps
如果MySQL容器正在运行,就能在输出中看到它。
四.在Docker中部署Oracle
Oracle介绍:
- Oracle XE (Express Edition):
- XE是什么:XE代表Express Edition,是Oracle数据库的一个免费版本。它具有一些限制,例如CPU、内存和存储限制,但提供了一个完整的Oracle数据库系统,非常适合学习、开发和小型生产环境。
- 关于“数据库”:在Oracle中,术语“数据库”通常指的是物理存储结构,其中包括数据文件、控制文件和重做日志文件。XE是数据库实例的名称,你可以连接到它并在其中创建表、视图等。
- 是否可以创建自己的数据库:在Oracle XE中,你通常不会创建自己的“数据库”,因为它通常只允许一个数据库实例。但你可以创建自己的模式(用户),并在其中创建自己的对象(如表、视图等)。
- Oracle角色:SYS AS SYSDBA:
- SYS用户:SYS是Oracle数据库的内置超级用户,具有对数据库的完全控制权。
- SYSDBA角色:SYSDBA是一种特权,允许用户执行高级管理任务,例如启动和关闭数据库、备份和恢复等。
- “SYS AS SYSDBA”:这个表达式表示以SYS用户身份并具有SYSDBA特权连接。这是执行数据库维护任务的常用方法。
- 账户、角色和数据库的关系:账户代表数据库中的用户。角色是权限和特权的集合,可以分配给用户。数据库是物理存储结构,其中包括用户、角色和数据对象。
- 创建自己的账户、角色和数据库:
- 创建账户:你可以创建自己的用户(账户),并为其分配特定的权限和角色。例如,你可以创建一个只能访问特定表的用户。
- 创建角色:你可以创建自定义角色,并为其分配特定的权限。然后,你可以将这些角色分配给用户。
- 创建数据库:在Oracle XE中,你通常不会创建新的数据库,但可以创建新的模式和用户,并在其中工作。
1:获取Oracle Database XE Docker镜像
- Oracle提供了Oracle Database XE的Docker镜像,可以在Oracle的容器注册中心下载:https://container-registry.oracle.com
- 登录oracle账号后,同意协议。
- 在linux输入下面的命令登录你的oracle账号:
docker login container-registry.oracle.com
- 然后输入希望下载的版本(下面这个是快捷版本),开始下载:
docker pull container-registry.oracle.com/database/express:21.3.0-xe
2:运行Oracle容器
具体自定义配置可以参考:https://container-registry.oracle.com/ords/f?p=113:4:5474493143833:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:803,803,Oracle%20Database%20Express%20Edition,Oracle%20Database%20Express%20Edition,1,0&cs=3XKtcNm1ERChRlSxd-L4F990icRLgLOsKX4nfjjg_DNmbN-SOnJzi847Alu60whkYafstPBobvputEW8E_J1Wjg
我这里使用以下命令来运行一个Oracle容器 :
docker run --name oracle -d -p 1521:1521 -e sailing container-registry.oracle.com/database/express:21.3.0-xe
这个命令会创建一个新的Oracle容器,并将容器的1521端口映射到主机的1521端口。密码设置为saling
3:验证Oracle容器是否运行成功
使用以下命令来查看正在运行的Docker容器:
docker ps
如果Oracle容器正在运行,就能在输出中看到它。
用jdbc链接显示成功:
数据库:XE
用户名:sys
密码:sailing
角色:sys as sysdba
端口:1521
五.在Docker中部署kafka
1. 安装Docker Compose
如果你的系统还没有安装Docker Compose,你可以通过以下命令安装:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
如果连接不上github,可以手动下载,下载后按照上面的名称和位置保存并执行命令:https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
2. 创建Docker Compose文件
在一个空目录中,创建一个名为docker-compose.yml
的文件,并粘贴以下内容:
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
kafka1:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.20.52.135:9092
kafka2:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- "9093:9093"
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.20.52.135:9093
kafka3:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- "9094:9094"
environment:
KAFKA_BROKER_ID: 3
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.20.52.135:9094
这个文件定义了一个Zookeeper节点和三个Kafka节点。
3. 启动Kafka集群
在包含docker-compose.yml
文件的目录中,运行以下命令来启动集群:
docker-compose up -d
4. 验证集群状态
可以使用以下命令来查看集群的状态:
docker-compose ps
5. 停止和清理集群
当不再需要集群时,可以使用以下命令来停止和清理资源:
docker-compose down
6. 验证链接kafka
6.1. 进入Kafka容器
你可以使用以下命令进入其中一个Kafka容器内部:
docker exec -it docker-kafka_kafka1_1 /bin/bash
这将允许你在Kafka容器内运行命令和工具。
6.2. 创建主题
你可以使用以下命令在Kafka集群中创建一个新主题:
kafka-topics --create --topic my_topic --bootstrap-server kafka1:9092 --partitions 1 --replication-factor 1
6.3. 生产消息
你可以使用以下命令向Kafka主题发送消息:
kafka-console-producer --topic my_topic --bootstrap-server kafka1:9092
然后,你可以在命令行中输入消息,每输入一行就会发送一个消息。
6.4. 消费消息
你可以使用以下命令从Kafka主题消费消息:
kafka-console-consumer --topic my_topic --from-beginning --bootstrap-server kafka1:9092
六.将Docker的镜像进行存储转移
1.将docker镜像打包成tar文件:
请将 <path/to/save/image.tar>
替换为你想要保存 tar 文件的路径,将 <image-name>
和 <tag>
替换为你想要保存的镜像的名称和标签。
docker save -o <path/to/save/image.tar> <image-name>:<tag>
例如,如果你想要保存名为 container-registry.oracle.com/database/express
、标签为 21.3.0-xe
的镜像到 /home/username/oracle_image.tar
,则可以使用以下命令:
docker save -o /home/username/oracle_image.tar container-registry.oracle.com/database/express:21.3.0-xe
现在可以在指定的路径找到 tar 文件,并将其复制到 Windows 机器或移动硬盘上。
2.将一个打成tar包的docker文件重新解压成镜像文件:
如果你想在另一台机器上加载这个镜像,你可以使用 docker load
命令。例如:
docker load -i /path/to/image.tar