• docker之基本命令(1)


      我们使用基本命令之前,先来普及一下操作中使用的基本概念

        镜像   image

        容器   container

        仓库   repository

    镜像

      Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

      镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

    容器

      镜像(Image) 和容器(Container) 的关系,就像是面向对象程序设计中的 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

      容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学 Docker 时常常会把容器和虚拟机搞混。

    仓库
      镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,DockerRegistry 就是这样的服务。
      

      基本应用

      1) 查看所有镜像

    docker images
    

      2)  拉取镜像

    docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
    

      3) 运行一个新容器并给它起个名字

    docker run -it --name temp ubuntu:16.04
    # -i 交互式操作
    # -t 终端
    # --name temp 容器起名字为temp
    # ubuntu:16.04:这是指用 ubuntu:16.04 镜像为基础来启动容器
    

      输入命令vim,git等命令,可以看到命令都无法使用,可以确定我们使用的是一个纯净的容器。

      4) 查看容器列表

    docker ps  
    # 查看启动了的容器docker ps -a  
    # 查看所有的容器(启不启动都算)
    

      5) 启动容器

    docker start temp  
    # temp可以是容器名或者id(id在ps命令中可以看到)
    

      6) 运行容器

    docker exec -it temp bash
    # -i 交互式操作
    # -t 终端# bash:放在镜像名后的是命令。这里我们希望有个交互式 Shell,因此用的是 bash(开启一个人机交互的窗口)。
    

      7)   删除镜像

    1)docker ps -a   查询容器
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                                      NAMES
    6adbd1b933a9        nginx:alpine        "nginx -g 'daemon of…"   11 minutes ago      Up 11 minutes               0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   dnmp-nginx
    7ba3e71d7310        nginx               "/bin/bash"              47 hours ago        Exited (127) 47 hours ago                                              goofy_bhaskara
    70278207ab92        mysql:8.0.11        "docker-entrypoint.s…"   12 days ago         Up 11 minutes               0.0.0.0:3306->3306/tcp                     dnmp-mysql
    884a717efe4e        dnmp_php            "docker-php-entrypoi…"   12 days ago         Up 11 minutes               9000/tcp                                   dnmp-php
    2)删除指定容器
    docker rm 884   //删除PHP
    3)docker images   查询镜像
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              7042885a156a        11 days ago         109MB
    dnmp_php            latest              172f496bb458        12 days ago         535MB
    nginx               alpine              315798907716        13 days ago         17.8MB
    redis               4.0                 b00f982f9bf7        3 weeks ago         83.4MB
    php                 7.2-fpm             2bd622691e6e        4 weeks ago         371MB
    mysql               8.0.11              5dbe5b6313e1        5 months ago        445MB

    说明:rm只能删除已经停止的容器,如果需要删除正在运行中的容器,需要先进行停止,或者使用参数-f 强制删除即可
    4)删除镜像 docker rmi 5db

    5) 停止所有docker容器服务
    docker stop $(docker ps -aq)
    stop:停止会有一定的延迟
    docker kill $(docker ps -aq)
    kill:瞬间完成停止操作
    6) 删除所有停止运行的容器服务
    docker rm $(docker ps -aq)

    -q: 显示镜像ID(静默方式)

    7)重启容器服务
    docker restart hello-docker
    restart:可以重启停止的容器,也可以重启正在运行的容器

      注意点:

      1. 删除前需要保证容器是停止的  stop

      2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)

      3. 顺序需要先删除容器

           好了,到这里我们先介绍了一些基本的并且使用概率较高的命令,下一节,我们将使用更为复杂的命令进行相关操作。

  • 相关阅读:
    DVS6446教程链接
    今晚做的二值化和分割
    Sybase ETL
    QR码的结构
    cannot open file Default/configPkg/linker.cmd 错误
    QR 码的位置检测符
    QR Code
    C6000 OMAP DAVINCI的关系
    Davinci笔记 DSP子系统 VS ARM子系统
    ETL简介
  • 原文地址:https://www.cnblogs.com/xingxia/p/docker-command1.html
Copyright © 2020-2023  润新知