Docker技术总结

01. 镜像相关命令

  • 查看镜像: 查看本地所有的镜像

    docker images
    docker images -q  #查看所有镜像的id
    
  • 搜索镜像: 从网络中查找需要的镜像

    docker search 镜像名称
    
  • 拉取镜像

    docker pull 镜像名称:版本号
    
  • 删除镜像: 删除本地镜像

    docker rmi 镜像id  #删除指定本地镜像
    docker rmi `docker image -q`  #删除所有本地镜像
    

02. 容器相关命令

  • 查看容器

    docker ps  #查看正在运行的容器
    docker ps -a  #查看所有容器
    
  • 创建并启动容器

    docker run 参数 容器名 镜像
    
  • 参数说明:

    • -i: 保持容器运行.通常与 -t 连用,加入这两个参数后,容器创建后自动进入容器中,退出( exit )容器后,容器自动关闭

    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

    • -d: 以守护 (后台) 模式运行容器,创建一个容器在后台运行,进入容器,退出后,容器不会关闭

      • 进入容器:

        docker exec 参数 容器id 路径
        
    • -it: 创建的容器一般称为交互式容器

    • –name: 为创建的容器命名

  • 停止容器:

    docker stop 容器名
    
  • 启动容器:

    docker start 容器名
    
  • 删除容器:

    docker rm 容器名 | id  #无法删除正在运行的容器
    docker rm `docker ps -aq`  #删除所有的容器
    
  • 查看容器信息:

    docker inspect 容器名称
    

03. 数据卷

  • 是宿主机中的一个目录或文件

  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步

  • 作用:

    • 容器数据持久化
    • 外部及其和容器间的通信
    • 容器之间的数据交换
  • 实例:

    //  创建启动容器时,使用 -v 参数设置数据卷
    docker run 参数 容器名 -v 宿主机目录(文件):容器内目录(文件) 镜像 路径
    
    • 目录必须是绝对路径
    • 如果目录不存在,会自动创建
    • 可以挂载多个数据卷
3.1 数据卷容器
  • 方便多个容器进行数据交换

  • 创建启动c3数据卷容器,使用 -v 参数设置数据卷目录

    docker run -it --name=c3 -v 宿主机目录:容器目录 centos:7 /bin/bash
    
  • 创建启动 c1 c2 容器,使用 --volumes-from 参数,让其他容器继承该容器的数据卷

    docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
    docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
    
  • 创建一个容器,挂载一个目录,让其他容器继承自该容器(–volime-from)

  • 通过简单方式实现数据卷配置

04. 应用部署

#第一步: 拉取镜像
docker pull 镜像名
#第二步: 创建目录并进入目录
mkdir 目录名
#第二步: 应用部署
docker run -id -p 宿主机端口:容器端口 容器名 -v $pwd/data:var/lib/mysql  镜像
#部署mysql
docker run -id -p 3306:3306 --name=c_mysql -v /root/data:/root/data -e MYSQL_ROOT_PASSWORD=1234 mysql

05. 镜像制作

  • 镜像的本质是多个叠加的文件系统,最底层的称为基础镜像,可以提高复用性

  • 容器转为镜像:

    #容器转为镜像:
    docker commit 容器id 镜像名称:版本号
    #压缩镜像:
    #挂载在镜像上的文件无法被压缩
    docker save -o 压缩文件名称 镜像名称:版本号
    #解压镜像:
    docker load -i 压缩文件名称
    
  • Dockerfile:

    • 概念: 是一个文本文件,包含了一条条指令,每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像

    • 常用关键字:

      关键字作用备注
      FROM指定父镜像基于那个镜像来构建
      MAINTAINER作者信息标注作者
      LABEL标签表名dockerfile的标签,最终可以在docker image中看见
      RUN创建执行命令默认 /bin/bash
      CMD容器启动执行命令提供启动容器启动时的默认命令,和ENTRYPOINIT配合使用,格式: command param1 params
      ADD添加文件build的时候添加文件到umage中,也可以添加远程文件
      VOLUME定义外部可以挂载的数据卷指定容器的那些目录可以挂载到系统文件,启动的时候使用 -v 绑定数据卷
      EPOSE暴露端口定义容器运行时监听的端口, 启动容器时使用 -p 来绑定端口
      WORKDIR工作目录进入容器时停靠的位置
    • 自定义Dcokerfile文件:

      # 1.定义父镜像
      FROM java:8
      # 2.定义作者信息
      MAINTAINER 信息
      # 3.定义容器启动执行的命令
      CMD java -jar jar包
      
    • 执行文件:

      # . 将来寻址的路径
      docker build -f 文件位置 -t 镜像名称:版本号
      

06. 服务编排

  • 按照一定的业务规则批量管理容器

  • Docker Compose:

    • 编排多容器的分布式部署工具,提供命令集管理容器化的完整开发周期
  • 安装Docker Compose

    // 安装
    sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    // 设置权限
    chmod +x  docker-compose
    
    //  查看版本号
    docker-compose -v
    
    // 卸载Docker Compose
    rm /use/local/bin/docker-compose
    
  • 部署Spring boot项目:

    • 发布spring cloud时的启动顺序问题解决方案

    • 使用步骤:

      • 1, 利用Dockerfile定义运行环境镜像

      • 2,使用docker-compose.yml定义组成的应用的各服务

        // 版本号
        version: '3'
        // 定义容器名
        services:
          eureka-server:
            image: microservice/eureka-server
            build: platform-cloud-eureka
            volumes:
              - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
            restart : always
            ports:
              - "8080:8080"
            privileged: true
            networks:
              - miconet
        
          config-server:
            image: microservice/config-server
            build: platform-cloud-config
            volumes:
              - ./logs:/logs
              - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
            restart : always
            ports:
              - "8081:8081"
            links:
              - "eureka-server"
            command: sh -c './wait-for-it.sh eureka-server:8080 -t 0  -- java -Djava.security.egd=file:/dev/./urandom -jar /app.jar'
            privileged: true
            networks:
              - miconet
        
         system-server:
            image:  microservice/system-server
            build: platform-cloud-system-server
            volumes:
               - ./logs:/logs
               - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
            restart : always
            ports:
              - "8082:8082"
            command: sh -c './wait-for-it.sh config-server:8081 -t 0  -- java -Djava.security.egd=file:/dev/./urandom -jar /app.jar'
            privileged: true
            networks:
              - miconet
        
        networks:
            miconet:
        
      • 3,运行docker-compose.up

        docker-compose up -d/后台运行
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值