安装文档地址:https://docs.docker.com/engine/install/centos/

Docker安装

1. 卸载旧版本(官网要求)

  1. sudo yum remove docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. docker-engine

2. yum安装gcc相关

  1. sudo yum -y install gcc
  2. sudo yum -y install gcc-c++

3. 安装需要的软件包(官网要求)

  1. sudo yum install -y yum-utils

4. 设置stable镜像仓库(官网要求)

这里不要按照官网设置外网镜像仓库,推荐使用国内阿里云腾讯等

  1. sudo yum-config-manager \
  2. --add-repo \
  3. http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、更新yum软件包索引

  1. sudo yum makecache fast

6. 安装Docker CE(官网要求)

  1. sudo yum install docker-ce docker-ce-cli containerd.io

7. 启动Docker

  1. sudo systemctl start docker

8. 测试

  1. sudo docker version

9. hello world

  1. docker run hello-world

10. 阿里云镜像加速服务

镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
image.png
容器镜像服务ACK → 管理控制台 → 镜像加速器

  1. sudo mkdir -p /etc/docker
  1. sudo tee /etc/docker/daemon.json <<-'EOF'
  2. {
  3. "registry-mirrors": ["https://ade66b2c.mirror.aliyuncs.com"]
  4. }
  5. EOF
  1. sudo systemctl daemon-reload
  2. 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

  1. sudo yum remove docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. docker-engine

2、设置Docker的仓库地址
2.1 在设置之前需要安装一些依赖的包

  1. sudo yum install -y yum-utils

2.2 设置Docker的仓库地址(告诉Linux,Docker去哪里装)

  1. sudo yum-config-manager \
  2. --add-repo \
  3. https://download.docker.com/linux/centos/docker-ce.repo

3、安装Docker引擎、Docker客户端等

  1. sudo yum install docker-ce docker-ce-cli containerd.io

4、启动Docker

  1. sudo systemctl start docker

5、设置Docker开机自启动

  1. sudo systemctl enable docker

1.2 配置阿里云镜像加速

登录阿里云后进入控制台,点击产品与服务,选择容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
根据页面命令执行完成加速:

  1. 第一条:
  2. sudo mkdir -p /etc/docker
  3. 第二条:
  4. sudo tee /etc/docker/daemon.json <<-'EOF'
  5. {
  6. "registry-mirrors": ["https://ade66b2c.mirror.aliyuncs.com"]
  7. }
  8. EOF
  9. 第三条:
  10. sudo systemctl daemon-reload
  11. 第四条:
  12. sudo systemctl restart docker

2、Docker 安装 MySQL

2.1 下载镜像文件

去 docker 仓库里 搜 mysql,docker pull mysql 是下载最新的 mysql 镜像,如果需要下载指定版本的镜像,可以使用:docker pull mysql:5.7

  1. sudo docker pull mysql:5.7

下载后检查当前的所有镜像

  1. sudo docker images

image.png

2.2 创建实例并启动

  1. # --name 给启动的容器起一个名字
  2. # -v 目录挂载 -p指定端口映射(docker里的linux与虚拟机linux之间的映射)
  3. # -e 启动时,给MySQL设置参数
  4. # -d 后台运行 mysql:5.7 版本的MySQL镜像
  5. sudo docker run -p 3306:3306 --name mysql \
  6. -v /mydata/mysql/log:/var/log/mysql \
  7. -v /mydata/mysql/data:/var/lib/mysql \
  8. -v /mydata/mysql/conf:/etc/mysql \
  9. -e MYSQL_ROOT_PASSWORD=root \
  10. -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;

image.png

可以使用 docker ps 查看正在运行中的 Docker 容器;
image.png

2.3 修改配置文件

由于文件已经挂载,相当于对于docker内部的虚拟机里面的文件,已经与虚拟机里的文件进行了一个快捷方式的绑定;
为的就是:想要修改 MySQL 的配置的时候,不是每次都进入容器的内部的 MySQL 配置文件目录里改;

  1. # 以交互方式进入docker内部的虚拟机
  2. docker exec -it mysql bin/bash
  3. # 退出内部虚拟机
  4. exit;

文件挂载实际效果:
image.png

修改虚拟机内容:

  1. # vi编辑虚拟机里面的内容,同步挂载docker内部镜像
  2. vi /mydata/mysql/conf/my.conf
  3. # 以下是需要写入的内容,之后wq
  4. [client]
  5. default-character-set=utf8
  6. [mysql]
  7. default-character-set=utf8
  8. [mysqld]
  9. init_connect='SET collation_connection = utf8_unicode_ci'
  10. init_connect='SET NAMES utf8'
  11. character-set-server=utf8
  12. collation-server=utf8_unicode_ci
  13. skip-character-set-client-handshake
  14. skip-name-resolve

在修改后,需要重启 Docker 的 MySQL 镜像

  1. docker restart mysql

3、Docker 安装 Redis

3.1 下载镜像文件

  1. sudo docker pull redis

3.2 创建实例并启动

如果直接挂载的话 docker 会以为挂载的是一个目录(因为虚拟机里面并没有文件),所以我们先创建一个文件然后再挂载:

  1. # 在虚拟机中
  2. mkdir -p /mydata/redis/conf
  3. touch /mydata/redis/conf/redis.conf
  4. docker run -p 6379:6379 --name redis \
  5. -v /mydata/redis/data:/data \
  6. -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
  7. -d redis redis-server /etc/redis/redis.conf

至此,Redis 镜像就安装好了:可以使用 docker ps 命令检查;

  1. # 直接进去执行 Redis客户端
  2. docker exec -it redis redis-cli

默认 Redis 数据是不持久化的,那么就需要修改 Redis 的镜像文件:

  1. # vi编辑挂载的redis配置文件
  2. vi /mydata/redis/conf/redis.conf
  3. # 插入下面内容并保存-让redis启用AOF的持久化方式
  4. appendonly yes
  5. # 重启redis镜像
  6. docker restart redis

关于 Redis 的客户端,可以使用 RedisDesktopManager;

4、Docker 安装 ES/Kibana

4.1 下载镜像文件

  1. # 存储和检索数据
  2. $ docker pull elasticsearch:7.4.2
  3. # 可视化检索数据
  4. $ docker pull kibana:7.4.2

4.2 主机创建挂载数据文件夹

  1. # 创建配置文件目录
  2. mkdir -p /mydata/elasticsearch/config
  3. # 创建数据目录
  4. mkdir -p /mydata/elasticsearch/data
  5. # 将/mydata/elasticsearch/文件夹中文件都可读可写
  6. chmod -R 777 /mydata/elasticsearch/
  7. # 配置任意机器可以访问 elasticsearch
  8. echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml

4.3 创建实例并启动

1、启动 ElasticSearch

命令后面的 \是换行符,注意前面有空格

  1. docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
  2. -e "discovery.type=single-node" \
  3. -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
  4. -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  5. -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
  6. -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  7. -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 数据说明启动成功
image.png
若启动失败,可以使用 docker logs 'container-name' 来检查日志;

2、启动 Kibana

  1. docker run --name kibana \
  2. -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 \
  3. -p 5601:5601 \
  4. -d kibana:7.4.2

-e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200:这里要设置成自己的虚拟机IP地址

浏览器访问5601端口进行测试:
image.png
又安装了这俩,内存还剩356M,还行;
image.png

4.4 设置跟随 Docker 自启动

  1. # 当前 Docker 开机自启,所以 ES 现在也是开机自启
  2. docker update elasticsearch --restart=always
  3. # 当前 Docker 开机自启,所以 kibana 现在也是开机自启
  4. docker update kibana --restart=always

5、Docker安装 Nginx

在 /mydata 文件夹下面,建立 nginx 文件夹用于后面存储 nginx 配置文件:
image.png

下载 nginx 镜像

  1. $ docker run -p 80:80 --name nginx -d nginx:1.10

下面这个命令,就是将指定容器下的 文件,复制到当前命令所在文件夹;
image.png

  1. $ docker run -p 80:80 --name nginx \
  2. -v /mydata/nginx/html:/usr/share/nginx/html \
  3. -v /mydata/nginx/logs:/var/log/nginx \
  4. -v /mydata/nginx/conf/:/etc/nginx \
  5. -d nginx:1.10

设置 nginx 跟随 docker 启动:

  1. $ docker update nginx --restart=always

6、Docker 安装 RabbitMQ

  1. 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