美文网首页
容器、镜像

容器、镜像

作者: 杨健kimyeung | 来源:发表于2020-07-23 19:26 被阅读0次

    容器技术VS虚拟机技术

    特性 容器 虚拟机
    启动 秒级 分钟级
    硬盘使用 一般为 MB 一般为 GB
    性能 接近原生 弱于
    系统支持量 单机支持上千个容器 一般几十个

    底层区别(隔离)

    容器应用层(进程级别)

    虚拟机是物理资源层的(系统级别)

    应用场景

    • 部署单体应用
    • 持续集成与持续部署
    • 微服务

    安装

    运行测试(已nginx为例)

    下载镜像

    docker  pull  nginx
    

    运行容器

    docker  -p 80:80 -d nginx
    

    说明

    • -p 表示容器映射宿主机端口 左边宿主机端口 : 右边容器端口
    • -d 表示后台运行
    • nginx 表示镜像的名称

    基本概念

    概要

    镜像 (image)

    容器(Container)

    仓库(Repository)

    镜像

    一个镜像要一个组文件组成,轻量级,可独立执行的软件,用来保存系统的配置文件,应用,

    只能读

    运行tomcat

    • 运行的环境(os系统,jdk)
    • 依赖库
    • 配置文件

    容器

    进行运行产生容器

    仓库

    存放镜像的

    镜像

    概要

    • 下载镜像
    • 查看本地镜像
    • 删除本地镜像

    下载镜像

    语法格式

    docker  pull  镜像名:[版本号] 
    

    说明

    版本号: 如果不写表示下载最新的版本 latest

    栗子

    docker  pull   mysql:8.0.17 
    docker  pull   nginx
    

    查看本地镜像

    语法格式

    docker images 
    

    栗子

    docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              0901fa9da894        11 days ago         132MB
    mysql               8.0.17              b8fd9553f1f0        10 months ago       445MB
    

    删除本地镜像

    语法格式

    docker  rmi [选项] 镜像ID | 镜像名 | 长ID
    

    选项

    选项 说明
    -f 强制删除

    栗子

    先删容器  在删除镜像
    
    #  通过名称删除镜像
    docker  rmi -f nginx:
    # 通过id删除镜像
    docker  rmi  0901fa9da894
    #  指定版本的删除
    docker  rmi mysql:8.0.17 
    

    其它命令

    删除无用的镜像

    docker rmi  | grep '<none>' |   awk '{print $3}' | xargs 
    

    删除没有使用的镜像

    docker  rmi  'docker images -q'
    

    容器操作

    启动容器

    语法格式

    #  新建容器并且启动容器
    docker  run [选项]   镜像名[:版本号] 命令 参数
    
    #  启动停止的容器
    docker  start  容器的id或者容器的名称
    

    选项

    选项 说明
    -d 后台运行 返回容器的长ID
    --name='容器名称' 给容器七名字 ,如果不给,系统会默认给容器起名称
    -p 映射端口 左边宿主机的端口:右边容器的端口
    -v 宿主机的目录:容器的目录 数据卷,将容器中目录映射到宿主机

    备注:

    run 如果本地没有该镜像,直接从仓库下载

    栗子

    docker run  --name='nginx-container' -p 80:80 -d nginx
    

    进入容器

    进入容器

    说明

    使用exec命令进入容器

    语法格式

    docker  exec [选项]  容器的名称或者ID  参数 /bin/sh   /bin/bash
    

    选项

    选项 说明
    -it 使用交互和命令的方式进入容器

    栗子

    root@iZbp11fwf4mzq0vmztatbiZ:~# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
    6e6d703e0786        nginx               "/docker-entrypoint.…"   23 minutes ago      Up 23 minutes       0.0.0.0:80->80/tcp   nginx-container
    
    docker exec  -it 6e6d703e0786  /bin/bash
    

    查看容器

    说明

    查看所有运行的或者停止的容器

    默认情况下查看正在运行的容器

    语法格式

    docker ps [选项]
    

    选项

    选项 说明
    -a 显示所有的容器的

    停止容器

    语法格式

    docker  stop  容器的名称或者容器的ID
    

    栗子

    root@iZbp11fwf4mzq0vmztatbiZ:~# docker  ps
    CONTAINER ID      ...       PORTS                NAMES
    6e6d703e0786                0.0.0.0:80->80/tcp   nginx-container
    
    docker  stop  6e6d703e0786
    docker  stop  nginx-containe
    

    删除容器

    语法格式

    docker rm [选项] 容器的名称或者ID ... 容器名称或者容器ID
    
    选项 说明
    -f 强制删除(如果容器在运行,停止容器,在删除容器)

    栗子

    # 删除正在运行的容器
    docker stop 6e6d703e0786
    docker rm 6e6d703e0786 
     #  等价于
    docker rm -f 6e6d703e0786
    

    删除所有容器

    docker  rm -f 'docker ps -aq'
    

    Dockerfile

    原生的定制镜像

    • 先有个基础镜像(ubuntu)

      docker  pull  ubuntu
      
    • 运行容器

      docker run --name='ubuntu-jdk1.8' -d  ubuntu:18.0.4
      
    • 进入容器

      docker  exec ubuntu-jdk1.8 -it /bin/bash/
      
    • 下载oracle-jdk

      weget xxx,jdk
      
    • 解压

      tar -zxvf xxxjdk  /opt/
      
    • 配置环境变量

      
      

    缺点

    • 制作的过程只有制作者知道

    Dockerfile指令

    FROM

    说明

    指定基础镜像 并且必须是第一条指令

    指令格式

    FROM 镜像名称[:指定版本号]
    

    栗子

    FROM  ubuntu:18.0.4
    或者
    FROM  nginx
    

    RUN

    说明

    构建镜像时执行的命令

    语法格式

    shell 格式

    RUN 基础命令
    

    exec格式(了解)

    RUN ["命令","参数" ,"参数",...]
    
    shell 格式
    RUN  apt install vim
    # exec 格式
    RUN ["apt","install" ,"vim"]
    

    说明

    影响制作容器的大小,一条RUN命令就是构建一层

    命令

    docker build -t 镜像的名称 指定Dockerfile的名称

    -f /绝对路径/Dockerfile的名称

    栗子

    创建Dockefile文件

    FROM  nginx
    RUN   echo '<h1> 2002班 <h1>'  >  /usr/share/nginx/html/index.html
    

    构建镜像

    docker build -t zw/nginx-19 ./
    

    查看镜像是否构建成功

    docker images
    

    运行镜像

    docker run  -p 80:80 -d  zw/nginx-19
    

    docker-compose

    常用的软件

    相关文章

      网友评论

          本文标题:容器、镜像

          本文链接:https://www.haomeiwen.com/subject/ettklktx.html