什么是Docker和Docker-Compose?

Docker的构成

  1. Docker仓库:https://hub.docker.com

  2. Docker自身组件

    Docker Client:Docker的客户端
    Docker Server:Docker daemon的主要组成部分,接受用户通过Docker Client发出的请求,并按照相应的路由规则实现路由分发
    Docker镜像:Docker镜像运行之后变成容器(docker run)

Docker的基本组成

  • 镜像
    Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
  • 容器
    Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 仓库
    仓库(Repository)是集中存放镜像文件的场所。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
    最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等。
    docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

镜像的特性

在这里插入图片描述
在这里插入图片描述
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

docker基础命令

systemctl start docker启动docker
systemctl stop docker停止docker
systemctl restart docker重启docker
systemctl status docker查看docker状态
systemctl enable docker开机启动
docker info守护进程的系统资源设置
docker search 镜像名称docker仓库的查询
docker pull 镜像名称下载docker仓库
docker imagesdocker镜像的查询
docker rmi 镜像名称iddocker镜像的删除
docker ps容器的查询
docker run 镜像名称+版本号(docker run mysql:8.0.29)容器的创建启动
docker start/stop容器启动停止

systemctl 是管理 Linux 的 systemd 服务的工具,systemctl 只能用于linux系统。

run命令扩展

在这里插入图片描述

单一容器管理

每个容器被创建后,都会分配一个CONTAINER ID作为容器的唯一标示,后续对容器的启动、停止、修改、删除等所有操作,都是通过CONTAINER ID来完成偏向于数据库概念中的主键。

docker ps --no-trunc查看
docker start/stop CONTAINER ID启动/停止
docker start/stop wordPress通过容器别名启动/停止
docker kill 容器id或容器名强制停止容器
docker rm 容器id删除已停止的容器
docker inspect wordPress查看容器所有基本信息
docker logs wordPress查看容器日志
docker stats wordPress查看容器所占用的系统资源
docker exec 容器名 容器内执行的命令容器执行命令
docker exec -it 容器名 /bin/bash登入容器的bash(我们可以使用该命令来创建mysql数据库,如下所示)

在这里插入图片描述

docker-compose编排

compose是docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。需要定义一个yaml格式的配置文件docker-compose.yaml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器

compse的核心概念

  • 一个文件:docker-compose.yaml
  • 两个要素:
    • 服务:一个个应用容器实例,比如订单微服务,redis容器,mysql容器。
    • 工程:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yaml文件中定义。

三个步骤

  • 编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
  • 使用docker-compose.yml定义一个完整的业务单元,按照先后顺序安排好整体应用中的各个容器服务
  • 最后,执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线

compse常用命令

docker-compse -h查看帮助
docker-compse up启动所有docker-compose服务
docker-compse up -d启动所有docker-compose服务并后台运行
docker-compse down停止并删除容器、网络、卷、镜像
docker-compse start启动服务
docker-compse pause暂停服务
docker-compse unpause恢复暂停
docker-compse rm删除容器
docker-compse stop停止服务
docker-compse restart重启服务
docker-compse config检查配置
docker-compse config -q检查配置,有问题才有输出
docker-compse logs yml里面的服务id查看容器输出日志
docker-compse top展示当前docker-compose编排过的容器进程
docker-compse ps展示当前docker-compose编排过的运行的所有容器
docker-compse exec yml里面的服务id /bin/bash进入容器实例内部

如何编写docker-compose

官网:https://docs.docker.com/compose/compose-file/03-compose-file/。自然就是参考官网了,如果忘记了相关的语法看官网就行了,这个东西没必要深究,会使用就可以了。而且,如果使用了GoLand编译器安装了Docker插件之后编写docker-compose的时候都会有提示的。

  • 案例如下:
version: '3.0'
services:
  mysql8:
    image: mysql:8.0.29
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
#      设置初始化脚本
      - ./script/mysql/:/docker-entrypoint-initdb.d/
    ports:
#      - 映射为13316端口
      - "13316:3306"
  redis:
    image: 'bitnami/redis:latest'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - '6379:6379'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值