首页 > 其他分享 >docker学习

docker学习

时间:2023-02-09 14:55:16浏览次数:53  
标签:容器 -- 学习 ubuntu 镜像 docker ID

基础命令

  • 基础概念

    虚拟机
    • 资源占用多
    • 启动慢
    linux容器

    linux容器不是模拟一个完整的操作系统,而是对进程进行隔离

    启动快,资源占用少,体积小

    docker

    docker是linux容器的一种封装,提供简单易用的容器使用接口

    原理:Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样

    用途:提供一次性的环境,提供弹性的云服务,组建微服务架构

    docker info 查看信息
    docker version 查看版本

  1. 镜像(操作系统包)

    • 概念

      镜像是一种虚拟的概念,实际并非由一个文件组成,而是由一组文件系统组成(多层文件系统联合组成)

      镜像构建时,会一层层构建,前一层是后一层的基础,每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层,类似于git(提交)

    • 列出镜像列表

      docker images / docker image ls -a 
      
    • 拉取镜像

       docker  pull  centos
      
    • 查找镜像

      docker search centos  
      
    • 删除镜像

       docker  rmi d52bdbc72669(images ID)
      
    • 更新镜像

      docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
      -m: 提交的描述信息
      -a: 指定镜像作者
      e218edb10161:容器 ID
      runoob/ubuntu:v2: 指定要创建的目标镜像名
      
    • 构建镜像

      使用dockerfile去构建镜像
      docker build -t runoob/centos:6.7 .
      -t :指定要创建的目标镜像名
      . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
      
    • 设置镜像标签

      docker tag 860c279d2fec runoob/centos:dev
      docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
      
    • 推送镜像

      docker tag ubuntu:18.04 username/ubuntu:18.04
      docker push username/ubuntu:18.04
      docker search username/ubuntu:18.04
      
    • 查看镜像、容器、数据卷所占用的空间。

       docker system df 
       docker diff  containername  //查看容器存储层改动
      
    • 虚悬镜像

      docker image prune //删除虚悬镜像
      docker image ls -f dangling=true //查找虚悬镜像
      

      image

    • 查看镜像内的历史记录

      docker history  imagename
      
  2. 容器(操作系统的一个实例)

    • 容器

    image 文件生成的容器实例,本身也是一个文件,称为容器文件

    一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已

    每一个容器运行时,是以镜像为基础,在其上创建一个当前容器的存储层(容器存储层)

    • 启动容器

      docker run -itd -rm -P --restart=always ubuntu:15.10 /bin/bash
      -i: 交互式操作。
      -t: 终端。
      -d: 后台运行
      -P 端口随机映射本地
      -p 容器内部端口绑定到指定的主机端口
      -rm 这个参数是说容器退出后随之将其删除
      --restart具体参数值详细信息:
      no        // 默认策略,容器退出时不重启容器;
      on-failure   // 在容器非正常退出时(退出状态非0)才重新启动容器;
      on-failure:3 // 在容器非正常退出时重启容器,最多重启3次;
      always     // 无论退出状态是如何,都重启容器;
      unless-stopped // 在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。
      ubuntu:15.10: 这是指用 ubuntu 15.10 版本镜像为基础来启动容器。
      /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

    • 启动已停止运行容器

      docker ps -a

    • 启动,关闭,重启容器

      docker stop 容器ID
      docker start 容器ID
      docker restart 容器ID

    • 进入容器

      attach
      exec 推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止
      docker exec -it dev-redis /bin/bash

    • 导入导出容器

      导出容器
      docker export 1e560fca3906 > ubuntu.tar
      导入容器快照
      docker import http://example.com/exampleimage.tgz example/imagerepo

    • 删除容器

      docker rm -f 容器ID
      -f: 强制
      清理所有停止的容器
      docker container prune

    • 查看容器端口

      docker port 容器ID

    • 查看容器进程

      docker top 容器ID

    • 查看容器日志

      docker logs -f 容器ID

    • 容器自启动

      docker update --restart=always <containerName>

    • 容器互联

      新建网络
      docker network create -d bridge dev-net
      -d: 参数指定 Docker 网络类型,有 bridge、overlay。
      运行一个容器加入网络中
      docker run -itd --name test1 --network dev-net ubuntu /bin/bash

    • 列出本机所有容器,包括终止的容器

      docker container ls --all
      
  3. Dockerfile

    • FROM 和RUN

      FROM 基于什么镜像
      RUN 用于执行后面跟着命令行命令
      <!--例如-->
      FROM centos
      RUN yum -y install wget \
          && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
          && tar -xvf redis.tar.gz
      
    • COPY

      COPY 从上下文目录中复制文件或目录到容器指定位置
      <!--例如-->
      COPY hom* /mydir/
      COPY hom?.txt /mydir/
      
    • ENTRYPOINT

      类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖
      ENTRYPOINT ["nginx", "-c"] # 定参
      CMD ["/etc/nginx/nginx.conf"] # 变参 
      
    • ENV

      设置环境变量
      ENV NODE_VERSION 7.2.0
      
    • VOLUME

      定义匿名数据卷
      	避免重要数据
      	避免容器不断变大
      VOLUME <路径>
       -v 参数修改挂载点
      
    • WORKDIR

      WORKDIR <工作目录路径>
      
    • LABEL

      LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式,语法格式如下:xxxxxxxxxx 
      LABEL org.opencontainers.image.authors="runoob"
      
  4. 数据卷(volume)

    数据卷是一个多个容器使用的特殊目录

    • 数据卷可以在容器之间共享和重用
    • 对数据卷的修改会立马生效
    • 对数据卷的更新,不会影响镜像
    • 数据卷默认会一直存在,即使容器被删除
    • 创建数据卷

      docker volume create my-col

    • 查看数据卷

      docker volume ls 
      
    • 查看指定数据卷的信息

      docker volume inspect my-col  
      查看容器的信息
      docker inspect containername
      
    • 创建一个容器,并加载一个数据卷到指定目录

      $ docker run -d -P \
          --name web \
          # -v my-vol:/usr/share/nginx/html \
          --mount source=my-vol,target=/usr/share/nginx/html \
          nginx:alpine
      
    • 挂载一个主机目录作为数据卷

      使用--mount 标记可以指定挂在一个本地主机的目录到容器中
      $ docker run -d -P \
          --name web \
          # -v /src/webapp:/usr/share/nginx/html \
          --mount type=bind,source=/src/webapp,target=/usr/share/nginx/html \
          nginx:alpine
      
      -v 参数时如果本地目录不存在 Docker 会自动为你创建一个文件夹,现在使用 --mount 参数时如果本地目录不存在,Docker 会报错 
      
    • 删除数据卷

      docker volume rm my-vol
      // 无主的数据卷删除
      docker volume prune
      

标签:容器,--,学习,ubuntu,镜像,docker,ID
From: https://www.cnblogs.com/blackamon/p/17105273.html

相关文章

  • 【sip】sip学习--注册流程
    1000(192.168.1.119)Kamailio(192.168.1.88)|||1.REGISTER||-----------------......
  • glsl进阶学习8
    我们来画出平躺着的圆环//SDFfloatvalue1=sqrt(x*x+y*y)-r1;floatvalue2=sqrt(value1*value1+z*z)-r2;returnvalue2;但是。。这个东西怎么旋转平移喃。。我还需要再......
  • Pbr学习 没有环境贴图的pbr部分
    从learnOpenGL学习的D部分正态分布函数DD,或者说镜面分布,从统计学上近似的表示了与某些(中间)向量hh取向一致的微平面的比率。举例来说,假设给定向量hh,如果我们的微平面中有35%......
  • glsl进阶学习5
    看了一位老师傅的水波纹shader大概讲的是距离P的距离关联一些距离时间因素作为sin(r)中的r 然后得到z这个z用颜色来表达 感觉又多了一点3维函数的感觉之前都考虑的是......
  • glsl进阶学习 一
    shadertoy上面的环境 一开始会有一个逻辑尺寸和画布尺寸的比值uv先来尝试一个plane这主要计算一个t P是平面上一个点另一个点是光线与平面交点叫P1吧P1=o+dt  t是......
  • 自我介绍与学习心得
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2023learning这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/2023learning/homework/1......
  • 自我介绍和学习记录
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2023learning这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/2023learning/homework/1......
  • 自我介绍及学习记录
    |这个作业属于哪个课程|https://edu.cnblogs.com/campus/fzzcxy/2023learning/join?id=CfDJ8GXQNXLgcs5PrnWvMs4xAGN4cHWWqRMNY7CzDMC-49n8j6IT5cvnqlNnraGz8DcrOqn-fXMeSp......
  • C# 学习async/await(个人理解)
    await:等待的意思async:异步(非同步) 当我们方法内部  存在await的时候,就返回出去执行下一步,等await后面的方法执行完毕在执行await下面的方法 一、我们......
  • 20230112_每日学习记录
    20230112Notepad++使用技巧之--把没有html规范格式的html文本变成有缩进的规范格式:下载插件XMLToolsrestartNotepad++选中文本,使用快捷键:Ctrl+Shift+Alt+......