安装docker
## 1. 安装yum-utils
yum install -y yum-utils
## 2. 配置阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
## 2.1 解决problem with installed package podman-1.6.4-10.的报错
yum erase podman buildah
## 3. 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io --nobest
## 3.1 解决 Loaded plugins: fastestmirror 问题
## 3.1.1 修改 fastestmirror 插件配置文件
vim /etc/yum/pluginconf.d/fastestmirror.conf
## 将enable=1改为0
## 3.1.2 修改yum配置文件
vim /etc/yum.conf
## 将plugins=1改为0
## 3.1.3 清除yum缓存并重新构建源
yum clean all
rm -rf /var/cache/yum
yum makecache
## 3.1.4 重新执行安装docker命令
yum install -y docker-ce docker-ce-cli containerd.io --nobest
## 3.2 解决Command line error: no such option: --nobest
## 3.2.1 使用--skip-broken 替代--nobest
yum install -y docker-ce docker-ce-cli containerd.io --skip-broken
## 4. 启动docker, 开机自启动
systemctl start docker
systemctl enable docker
一些docker常用命令
# 以kafka为例
## 查看拉取的镜像
docker images
## 删除镜像, 前提是容器没在运行状态
docker rmi kafka
## 查看正在运行的容器
docker ps
## 开启,停止,重启容器
docker start kafka
docker stop kafka
docker restart kafka
## 删除容器
docker rm kafka
## 查看日志
docker logs -t -f kafka
## 进入容器内
docker exec -it kafka bash
虽然kafka2.8取消了zookeeper, 但在生产时还是得使用zookeeper
拉取镜像时可在镜像后加冒号和版本号
例如: docker pull wurstmeister/zookeeper:latest 表示拉取最新镜像,不写也表示拉取最新镜像
版本可从docker镜像官网查看
hub.docker.com
安装zookeeper
# docker拉取zookeeper, kafka镜像
docker pull wurstmeister/zookeeper
# 启动zookeeper容器
docker run -d
--name zookeeper \ # 容器命名
-p 2181:2181 \ # 主机端口:容器端口, 端口映射
--privileged=true -v \ # 容器以主机权限运行
/etc/localtime:/etc/localtime \ # 使用主机时间当容器时间
wurstmeister/zookeeper
安装kafka
# docker拉取kafka镜像
docker pull wurstmeister/kafka
# 启动kafka容器
docker run -d
--name kafka \
-p 9092:9092 \
--privileged=true \
--link zookeeper \ # 将zookeeper与kafka链接起来
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ # 配置链接zookeeper的地址
-e KAFKA_BROKER_ID=0 \ # 默认-1, 需大于等于0才能正常使用
# 如果kafka需要暴露给外网,则需要配置该属性,ip填写公网地址
# 例如kafka部署在阿里云,而你想从本地连接kakfa,此时就需要配置
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://8.134.92.181:9092 \
# 配置kafka真正的对外开放端口
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
# 将本机目录挂载到容器内对象地址下, 需要--privileged=true配合
# 前面是本机目录地址, 后面是容器内日志目录地址
-v /opt/docker-kafka/logs:/kafka/logs \
-t wurstmeister/kafka