声明:本文章的操作环境是在centos7中,如果对于windows用户来说,有些许差异的地方可能是在配置阿里云镜像加速,以及容器内和外部环境做映射的时候。也就是所有带-v的配置,对于windows用户来说可能需要去掉。
1、docker配置
1.1 配置阿里镜像加速
如果想要配置自己的阿里云地址可以参考这个地址,这里不过多的描述:https://blog.csdn.net/weixin_43552457/article/details/108160385
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://10c3pvm2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1.2 配置docker开启自启
service docker start # 启动docker
service docker stop # 停止docker服务
service docker restart # 重启docker服务
systemctl enable docker # 设置docker开机自启
systemctl disable docker # 禁用docker开机自启
1.3 docker中启动已经存在的容器
docker start 容器名(可以是一个容器列表或唯一区分的id)
如: docker start mysql redis zookeeper 就代表同时启动三个已经存在的容器
1.4 docker中为容器设置随着docker的启动而启动
docker update --restart=always 容器名或id
启动容器名也可以是一个列表
如果容器没有启动,这只需在创建容器的时候加上`--restart=always`
1.5 linux中查看已经设置了开机自启的服务
systemctl list-unit-files | grep enable
1.6 如果启动容器的时候报错或闪退等原因可以使用如下命令查看日志
docker logs 容器名
2、docker安装zookeeper
-
先使用
docker pull wurstmeister/zookeeper
拉去zookeeper镜像 -
然后使用一下命令进行容器的启动
docker run -d --name zookeeper # 给容器起名字 -p 2181:2181 # 端口映射,容器内部和虚拟机的 -v /etc/localtime:/etc/localtime # 设置docker时间为当前系统时间 wurstmeister/zookeeper # 镜像名
-
可以接着可以使用下面的命令进入zookeeper容器中
docker exec -it zookeeper /bin/bash # 其中-it是以交互模式启动
3、docker安装kafka
-
使用
docker pull wurstmeister/kafka
拉取kafka镜像在docker中如果不知道拉取什么版本的镜像,可以使用docker search 需要拉取的镜像名,进行搜索可以拉取的镜像
-
启动kafka
docker run -d --name kafka # 运行后容器的名称 -p 9092:9092 # 端口映射 # 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己 -e KAFKA_BROKER_ID=0 # 配置zookeeper管理kafka的路径192.168.56.122:2181/kafka -e KAFKA_ZOOKEEPER_CONNECT=192.168.56.122:2181/kafka # 把kafka的地址端口注册给zookeeper -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.56.122:9092 # 配置kafka的监听端口 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 # 容器时间同步虚拟机的时间 # 依据的镜像名称 wurstmeister/kafka
-
进入到kafka中
docker exec -it kafka /bin/bash
4、docker安装mongo
-
拉去镜像
docker pull mongo
-
根据镜像启动容器
- 不使用用户名
docker run -d --name mongo -v /usr/local/mongodb/datadb:/data/db -p 27017:27017 --privileged=true mongo
5、docker安装mysql
-
拉去镜像
docker pull mysql:5.7
-
启动容器
docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ --privileged=true \ -d mysql:5.7
-
说明
docker run -p 3306:3306 # 开启端口映射后者为容器的端口,前者为宿主机的端口 --name mysql # 给容器取名字 -v /mydata/mysql/log:/var/log/mysql # 日志文件映射后者为容器内的路径,前者为宿主机的路径 -v /mydata/mysql/data:/var/lib/mysql # 数据文件映射后者为容器内的路径,前者为宿主机的路径 -v /mydata/mysql/conf:/etc/mysql # 配置文件映射后者为容器内的路径,前者为宿主机的路径 -e MYSQL_ROOT_PASSWORD=root # 设置root账户密码 -d mysql:5.7 # 根据什么镜像启动
-
如果启动容器,容器马上闪退。那么可以在
run
的时候使用--privileged=true
来让连接长时间开启 -
修改docker中mysql的编码
-
步骤
# 进入所映射的/mydata/mysql/conf目录下 # 创建配置文件(my.conf)并填入如下配置 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf_unicode_ci' init_connect='SET NAMES utf8' character-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve # 重启mysql docker restart mysql # 验证是否配置成功 |- 进入容器 * docker exec -it(以交互模式打开) mysql(容器名) /bin/bash |— 然后进入上面启动容器的时候配置文件的路径/etc/mysql下面查看是否存在该文件。 |- 如果存在说明配置成功
-
6、docker安装redis
-
拉取镜像
docker pull redis
-
运行镜像
-
不做配置文件映射
# 启动容器 docker run -itd --name redis -p 6379:6379 redis # 进入容器 docker exec -it redis /bin/bash # 启动redis客户端 docker exec -it redis redis-cli 或 docker exec -it redis /bin/sh(或/bin/bash) 然后使用redis-cli直接进入redis客户端。
效果图
-
做配置文件映射
# 启动容器 docker run -p 6379:6379 --name redis \ -v /mydata/redis/data:/data \ -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf # 运行容器并启动客户端 docker exec -it redis redis-cli ps: redis是在内存中的,因此此时redis没有持久化功能,需要在配置文件中配置,怎么配置呢? 这就需要使用到刚才的文件映射,需要去刚才的映射配置文件中添加`appendonly yes`开启 redis的持久化功能,那么下一次就可以看到以前保存的数据,而不是整个redis都是空的。
-