在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,你可以从仓库安装和更新 Docker。
docker依赖于系统的一些必要的工具, yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io
启动 Docker。
systemctl start docker
可以使用docker version查看一下当前的版本。
docker version
常用命令:
搜索镜像命令:
docker search 镜像名称
下载镜像:
docker pull 镜像名称
查看已有镜像
docker images
查看所以容器:(查看存活容器 去掉-a)
docker ps -a
停止运行的容器
docker stop <容器ID>
启动已停止运行的容器
docker start <容器ID>
删除容器
docker rm 容器ID或容器名
打包镜像
docker tag hello-world:latest wujiaxin/helloworld:18.04
将自己的镜像推送到 Docker Hub
docker push wujiaxin/helloworld
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
docker镜像加速,阿里云镜像获取地址:https://cr.console.aliyun.com/cn-
hangzhou/instances/mirrors
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://bjtzu1jb.mirror.aliyuncs.com"] } EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
下载mysql
docker pull mysql
默认最新版本,如果加版本需要
docker pull mysql:5.7
启动mysql
docker run --name=mysql -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
--name : 为镜像创建别名,方便操作
-p : 映射端口,如果你宿主机有mysql,为了避免与本机的 mysql端口冲突,更改端口,如 -p 33066:3306;将容器的 3306 端口挂载到宿主机的 3306 端口上;
-e : 环境变量,为 mysql 的 root 用户设置密码为123456
-d: 后台运行
-i: 交互式操作。
-t: 终端。
正式运行需要加两个挂载子命令
docker run -d \
--name mysql \
-p 3306:3306 \
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /usr/local/docker/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
docker exec -it mysql bash进入容器,用mysql -u root -p进入mysql命令行,然后能进行相关的数据库操作了
docker exec -it mysql bash
mysql -u root -p
退出mysql命令行
quit
下载redis
docker pull redis:latest
启动Redis
docker run -itd --name redis-wjx -p 6379:6379 redis
-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
下载nacos
docker pull nacos/nacos-server
启动nacos
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
参数说明:
MODE standalone 单机模式
登录密码默认nacos/nacos
下载rabbitmq (该版本包含了web控制页面)
docker pull rabbitmq:management
启动rabbitmq
#方式一:默认guest 用户,密码也是 guest
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
#方式二:设置用户名和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management
-d 后台运行容器;
--name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
下载elk( 集成镜像)
docker pull sebp/elk
启动
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -itd --name elk sebp/elk
9200 端口验证ES 和 5601端口验证Kibanna
下载zookeeper 和下载kafka
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
启动zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
生产: docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
启动kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -t wurstmeister/kafka
生产:docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
-e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
-e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka 配置zookeeper管理kafka的路径172.16.0.13:2181/kafka
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间
是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Compose 安装 ( 从 Github 上下载它的二进制包来使用)
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose-L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
将启用权限二进制文件:
chmod +x /usr/local/bin/docker-compose
查看版本:
docker-compose version
具体命令介绍: https://blog.51cto.com/9291927/2310444
maven插件构建docker镜像
maven构建docker镜像,需要远程连接到docker所在的宿主机,其默认端口是 2375,远程连接 docker 需要修改 docker 的配置文件。
vim /usr/lib/systemd/system/docker.service
在 ExecStart= 后添加配置 ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock ,0.0.0.0 代表所有 ip ,也可指定 ip。
刷新,重启
systemctl daemon-reload
systemctl restart docker