1 Docker是什么

Docker是一个新型的虚拟机技术,容器化引擎,专门用来快速搭建软件平台的技术。
基于Go语言开发的
可以实现容器的隔离,互不影响

2 Docker的特点

1.更高效的利用系统资源
2.更快速的启动时间
3.一致的运行环境
4.持续交付和部署(CI&CD)

3 Docker核心

镜像( Image ) 软件安装包,是一套软件集合,需要的其他的软件都在里面,比如Tomcat镜像,就包含Jdk+tomcat
容器( Container )基于镜像安装之后的实例
数据卷(Data Volumes)容器存储数据的地方,类似磁盘(虚拟的)
网络(Network)可以实现容器的网络分配,每个容器都有自己的网络(ip+端口)
仓库( Repository )存储镜像的地方,国内建议使用第三方镜像仓库

4 Linux安装Docker

vmware虚拟机中的centOS7

1.下载 Docker引擎

curl -sSL https://get.daocloud.io/docker | sh
图片.png

ps:之前安装过,需要先卸载,在重新安装
1.查看安装的docker文件
yum list installed |grep docker
2.删除本机的docker文件
yum -y remove docker-engine-xxx
3.删除repo文件
cd /etc/yum.repos.d 删除所有docker开头的文件

2.验证是否安装成功

docker version
图片.png

3.启动测试

启动Docker容器
systemctl start docker
图片.png
停止
systemctl stop docker
重启
systemctl restart docker
状态
systemctl status docker

5.Docker常用命令

1.查看镜像文件列表

docker images
图片.png
TAG:版本号,如果未指定就是:latest

2.搜索镜像

docker search 镜像名
eg:docker search tomcat
图片.png

3.下载镜像

docker pull 镜像名称:版本号

4.查看运行的容器

docker ps图片.png

5.查看安装的容器

查询运行的容器:docker ps
查询安装的容器:docker ps -a图片.png

6.查看容器详情

docker inspect 容器名称|容器ID

7.查看容器日志

docker logs 容器名称|容器ID

8.进入容器内部

docker exec -it 容器名称|容器ID bash

9.停止容器

docker stop 容器名称|容器ID

10.启动容器

docker start 容器名称|容器ID

11.删除容器

必须是停止的容器才能删除
docker rm 容器名称|容器ID

12.删除镜像

docker rm 镜像名称:版本号

13.创建并运行容器

docker run -d —name 容器名称 -p 外界端口:软件端口 -v 外部路径:虚拟路径 镜像名称:版本号
如果对应的镜像不存在,就会先下载镜像,再创建容器,最后启动容器

14.查看docker所占磁盘

docker system df
图片.png

15.删除Docker所占的磁盘空间

只删除停止的容器和没有版本的镜像
docker system prune
删除所有的停止的容器和镜像
docker system prune -a

5.1. 基于Docker安装Tomcat

1.创建映射路径
mkdir -p /docker/tomcat/webapp8081
2.创建并运行Tomcat容器
docker run -d —name tomcat8081 -p 8081:8080 -v /docker/tomcat/webapp8081:/usr/local/tomcat/webapps/ tomcat:9.0.33
图片.png没有镜像,会自动下载镜像,再安装

查看是否安装成功
docker ps
图片.png
3.开放端口
开放的是8081,云服务器的安全组上

4.访问测试
http://39.105.189.141:8081/

5.2 基于Docker安装Mysql

1.创建并运行容器
docker run -d —name mysql3307 -e MYSQL_ROOT_PASSWORD=zzjava -p 3307:3306 mysql:5.7
图片.png
docker ps
图片.png
2.开放端口
开放3307端口

3.访问测试
VMWare中centos的ip 192.168.71.128
mysql密码是zzjava
在Windows中用navicat
图片.png

5.3基于Docker安装Redis

1.创建映射文件夹实现配置文件
mkdir -p /docker/redis/redis6380
图片.png
上传(拷贝)redis.conf配置文件
redis.conf配置文件下载:http://download.redis.io/redis-stable/redis.conf
图片.png

2.创建并运行容器
docker run -d —name redis6380 -p 6380:6379 -v /docker/redis/redis6380/redis.conf:/etc/redis/redis.conf redis:6.2.1 redis-server /etc/redis/redis.conf
图片.pngdocker ps
图片.png3.开放端口
开放端口6380
4.访问测试
在windows中的redis工具访问连接

6. Docker-Compose

是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们就可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

    6.1Docker-Compose下载安装

    sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
    图片.png
    2.授权
    sudo chmod +x /usr/local/bin/docker-compose
    3.软连接
    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    4.测试
    docker-compose -version
    图片.png

    6.2 基于Docker-Compose 实现Tomcat的创建

    4.3 基于Docker-Compose 实现Tomcat的创建
    1.实现dockerfile文件的编写
    vim /usr/local/tomcat.yml
    内容如下:严格安装格式要求
  1. version: "3.1"
  2. services:
  3. tomcat: #服务名称,不是容器名,只是在文件中方便观看是按个服务
  4. restart: always # 代表只要docker启动, 就会自动启动这个容器 相当于-restart参数
  5. image: tomcat:9.0.33 #依赖的镜像
  6. container_name: tomcat8082 # 容器名称 相当于 --name参数
  7. ports:
  8. - 8082:8080 #映射端口,可以指定多个,用多个-来写
  9. environment:
  10. TZ: Asia/Shanghai #指定时区
  11. volumes:
  12. - /docker/tomcat/webapp8082/:/usr/local/tomcat/webapps #挂载数据卷

2.执行文件创建容器
docker-compose -f /usr/local/tomcat.yml up -d

Docker - 图20

3.验证
docker ps
Docker - 图21
6.3 Mysql的安装
1.创建文件夹

  1. mkdir -p /var/lib/mysql
  2. mkdir -p /etc/mysql
  3. mkdir -p /var/log/mysql

2.创建Mysql的yml文件

  1. version: '3.1'
  2. services:
  3. mysql:
  4. container_name: "mysql3308"
  5. network_mode: "host"
  6. environment:
  7. MYSQL_ROOT_PASSWORD: "123456"
  8. image: "mysql:5.7"
  9. restart: always
  10. ports:
  11. - 3308:3306
  12. volumes:
  13. - "/var/lib/mysql:/home/ubuntu/docker/mysql/db"
  14. - "/etc/mysql:/home/ubuntu/docker/mysql/conf"
  15. - "/var/log/mysql:/home/ubuntu/docker/mysql/log"

3.执行命令
docker-compose -f /usr/local/mysql.yml up -d
4.开放端口
3308

6.4 Redis的安装

1.创建文件夹
mkdir -p /data/rabbitmq-compose/redis/data
上传redis.conf到 /data/rabbitmq-compose/redis
2.编写redis.yml文件

  1. version: '3.1'
  2. services:
  3. redis:
  4. image: redis:6.2.1
  5. container_name: redis6381
  6. restart: always
  7. ports:
  8. - 6381:6379
  9. networks:
  10. - mynetwork
  11. volumes:
  12. - /data/rabbitmq-compose/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
  13. - /data/rabbitmq-compose/redis/data:/data:rw
  14. command:
  15. /bin/bash -c "redis-server /usr/local/etc/redis/redis.conf "
  16. networks:
  17. mynetwork:
  18. external: true


3.执行命令
docker-compose -f /usr/local/redis.yml up -d
4.开放端口
6381
5.运行测试

6.5 RabbitMQ的安装

1.创建文件夹
mkdir -p /data/rabbitmq-compose/rabbitmq1/log
mkdir -p /data/rabbitmq-compose/rabbitmq2/log
2.编写rabbitmq.yml文件

  1. version: "3.1"
  2. services:
  3. rabbit01: #节点1主节点
  4. image: rabbitmq:management
  5. ports: #端口映射
  6. - "5672:5672"
  7. - "15672:15672"
  8. hostname: rabbit01 #这个要记住,后面加入集群的时候会用到
  9. volumes:
  10. - /data/rabbitmq-compose/rabbitmq1/log:/var/log/rabbitmq #挂载日志目录
  11. environment: #设置环境变量(配置文件参数),虚拟主机,用户名,密码
  12. - RABBITMQ_DEFAULT_VHOST=jenkin
  13. - RABBITMQ_DEFAULT_USER=jenkin
  14. - RABBITMQ_DEFAULT_PASS=123456
  15. rabbit02:
  16. image: rabbitmq:management
  17. ports:
  18. - "5673:5672"
  19. - "15673:15672"
  20. hostname: "rabbit02"
  21. links: #关联主节点的hostname,方便容器内互相访问
  22. - rabbit01
  23. volumes:
  24. - /data/rabbitmq-compose/rabbitmq2/log:/var/log/rabbitmq
  25. environment:
  26. RABBITMQ_DEFAULT_VHOST: "jenkin"
  27. RABBITMQ_DEFAULT_USER: "jenkin"
  28. RABBITMQ_DEFAULT_PASS: "123456"

3.执行命令
docker-compose -f /usr/local/rabbitmq.yml up -d
4.开放端口
5672、5673、15672、15673
5.测试