docker的基本配置以及在docker中安装常用的软件(zookeeper/kafka/mysql/redis/mongo)

声明:本文章的操作环境是在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都是空的。
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值