安装文档地址:https://docs.docker.com/engine/install/centos/
Docker安装
1. 卸载旧版本(官网要求)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. yum安装gcc相关
sudo yum -y install gcc
sudo yum -y install gcc-c++
3. 安装需要的软件包(官网要求)
sudo yum install -y yum-utils
4. 设置stable镜像仓库(官网要求)
这里不要按照官网设置外网镜像仓库,推荐使用国内阿里云腾讯等
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、更新yum软件包索引
sudo yum makecache fast
6. 安装Docker CE(官网要求)
sudo yum install docker-ce docker-ce-cli containerd.io
7. 启动Docker
sudo systemctl start docker
8. 测试
sudo docker version
9. hello world
docker run hello-world
10. 阿里云镜像加速服务
镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
容器镜像服务ACK → 管理控制台 → 镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ade66b2c.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
案例:分布式商城环境部署
1、安装 Docker
1.1 下载并安装 Docker
Docker镜像网站:https://hub.docker.com/
Docker文档:https://docs.docker.com/get-docker/
CnetOS安装文档:https://docs.docker.com/engine/install/centos/
1、卸载旧版本的 Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、设置Docker的仓库地址
2.1 在设置之前需要安装一些依赖的包
sudo yum install -y yum-utils
2.2 设置Docker的仓库地址(告诉Linux,Docker去哪里装)
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3、安装Docker引擎、Docker客户端等
sudo yum install docker-ce docker-ce-cli containerd.io
4、启动Docker
sudo systemctl start docker
5、设置Docker开机自启动
sudo systemctl enable docker
1.2 配置阿里云镜像加速
登录阿里云后进入控制台,点击产品与服务,选择容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
根据页面命令执行完成加速:
第一条:
sudo mkdir -p /etc/docker
第二条:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ade66b2c.mirror.aliyuncs.com"]
}
EOF
第三条:
sudo systemctl daemon-reload
第四条:
sudo systemctl restart docker
2、Docker 安装 MySQL
2.1 下载镜像文件
去 docker 仓库里 搜 mysql,docker pull mysql
是下载最新的 mysql
镜像,如果需要下载指定版本的镜像,可以使用:docker pull mysql:5.7
sudo docker pull mysql:5.7
下载后检查当前的所有镜像
sudo docker images
2.2 创建实例并启动
# --name 给启动的容器起一个名字
# -v 目录挂载 -p指定端口映射(docker里的linux与虚拟机linux之间的映射)
# -e 启动时,给MySQL设置参数
# -d 后台运行 mysql:5.7 版本的MySQL镜像
sudo 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 \
-d mysql:5.7
配置说明
-p 3306:3306
:将 Docker 容器的3306端口映射到 Linux主机的3306端口;--name
:为当前启动的容器起一个名,例如:mysql,mysql-01;-v
:目录挂载;将配置文件加、日志文件夹、数据挂载到主机;-e MYSQL_ROOT_PASSWORD=root \
:初始化root用户的密码为 root;-d mysql:5.7
:以后台运行的方式运行 5.7 版本的MySQL;
可以使用 docker ps
查看正在运行中的 Docker 容器;
2.3 修改配置文件
由于文件已经挂载,相当于对于docker内部的虚拟机里面的文件,已经与虚拟机里的文件进行了一个快捷方式的绑定;
为的就是:想要修改 MySQL 的配置的时候,不是每次都进入容器的内部的 MySQL 配置文件目录里改;
# 以交互方式进入docker内部的虚拟机
docker exec -it mysql bin/bash
# 退出内部虚拟机
exit;
文件挂载实际效果:
修改虚拟机内容:
# vi编辑虚拟机里面的内容,同步挂载docker内部镜像
vi /mydata/mysql/conf/my.conf
# 以下是需要写入的内容,之后wq
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
在修改后,需要重启 Docker 的 MySQL 镜像
docker restart mysql
3、Docker 安装 Redis
3.1 下载镜像文件
sudo docker pull redis
3.2 创建实例并启动
如果直接挂载的话 docker 会以为挂载的是一个目录(因为虚拟机里面并没有文件),所以我们先创建一个文件然后再挂载:
# 在虚拟机中
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
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
至此,Redis 镜像就安装好了:可以使用 docker ps
命令检查;
# 直接进去执行 Redis客户端
docker exec -it redis redis-cli
默认 Redis 数据是不持久化的,那么就需要修改 Redis 的镜像文件:
# vi编辑挂载的redis配置文件
vi /mydata/redis/conf/redis.conf
# 插入下面内容并保存-让redis启用AOF的持久化方式
appendonly yes
# 重启redis镜像
docker restart redis
关于 Redis 的客户端,可以使用 RedisDesktopManager;
4、Docker 安装 ES/Kibana
4.1 下载镜像文件
# 存储和检索数据
$ docker pull elasticsearch:7.4.2
# 可视化检索数据
$ docker pull kibana:7.4.2
4.2 主机创建挂载数据文件夹
# 创建配置文件目录
mkdir -p /mydata/elasticsearch/config
# 创建数据目录
mkdir -p /mydata/elasticsearch/data
# 将/mydata/elasticsearch/文件夹中文件都可读可写
chmod -R 777 /mydata/elasticsearch/
# 配置任意机器可以访问 elasticsearch
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
4.3 创建实例并启动
1、启动 ElasticSearch
命令后面的 \是换行符,注意前面有空格
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
启动参数说明
-p 9200:9200 -p 9300:9300
:向外暴露两个端口,9200用于HTTP REST API请求,9300 ES 在分布式集群状态下 ES 之间的通信端口;-e "discovery.type=single-node"
:es 以单节点运行-e ES_JAVA_OPTS="-Xms64m -Xmx512m
“:设置启动占用内存,不设置可能会占用当前系统所有内存-v
:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹;-d elasticsearch:7.4.2
:指定要启动的镜像
访问 IP:9200 看到返回的 json 数据说明启动成功
若启动失败,可以使用 docker logs 'container-name'
来检查日志;
2、启动 Kibana
docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 \
-p 5601:5601 \
-d kibana:7.4.2
-e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200
:这里要设置成自己的虚拟机IP地址
浏览器访问5601端口进行测试:
又安装了这俩,内存还剩356M,还行;
4.4 设置跟随 Docker 自启动
# 当前 Docker 开机自启,所以 ES 现在也是开机自启
docker update elasticsearch --restart=always
# 当前 Docker 开机自启,所以 kibana 现在也是开机自启
docker update kibana --restart=always
5、Docker安装 Nginx
在 /mydata 文件夹下面,建立 nginx 文件夹用于后面存储 nginx 配置文件:
下载 nginx 镜像
$ docker run -p 80:80 --name nginx -d nginx:1.10
下面这个命令,就是将指定容器下的 文件,复制到当前命令所在文件夹;
$ docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
-d nginx:1.10
设置 nginx 跟随 docker 启动:
$ docker update nginx --restart=always
6、Docker 安装 RabbitMQ
docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management