Docker快速入门使用指南教程

定义和用处

  • 定义

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。

  • 用处
    1. 隔离性
    2. 轻便,便于维护管理
    3. 弹性,同时起用多个
    4. 可复用镜像

概念

  • 镜像

    **Docker 把应用程序及其依赖,打包在 image 文件里面。**只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

    image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。

  • 镜像仓库

    存储镜像的仓库,类似于Maven仓库。可在本地服务器部署镜像仓库,也可使用阿里云或官方仓库。

  • 容器

    **image 文件生成的容器实例,本身也是一个文件,称为容器文件。**关闭容器并不会删除容器文件,只是容器停止运行而已。

  • Dockerfile

    Dockerfile是一个文本文件,里面编写多条命令,这些命令描述了一个镜像构建的细节。Docker 根据 该文件生成二进制的 image 文件。

安装和配置

  • centos7安装

    yum install -y docker
    
  • 配置镜像仓库

    ​ 打开 /etc/docker/daemon.json,插入以下数据

    {
      "registry-mirrors": ["你的镜像地址(https://c6n8vys4.mirror.aliyuncs.com)"]
    }
    

使用命令

  • 拉取镜像

    docker pull redis:3.0

  • 查询镜像

    docker search redis

  • 上传镜像

    docker push redis:3.0

  • 删除镜像

    docker rmi redis:3.0

  • 制作springboot jar镜像

    1. 编写Dockerfile文件(参看Dockerfile 指令详解

      FROM  jdk:alpine-jdk8
      VOLUME /tmp
      ADD app.jar app.jar
      ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
      
    2. maven 打springboot的jar

    3. 将Dockerfile文件和jar放在linux同一目录,执行以下命令(其中-d代表名字 . 代表当前目录)

      docker build -d myApp:1.0 .
      
  • 创建并启用容器(其中-d代表后台运行,–name postgres96代表容器名字,-p 5433:5432代表宿主机端口为5433,容器内端口为5432,–network testnet代表使用桥连接中testnet的网络,–network-alias postgres96代表在testnet网络中的别名为postgres96,同样在该网络中的容器,可通过域名为postgres96来访问该容器)

    docker run -d --name postgres96 -p 5433:5432 --network testnet --network-alias postgres96 postgres:9.6.11
    
  • 启用容器

    docker start postgres96
    
  • 停止容器

    docker stop postgres96
    
  • 删除容器

    docker rm postgres96
    
  • 创建网络(参看Docker容器互访三种方式

    docker network create testnet
    
  • springboot 的日志挂载数据卷

    1. 日志配置文件中目录为 /logs/app
    2. docker 启动镜像时加上 -v /usr/local/app/logs:/logs/app
    docker run -d -v /usr/local/logs/app:/logs/app --name myApp -p 8081:8080 --network testnet myApp:1.0
    
  • 进入容器

    docker exec -it redis /bin/bash
    

更多命令参看Docker 命令大全

网络模式

Docker网络模式配置说明
host模式–net=host容器和宿主机共享Network namespace。
container模式–net=container:NAME_or_ID容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。
none模式–net=none容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式–net=bridge(默认为该模式),容器互访可使用同一网桥或创建连接

DockerFile

  • 指令
    • From:指定一个基准镜像,后续的指令运行于此基准镜像所提供的运行环境,必选
      • FROM image:version
    • MAINTAINER:作者信息,已废弃,使用LABEL替换,可选
      • MAINTAINER “auther info”
    • LABEL:键值的元数据
      • LABEL :
    • COPY:用于将宿主机工作目录复制到目标镜像的系统文件中
      • COPY …
      • COPY ["",…""]
    • ADD:类似于COPY,此外还能将URI文件下载并保存,此外本地的tar文件也会自动展开
    • WORKDIR:指定工作目录
      • WORKDIR
    • VOLUME:创建一个挂载点目录,会自动指定宿主机挂载目录
      • VOLUME
    • EXPOSE:用于为容器打开指定要监听的端口以实现与外部通信
      • EXPOSE
    • ENV:用于为镜像定义所需的环境变量,并可被Dockerfile中位于其他的命令(如ENV、ADD、COPY等)所调用
      • 调用格式为 v a r i a b l e n a m e 或 variable_name或 variablename{variable_name}
      • EVN = …
      • 也可通过 run 或 build 命令加 -e 方式输入参数
    • RUN:docker build 运行的命令,如压缩包的解压,但基于基础镜像的命令,会逐一运行,以下第一种使用shell启动,第二种不会,可以加入"/bin/bash"
      • RUN
      • RUN ["", “”, “”]
    • CMD:docker run 运行的命令,存在多个CMD时,只运行最后一个,以下第一种使用shell启动,启动后,进程不为1,docker无法停止,但默认会转为第二种,加"/bin/bash",第二种ID为1,可以加入"/bin/bash",以便能执行sh的命令,但会变成shell子进程,可以使用exec方式,第三种为ENTRYPOINT指令提供默认参数
      • CMD
      • CMD ["", “”, “”]
      • CMD ["", “”]
    • ENTRYPOINT:类似于CMD,指定默认运行程序,与CMD不同的是ENTRYPOINT启动的命令,不会被docker run 后续的命令覆盖,除非使用–entrypoint,此外CMD中的数据会作为ENTRYPOINT的参数使用
      • ENTRYPOINT
      • ENTRYPOINT ["", “”, “”]
    • USER:执行命令时指定的用户,但该用户需要在linux中存在
      • USER |
    • HEALTHCHECK:检查主进程工作状态健康与否,且可以加入起始时间等待或间隔尝试等参数
    • SHELL:运行程序默认的程序
    • STOPSIGNAL:发送docker停止的信号
    • ARG:只在build使用,且通过 --build-arg =
    • ONBUILD:在Dockerfile中定义一个触发器,其他的镜像调用本镜像时其他镜像会执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值