安装前请确认你的电脑打开了cpu虚拟化
快速查看方法P:Ctrl+Alt+Del选择任务管理器——性能——cpu——查看最下面的信息——虚拟化是否开启
打开win系统的控制面板,找不到直接在小娜那里搜索控制面板
选择程序——选择打开或关闭windows服务
打开图片中的服务
重启电脑
百度Docker for windows 下载并安装
右键Docker系统图标——右下角系统栏选择Setting
选择daomen——打开Advanced——修改为下方内容
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [],
"debug": true,
"experimental": false
}
win+r后输入cmd打开控制台
Docker的基本命令
查找相关镜像
docker search zookeeper //查找zookeeper相关镜像
docker pull zookeeper 拉去默认官方最新镜像
创建zookeeper容器并启动
docker run --name zookeeper --restart always -d -p 2181:2181 zookeeper
--name 启动容器名称为 zookeeper
--restart always docker 重启时,zookeeper容器 会自动重启
--d 后台线程启动
--p 左边为容器外宿主机端口右边为容器内部zookeeper启动端口
第一个2181为宿主主机的提供的映射接口,由于我的电脑不开放6000以内的接口,我只好把
==2181:2181改成了6688:2121==
搜索kafka的镜像
docker search kafka
执行 docker pull wurstmeister/kafka
启动kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e
KAFKA_ZOOKEEPER_CONNECT=192.168.70.87:6688 -e
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.70.87:9092 -e
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
其中的两个ip和端口都是宿主主机对docker中的zookeeper开放的映射端口
docker ps 查看已经建立的镜像
docker logs -f 容器id 查看容器日志
docker exec -it kafka /bin/bash 进入kafka 容器内部
切到kafka的bin目录下
cd /opt/kafka_2.12-2.4.0/bin/
创建一个topic名命为my_log
kafka-topics.sh --create --zookeeper 192.168.70.87:6688 --replication-factor 1 --partitions 1 --topic my_log
查看指定zookeeper中的所有topic
kafka-topics.sh --list --zookeeper 192.168.70.87:6688
启动一个生产者 绑定刚才创建的主体my_log
kafka-console-producer.sh --broker-list localhost:9092 --topic my_log
随意写点东西,Ctrl+C退出
启动消费者脚本,订阅 mykafka 主题
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mykafka --frombeginning
注解:
--from-beginning 从头开始消费
注意,如果你在kafka中没有切入bin目录,那么创建topic命令和创建生产者与消费者命令时要带上bin/
docker-compose可以说是docker的一个扩展插件,有了它*我们——使用一个配置即可实现所有容器的管理
下载win平台docker-compose
点击releases下拉选择和你系统对应的版本
因为我是win10专业版64位所以我选择了docker-compose-Windows-x86_64.exe
双击执行你的插件进行安装
检查是否安装成功
# docker-compose -v
创建一个docker-compose.yml文件
version: '2'
services:
zoo1:
image: zookeeper
restart: always
container_name: zoo1
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
container_name: zoo2
ports:
- "2182:2181"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
container_name: zoo3
ports:
- "2183:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
上面的端口号如果遇到不给开放请使用6000以上的端口号来对应docker中的端口——如把2183:2183改成6693:2183
version:’3’ :表示compose对docker版本的支持,这里是compose版本,并非是docker版本。
services: 表示一个该配置文件的所有容器实例,支持配置多个容器实例。
restart: always:表示该容器实例是随着机器启动而启动。
ports:表示容器端口映射到宿主机端口。
container_name: 表示容器的一个别名。
environment:表示容器环境的设置。
其他命令:
volumes:表示dockers容器的数据卷,将容器实例的目录映射到宿主机上盘符目录。
如:我们在docker配置tomcate时:
volumes:
- d://docker/tomcat/webapps:/usr/local/tomcat/webapps
- d://docker/tomcat/logs:/usr/local/tomcat/logs
在当前路径下使用——shift+鼠标右键选择运行powshell或者命令行窗口
运行 docker-compose up -d
运行刚才的配置文件
docker-compose命令
Up :启动
Down:停止
-d:后台运行
创建docker-compose.yml
version: '3'
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
volumes:
- d://docker/tomcat/webapps:/usr/local/tomcat/webapps
- d://docker/tomcat/logs:/usr/local/tomcat/logs
environment:
TZ: Asia/Shanghai
mysql:
restart: always
image: mysql:5.7.24
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
version:’3’ :表示compose对docker版本的支持,这里是compose版本,并非是docker版本。
services: 表示一个该配置文件的所有容器实例,支持配置多个容器实例。
tomcat:表示是一个多个容器中的其中一个
restart: always:表示该容器实例是随着机器启动而启动。
image: tomcat:表示本容器使用的镜像是tomcat,如需要指定版本号则 image: tomcat:8.0。
container_name: tomcat:表示容器的一个别名。
ports:表示容器端口映射到宿主机端口。
volumes:表示dockers容器的数据卷,将容器实例的目录映射到宿主机上盘符目录。
environment:表示容器环境的设置,我这里配置的是tomcat容器的时区时间为亚洲/上海
还记得我们的配置文件是怎么写的吗?webapps目录我们是从容器映射到宿主机磁盘目录的,所以我会在这个目录下创建一个test工程并写一个index.html文件,以供我们进行测试。
通过浏览器访问:localhost:8080/test
欧克!!!
docker-compose是编排容器的。例如,你有一个php镜像,一个mysql镜像,一个nginx镜像。如果没有docker-compose,那么每次启动的时候,你需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,相当繁琐。而用了docker-composer之后,你就可以把这些命令一次性写在docker-composer.yml文件中,以后每次启动这一整个环境(含3个容器)的时候,你只要敲一个docker-composer up命令就ok了。
dockerfile的作用是从无到有的构建镜像。它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。Dockerfile - 为 docker build 命令准备的,用于建立一个独立的 image ,在 docker-compose 里也可以用来实时 build
docker-compose.yml - 为 docker-compose 准备的脚本,可以同时管理多个 container ,包括他们之间的关系、用官方 image 还是自己 build 、各种网络端口定义、储存空间定义等
使用虚拟机中的vim命令编写dockerfile不太方便,在windows中可以使用记事本编辑。
在终端(CMD)中输入 cd Desktop 转到桌面(也可以直接在桌面用shift+鼠标右键选择打开powershell)
输入 mkdir dockerTest 在桌面上创建一个dockerTest文件夹
输入 cd dockerTest 进入dockerTest文件夹
输入 touch Dockerfile 创建一个Docker文件在当前目录。注意这里的Dockerfile的首字母是大写的(因为Linux文件名是大小写敏感的)windows平台使用echo > 来创建文件
输入 notepad Dockerfile& 使用windows的记事本打开Dockerfile文件(注意最后面有一个 ‘&’)经过验证,notepad命令在win10上也是不能使用的,但是大家可以手动用notepad++来打开编辑这个文件,然后再在命令窗口里使用docker命令来执行
By Cool.R