Docker、DockerFile、DockerCompose

什么是Docker?

  • 定义:是一个与打包软件及软件相关环境的一个容器工具

  • 作用:

    • 解决软件在不同操作系统中的兼容性问题

  • 与虚拟机的区别

    • docker启动快

    • docker体积小

    • docker共享机器资源,能合理利用资源

  • Docker 架构:是CS架构

    • 镜像:是软件及软件环境的压缩包

    • 容器:是软件运行后的一个进程

    • Server:服务端

    • Client:客户端

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [
    "localhost:5000"
  ],
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

守护进程相关命令

  • systemctl stop docker

  • systemctl start docker

  • systemctl restart docker

  • systemctl enable docker 开启自起

  • systemctl disable docker 开启不自起

镜像与容器的区别:

  • 镜像是一个软件运行前的状态,容器是运行后的状态

  • 镜像是只读不可以写,容器可以读可以写

镜像相关的操作命令【精通】

  • docker images 查看本地有那些镜像

  • docker pull 下载一个远程镜像到本地

  • docker search 搜索镜像

  • docker rmi 删除镜像

    • docker rmi 镜像名称:版本

    • docker rmi 镜像ID

    • docker rmi 镜像ID缩写

  • docker save 把镜像打成一个压缩包

    docker save java:8 -o java.zip
  • docker load 导入一个压缩包成镜像

    docker load -i java.zip
  • docker build 构建一个镜像

    docker build -f HelloDockerFile -t heima42:1.0 .

docker 容器相关的命令【精通】

  • docker ps 查看运行中的容器列表

  • docker ps -a 查看所有状态的容器列表

  • docker rm 删除

    • docker rm 容器名称

    • docker rm 容器ID

    • docker rm 容器ID缩写

  • docker rm -f 强制删除,能删除运行中的容器

  • docker stop 停止容器

  • docker start 启动容器

  • docker logs -f 实时查看日志

  • docker exec -it 容器名称 bash 退出直接输入 exit

docker run 常用参数【精通】

  • --name 设置名称

  • -p 设置端口映射

    -p 808:80 -p 809:443 nginx   映射多个端口
  • -d 后台运行

  • -v 给容器添加一个数据卷

  • -e 设置容器内部的环境变量

常用软件的docker run【精通】

  • nginx

    docker run -d --name nginx42 -p 808:80 -p 809:443 nginx
    docker run -d --name nginx42 -p 808:80 -p 809:443 -v d:/html:/usr/share/nginx/html nginx
  • redis

    docker run -d --name redis42 -p 6379:6379 redis
  • mysql

    docker run -d --name mysql42 -p 3307:3306 -v E:\教学资料\2022-最新\06-服务框架+实战\01-服务框架\day03-Docker\资料\42\data:/var/lib/mysql -v E:\教学资料\2022-最新\06-服务框架+实战\01-服务框架\day03-Docker\资料\42\conf\hmy.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.25
    

常用Linux指令

  • 查找文件中的文本并替换

    sed -i 's#Welcome to nginx#欢迎您#g' index.html
    sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
    

什么是数据卷

  • 定义:就是宿主机上的一个特殊文件夹

  • 种类:

    • 内置目录数据卷 ,使用docker volume 操作的就是内置

    • 自定义目录数据卷 -v 直接指定的绝对路径是自定方式

  • 作用

    • 数据存储到宿主机上,防止丢失

    • 用于容器之间进行数据共享

  • 常用命令

    • create 创建一个volume

      inspect 显示一个或多个volume的信息

      ls 列出所有的volume

      prune 清理本地未使用的数据卷

      rm 删除一个或多个指定的volume

  • 案例:

    • 挂载nginx容器的html文件到宿主机的d:/html

什么是Dockerfile【精通】

  • 定义:用于制作一个新镜像文件的脚本语言

  • 镜像文件的结构:镜像是有多层的文件叠加而成,一个镜像文件必定有有一个最底层的基础镜像和最顶层的入口

    • 基础镜像:提供系统级的函数库和配置,一般是有docker官网提供,我们直接用

    • 顶层入口:镜像中包含软件的启动命令

  • dockerfile的常用关键字

    指令说明示例
    FROM指定基础镜像FROM centos:7
    ENV设置环境变量,可在后面指令使用ENV key value
    COPY拷贝本地文件到镜像的指定目录COPY ./mysql-5.7.rpm /tmp
    RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install vi
    EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
    ENTRYPOINT镜像中应用的顶层入口启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar
  • dockerfile相关语法

    • dockerfile使用文本文件来进行源码的存储,文本文件一般不写后缀名

    • 文件格式:

      • 每行只写一条镜像命令

      • 每行必须使用dockerfile关键字开头

      • dockerfile的关键字必须全部大写

      • dockerfile文件中的第一行必须指定基础镜像,既第一行必须是FROM

      • dockerfile文件中最后一行必须是指定程序的启动入口,既必须是ENTRYPOINT

SpringBoot项目的jar制作一个镜像【精通】

  • 指定基础镜像

  • 安装jdk

    • 拷贝jdk

    • 解压jdk

    • 配置环境变量

      • JAVA_HOME

      • PATH

  • 拷贝部署的程序

  • 指定启动入口

FROM centos:7
RUN mkdir /heima42
COPY ./jdk8.tar.gz /heima42
RUN cd /heima42 && mkdir jdk8
RUN cd /heima42 && tar -xf ./jdk8.tar.gz && mv ./jdk1.8.0_144 ./java8
ENV JAVA_HOME=/heima42/java8
ENV PATH=$PATH:$JAVA_HOME/bin
COPY ./docker-demo.jar /heima42
ENTRYPOINT java -jar /heima42/docker-demo.jar
docker build -f HelloDockerFile -t heima42:1.0 .

什么是Docker Compose【精通】

  • 定义:就是用于批量创建容器、停止容器、删除容器等批量操作容器的软件,是一个容器编排工具

  • 作用:简化对大量容器的操作成本

  • Docker Compose实际就是一个yml文件,格式如下:

    • 第一行始终是version

    • 第一行始终是services

  • 常用命令

    • docker-compose up -d 创建容器并运行

    • docker-compose start 运行容器

    • docker-compose stop 停止容器

    • docker-compose down 停止并删除容器

新需求

新项目需要大家一些环境,mysql ngxin redis

version: "3.0"
services:
  heima42-nginx:
    container_name: "heima42-nginx"
    ports:
      - 808:80
      - 809:443
    volumes:
      - d:/html:/usr/share/nginx/html
    image: nginx
  heima42-redis:
    container_name: "heima42-redis"
    ports:
      - 6379:6379
    image: redis
  heima42-mysql:
    container_name: "heima42-mysql"
    ports:
      - 3307:3306
    volumes:
      - E:\教学资料\2022-最新\06-服务框架+实战\01-服务框架\day03-Docker\资料\42\data:/var/lib/mysql
      - E:\教学资料\2022-最新\06-服务框架+实战\01-服务框架\day03-Docker\资料\42\conf\hmy.cnf:/etc/mysql/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    image: mysql:5.7.25

如何搭建私服【熟练】

  • 拉取 registry镜像

  • 运行

     docker run -d -p 5000:5000 registry
  • 访问http://localhost:5000/v2/_catalog

  • 配置docker的私服地址

    "insecure-registries": [
        "localhost:5000"
      ]
  • 上传

    • 声明镜像上传的私服地址

      docker tag redis localhost:5000/r1:1.0
    • 上传

      docker push localhost:5000/r1:1.0
  • 下载

    docker pull localhost:5000/r1:1.0
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值