博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

docker学习笔记

Posted on 2019-07-24 17:29  呼兰河畔  阅读(125)  评论(0编辑  收藏  举报

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被触发