zoukankan      html  css  js  c++  java
  • docker学习

    以下操作基于Centos 7.6系统

    一、docker安装

    yum install -y docker

    二、配置docker不需要sudo

    如果还没有 docker group 就添加一个:
    sudo groupadd docker

    将用户加入该 group 内。然后退出并重新登录就生效啦。
    sudo gpasswd -a ${USER} docker

    重启 docker 服务
    sudo service docker restart

    切换当前会话到新 group 或者重启 X 会话
    newgrp - docker

    三、配置官方的中国加速镜像

    修改 /etc/docker/daemon.json,加上如下的键值:
    {
    "registry-mirrors": ["https://registry.docker-cn.com"]
    }

    重启docker服务
    sudo service docker restart

    四、Dockerfile基础命令

    FROM:指定基础镜像
    第一条指令。scratch是虚拟的镜像,表示一个空白的镜像。
    示例:
    FROM centos:7

    ENV:设置环境变量
    在其他指令中可以直接引用ENV设置的环境变量。
    ENV <key> <value>
    ENV <key1>=<value1> <key2>=<value2>...
    示例:
    ENV TZ=Asia/Shanghai LANG=zh_CN.UTF-8

    RUN:执行命令
    shell 格式: RUN <命令> ,RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
    exec 格式: RUN ["可执行文件", "参数1", "参数2"] 。run可以写多个,每一个指令都会建立一层中间镜像

    COPY:复制文本
    COPY <源路径>... <目标路径>
    COPY ["<源路径1>",... "<目标路径>"]
    <源路径> 可以是多个、以及使用通配符,通配符规则满足Go的filepath.Match 规则,如:COPY hom* /mydir/ COPY hom?.txt /mydir/
    <目标路径>使用 COPY 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。

    ADD:高级复制文件
    ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
    <源路径> 可以是一个 URL ,下载后的文件权限自动设置为 600 。

    CMD:容器启动命令
    shell 格式: CMD <命令>
    exec 格式: CMD ["可执行文件", "参数1", "参数2"...]

    ENTRYPOINT:入口点
    同CMD,指定容器启动程序及参数。
    通过--entrypoint 参数在运行时替换。

    用例一:使用CMD要在运行时重新写命令才能追加运行参数,ENTRYPOINT则可以运行时接受新参数。
    示例:
    FROM ubuntu:16.04
    RUN apt-get update
    && apt-get install -y curl
    && rm -rf /var/lib/apt/lists/*
    ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]

    ARG:构建参数
    与ENV不同的是,容器运行时不会存在这些环境变量。
    可以用 docker build --build-arg <参数名>=<值> 来覆盖。

    VOLUME:定义匿名卷
    VOLUME ["<路径1>", "<路径2>"...]
    VOLUME <路径>

    EXPOSE:暴露端口
    EXPOSE <端口1> [<端口2>...]
    EXPOSE :EXPOSE 仅仅是声明容器打算使用什么端口而已,并不会自动在宿主进行端口映射。

    WORKDIR:指定工作目录
    WORKDIR <工作目录路径>
    RUN cd /app
    RUN echo "hello" > world.txt
    两次run不在一个环境内,可以使用WORKDIR。

    USER:指定当前用户
    这个用户必须是事先建立好的,否则无法切换。
    USER <用户名>

    HEALTHCHECK:健康检查

    最后,通过Dockerfile创建镜像(最后的 . 表示指定镜像构建过程中的上下文环境的目录,并不是指定当前目录下的Dockerfile创建镜像)

    docker build -t <REPOSITORY_NAME>:<TAG> .

    示例:

    docker build -t mongo:3.2 .

  • 相关阅读:
    得到一个文件夹中所有文件的名称的几个方法(命令指示符, C++, python)
    C++ 使用命名规范
    【前端】直击源头的让你3秒理解并且会用Jsonp!!!
    React Native新手入门
    【方法】纯jQuery实现星巴克官网导航栏效果
    【方法】jQuery无插件实现 鼠标拖动切换图片/内容 功能
    【总结】前端框架:react还是vue?
    【总结】2017年当下最值得你关注的前端开发框架,不知道你就OUT了!
    【疑点】<p></p>标签为什么不能包含块级标签?还有哪些特殊的HTML标签?
    【总结】最常用的正则表达式大全,你要找的这里都有!
  • 原文地址:https://www.cnblogs.com/jianzm/p/11699755.html
Copyright © 2011-2022 走看看