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

    1.docker三大概念

    容器,镜像,仓库
    仓库:存放镜像
    镜像:相当于类,模板
    容器:镜像的实例


    2.安装


    看中国docker文档,菜鸟教程
    修改配置文件:镜像源改为阿里云或者网易云(比较快)


    3.docker与虚拟机的区别


    4.常用命令


      帮助命令
        docker info
        docker --help
      镜像命令
        docker images 当前主机上的镜像
          PEPOSITORY:镜像的仓库源
          TAG: 镜像标签
          IMAGE ID:镜像ID
          CREATE:镜像创建时间
          SIZE:镜像大小

        

          # 以下参数可以一起用
          docker images -a all全部(镜像会分层)
          docker images -q 查询镜像ID
          docker images --digests 说明
          docker images --no--trunc 显示完整信息

        docker search 镜像名字 查找镜像(docker hub)  

        docker search -s 30 tomcat 查找星数超过30的
        docker search -s 30 --no-trunc tomcat 完整版说明
        docker search --automated 列出AUTOMATED参数ok的
        docker pull 镜像 下载镜像(默认:latest, 最新版本)
        docker rmi tomcat(:latest) 删除镜像 默认最新版本
        docker rmi -f tomcat 强制删除
        docker rmi -f hello-world ngaix 删除多个 镜像之间加空格
        docker -rmi -f (docker images -qa) 批量删除

      容器命令
        docker run [options] 镜像 实例化容器并启动(从镜像中实例出来)
          -it 虚拟化出新的终端并进入
          -i 以交互模式运行容器,通常与-t只用
          -t 为容器重修分配一个伪输入终端,通常与-i使用
          --name 为容器指定一个名称
          -d 后台运行(启动之后变退出,因为没前台交互)
            docker run -d centos /bin/sh -c 'while true;do echo hello;sleep2;done'
          -p 指定端口
            docker run -it -p 8888:8080 tomcat 指定端口:里面容器端口 镜像
            -d -p 后台启动
          -P docker run -P tomcat 随机分配端口:里面容器端口
        exit ---> 关闭容器并退出
        ctrl+p+q ---> 不关闭容器退出交互终端
        docker attach 容器id (/bin/bash 可以不写)---> 查看后台执行的容器并重新进入终端
        docker exec -t 容器id 命令(ls - l /tmp)---> 不进入容器内,返回命令在容器内的运行结果
          命令那写着 /bin/bash 那么同docker attach
        docker cp 容器id:文件路径 宿主机路径 ---> 拷贝容器中文件到宿主机
        docker top 容器id ---> 查看容器内运行的进程
        docker inspect 容器id ---> 查看容器内的细节 返回的json串
        docker logs 容器id ---> 打印日志
          -t 显示时间
          -f 不停追加,持续看
          --tail num 查看最后几条
        docker start id或者名字 ---> 启动容器
        docker stop id或者名字 ---> 关闭容器
        docker kill id或者名字 ---> 强制停止
        docker rm id ---> 删除已经停止的容器
          -f 强制删除容器,可以是运行中

           一次性删除多个容器
          docker rm -f$(docker ps -a -q) 
        docker ps -a -p|xargs docker rm
        docker restart ---> 重启容器
        docker ps [options] ---> 目前跑着的容器
          -l 上次运行的容器
          -a 全部运行及过往运行的容器
          - n num值 最近三次运行的容器
          -q 只显示容器编号
          --no-trunc 不截断输出
        docker commit -a='作者' -m='说明' 容器id 命名空间/镜像名字:版本

        

        

    5.关系图

      


    6.镜像的原理


      联合文件系统, Union文件系统是镜像的基础。基础镜像上叠加
        好处:共享资源,多个镜像假如都从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像

        

    7.数据卷(类似中主机虚拟机共享目录)


      目的:持久化保存,数据共享
      命令添加
        docker run -it -v /宿主机绝对路径:/容器内路径 镜像名
        容器内权限为可读可写
        docker run -it -v /宿主机绝对路径:/容器内路径:ro 镜像名
        容器内权限为只读
      dockerfile
        创建Dockerfile文件
          FROM centos
          VOLUME['/dataVolumeContainer', '/dataVolumeContainer2']
          CMD echo 'success'
          CMD /bin/bash
        docker build(创建新的镜像)
          docker build -f dockerfile路径 -t 命名
          docker build -f /mydocker/Dockerfile -t /llxx/centos

        docker run id (/llxx/centos的id)
        docker inspect id (/llxx/centos的id) 找到宿主机的默认目录

    8.dockerfile


      基础知识
        每条保留字指令必须大写且后边至少要跟随一个参数
        指令从上到下,顺序执行
        # 表示注释
        每条指令都会创建一个新的镜像层文件,并对镜像进行提交
        执行过程
          docker从基础镜像运行一个容器
          执行一条指令并对容器作出修改
          执行类似docker commit的操作提交一个新的镜像层
          docker再基于刚提交的镜像运行一个新容器
          执行dockerfile中的下一条指令直到所有指令执行完成
        保留关键字
          FROM base镜像
          MAINRAINER 镜像维护者的姓名和邮箱地址
          RUN 容器构建时需要运行的命令
          EXPOSE 对外端口
          WORKDIR 指定创建容器后,终端默认登陆的进来工作目录,一个落脚点(默认/)
          ENV 用来在构建镜像过程中设置环境变量
          ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和加压tar解压包
          COPY 类似ADD,拷贝文件和目录到镜像中
          VOLUME 容器数据卷,用于数据保存和持久化工作
          CMD 指定一个容器启动时运行的命令
            可以指定多个CMD,只有最后一个生效,CMD会被docker run之后的参数替换调
          ENTRYPOINT 指定一个容器启动时的命令
            目的和CMD一样,都是在指定容器启动程序及参数
          ONBUILD 当构建一个被继承Dockerfile运行命令,父镜像在被子进程继承后父镜像的onbuild被触发

  • 相关阅读:
    Makefile 之 $(Q)
    LeetCode-50-Pow(x, n)
    LeetCode-49. Group Anagrams
    全排列问题全面解析
    LeetCode-47. Permutations II
    LeetCode-46. Permutations
    LeetCode-43. Multiply Strings
    LeetCode-40. Combination Sum II
    LeetCode-39. Combination Sum
    LeetCode-36. Valid Sudoku
  • 原文地址:https://www.cnblogs.com/snow-l/p/11239553.html
Copyright © 2011-2022 走看看