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. 顺序需要先删除容器

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

原文地址:https://www.cnblogs.com/xingxia/p/docker-command1.html