zoukankan      html  css  js  c++  java
  • 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"]

     

  • 相关阅读:
    websocket
    svg vs canvas
    nw
    web sql
    web worker
    【转载】磁盘阵列详解
    【识记】开源软件系列
    【转载】从1.5K到18K 一个程序员的5年成长之路
    SQL中in和not in
    SQL Server select count(distinct *)
  • 原文地址:https://www.cnblogs.com/yangenyu/p/11740346.html
Copyright © 2011-2022 走看看