• Docker入门案例


    Docker的使用

    docker是一个开源的应用容器引擎,基于go语言实现,可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后完全发布到任何Linux机器上,也可以实现虚拟化

    核心概念

    • Docker主机:安装了Docker程序的机器

    • Docker客户端:通过命令行或者其他工具使用Docker

    • Docker仓库:用来保存各种打包好的软件镜像

      • 中央仓库公有的HUB

    • Docker镜像:用于创建容器的

    • Docker容器:镜像的实例

    一、常用命令

    # 启动服务docker
    service docker start
    # 重启服务
    service docker restart
    # 停止服务
    service docker stop
    # 镜像容器操作
    # http://hub.docker.com 所有镜像都可查看
    # docker搜索mysql镜像
    docker search mysql
    # docker拉取mysql镜像可以指定版本默认为lastest
    docker pull mysql:8.0.17
    # 查看本机镜像
    docker images
    # 删除docker容器
    docker rm [container-id or container-name]
    # 删除docker镜像
    docker rmi [container-id or image-name]
    # 查看docker中的容器 -a全部all(无论有没有运行)
    docker ps -a
    # 新建并运行镜像 参数
    # t伪终端 i交互界面 p端口映射 --name容器名 d后台运行 P随机映射端口
    docker run -i -t -d -p 3306:3306 mysql
    # 进入容器目录
    docker attach [container-id or container-name]
    # 运行容器
    docker start [container-id or container-name]
    # 停止容器
    docker stop [container-id or container-name]
    # 查看容器日志
    # -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出 -e携带参数给容器
    docker logs -f [container-id or container-name]
    # 查看端口映射
    docker port [container-id or container-name]
    # 可以查看容器内的运行的进程
    docker top [container-id or container-name]
    # 查看容器底层的配置信息返回一个json文件
    docker inspect [container-id or container-name]
    # 用于容器与主机之间的数据拷贝
    docker cp [path] [container-id or container-name]:[path]
    docker cp [container-id or container-name]:[path] [path]
    # 推出并关闭容器/退出容器
    exit/ctrl+p+q

    # 登录mysql
    docker exec -it [container-id] /bin/bash

    二、容器数据卷

    共享目录类似挂载,容器与主机之间数据共享,二者对数据卷中的数据共享(可读可写可/指定)

    docker -it -v [/宿主机绝对路径]:[/容器内的目录]:[ro(宿主机只读不能写,主机可读可写) ] [image-name]
    docker -it -v /mydata-host:/mydata-container:ro tomcat

    DockerFile

    • ockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

      docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

    test.java ====>test.class

    Docker images ========> DockerFile

     

    docker bulid -f [dockerfile] -t [name]:[version]

    数据卷容器

    • 名命的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据的共享,这个父容器称为数据卷容器

    • 父容器的数据通过数据卷传递给子容器

    docker run -it --name dc02 --volumes-from dc01 my-centos-image

    三、Dockerfile

    Dockerfile的执行

    • 保留字指令,大写,后面至少要有一个参数

    • 从上到下、顺序执行

    • #表示注释

    • 每一个指令都会创建一个镜像

    • Docker从基础镜像运行一个容器

    • 执行一条指令并对容器作出修改

    • 执行类似docker commit 的操作提交一个新的镜像

    • docker再基于刚提交的镜像运行一个容器

    • 执行Dockerfile中的下一条指令知道所有的指令都执行完

    保留字指令

    • FROM 基础镜像当前镜像基于此镜像构建

    • MAINTAINER 镜像维护者姓名邮箱

    • RUN 容器构建时需要运行的命令

    • EXPOSE 端口

    • WORKDIR 登陆容器的默认目录

    • ENV 环境变量

    • ADD 构建时添加的本机文件可处理url和解压

    • COPY 同ADD 不能解压和处理url

    • VOLUME 数据卷

    • CMD 容器的运行命令,只有之后一个起作用,最后输入的会替换前面的(包括参数中带入的)

    • ENTRYOPOINT 同CMD,不会替换但会追加命令

    • ONBUILD 父镜像在被子镜像进行构建时会被触发

     

    例子:centos6.8------------->Dockerfile

    FROM scratch
    MAINTAINER The CentOS Project <cloud-ops@centos.org>
    ADD c68-docker.tar.xz /
    LABEL name="CentOS Base Image"
       vendor="CentOS"
       license="GPLv2"
       build-date="2016-06-02"

    # Default command
    CMD ["/bin/bash"]

     

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/yangenyu/p/11740346.html
Copyright © 2020-2023  润新知