安装文档地址: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 gccsudo 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-reloadsudo 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=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve
在修改后,需要重启 Docker 的 MySQL 镜像
docker restart mysql
3、Docker 安装 Redis
3.1 下载镜像文件
sudo docker pull redis
3.2 创建实例并启动
如果直接挂载的话 docker 会以为挂载的是一个目录(因为虚拟机里面并没有文件),所以我们先创建一个文件然后再挂载:
# 在虚拟机中mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.confdocker 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/# 配置任意机器可以访问 elasticsearchecho "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
