Docker:常用基本命令教程LinuxServer

印迹9月前 387

基本概念

镜像   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-mysql884a717efe4e        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             SIZEnginx               latest              7042885a156a        11 days ago         109MBdnmp_php            latest              172f496bb458        12 days ago         535MBnginx               alpine              315798907716        13 days ago         17.8MBredis               4.0                 b00f982f9bf7        3 weeks ago         83.4MBphp                 7.2-fpm             2bd622691e6e        4 weeks ago         371MBmysql               8.0.11              5dbe5b6313e1        5 months ago        445MB

  4)删除镜像

docker rmi 5db
注意:
1. 删除前需要保证容器是停止的  stop
2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)
3. 顺序需要先删除容器


http://www.virplus.com/thread-1161.htm

转载请注明:9月前 于 Virplus.com 发表

推荐阅读
最新回复 (1)
  • 印迹4月前
    2
    笔记:

    拉一个镜像:

    docker pull centos:7

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

    docker run -it --name c7 centos:7

    启动容器:

    docker start c7

    查看镜像:

    docker ps

    运行镜像:

    docker exec -it temp bash


( 登录 ) 后,可以发表评论!

返回