【原创】docker实践之一些常见概念和操作(上)

-------前言
之前我写过两篇文章,介绍过如何在Ubuntu和Debian下安装docker,安装之后如何快速上手呢,接下来我们来娓娓道来。

一、docker里面的3个重要概念


1.镜像(images)
2.容器(Container)
3.仓库(Repository)
a)、Docker镜像
简单理解,安装过系统的都知道 我们需要一个镜像文件来安装系统,镜像相当于是操作系统的源文件,里面的很多东西都是原生的。书面化的解读是这样的,操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂在root文件系统为其提供用户空间支持。Docker镜像就相当于这里的root文件系统。比如官方镜像Ubuntu 18.04,就包含了完整的一套ubuntu 18.04的最小系统的root文件系统。
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源等配置文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在创建后也不会被改变。

b)、Docker容器
docker容器,是运行中的镜像,更通常的说法是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的命名空间。因此容器拥有自己root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID空间。容器内的进程是运行在一个隔离的环境里,使用起来就好像是一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

c)、Docker Registry
镜像构建完成后,可以很容易的在当前宿主机上运行,但是如果需要在其他容器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
一个Docker Registry 可以包含多个仓库(Repository);每个仓库 可以包含多个标签(Tag);每个标签对应一个镜像。
一般情况下,一个仓库会包含同一个软件不同版本的镜像,而标签就是用来标记该软件的各个版本。我们通常用<仓库名>:<标签>来表示镜像的不同版本。如果不给出标签,默认使用latest。
以Debian 为例,debian是仓库的名字,其内包含不同的版本标签,如8.0.4,9.0.4。我们可以通过debian 8.0.4来具体指定我们需要哪个版本的镜像文件。如果忽略了标签,将默认使用debian:latest

二、Docker的一些常见命令

docker pull -------- 下载镜像文件到本地
docker run -------- 运行某个容器
docker search ------- 查找
docker exec ----- 查看某个容器的内容
docker images ls ------ 列出当前所有的镜像
docker export --------导出某个容器
docker import ---------导入某个容器
docker container ls ------ 列出所有的容器
docker container rm -----删除容器
docker container prune -----清理终止状态的容器
docker diff -----

下面我们来具体的讲解:
I).从docker公有库从下载镜像到本地:
docker pull [options] NAME[:TAG]
docker pull golang的示例述
II).运行某个容器
docker run [OPTIONS] IMAGE [COMMAND]
示例:运行hello-world镜像,一般会用到的两个选项(OPTIONS)是
-d 后台运行并且打印出container的id
-p 指定容器的端口号给到主机
运行hello-world镜像在这里插入图片描述
III) 查找某个镜像
docker search [options] TERM
这里的options常用的有:
-f, --filter Filter output based on conditions provided
下面我们看一下,如果我要找星标不少于20个的wordpress的镜像
在这里插入图片描述
返回结果一共包含了5个信息:
NAME -------- 镜像的名字
DESCRIPTION -------- 镜像的描述
STARTS --------- 星标数(体现了该镜像的受欢迎程度)
OFFICIAL ---------- 是否官方镜像
AUTOMATED ----------- 是否自动创建
官方的镜像说明是官方创建和维护,automated资源运行用户验证镜像的来源和内容。根据是否是官方提供可以将资源分为两类。
一种是类似:CentOS这样的镜像,被称为基础镜像或者根镜像,这些镜像由docker公司创建、验证、支持和维护,这样的镜像往往使用单个单词作为名字。
还有一种类型,比如:tianon/centos镜像,这种是由docker公司的用户创建并维护的,往往带有用户名称前缀,可以通过前缀username/ 来指定使用某个用户提供的镜像,比如tianon用户。

IV) 进入某个容器
docker exec [OPTIONS] container [COMMAND]
其中OPTIONS最常用的几个参数:
-d 进入后台执行的模式
-i 保持命令行的交互模式,允许输入
-t Allocate a pseudo-TTY
示例:进入redis容器

docker exec -it redis bash

V) 删除某个容器
docker rm [OPTIONS] container
常用的options:
-f 强制删除一个正在运行的镜像,f 代表force
-v 删除和该容器相关的文件卷 volume
删除redis容器,可以执行下面的指令
在这里插入图片描述
注:如果这里我们不加-f参数,会报错“必须先停止容器的错误”
在这里插入图片描述

这里需要注意的是,使用docker rm进行删除的时候,有几种情况是无法直接直接删除镜像的:
1.该镜像对应有多个标签
2.该镜像中的某一层被其它镜像依赖的时候
3.依赖于该镜像的容器在运行的时候

由于时间关系,后面几个指令就不做演示了,下一章我会讲解一下如何使用dockerfile来生成容器,以及在docker里面tar文件的使用。

小练习

下面我们来做一个小练习:
练习1.进入Nginx镜像,然后把Nginx的欢迎页面修改成Hello world!
解析:第一步运行docker里面的Nginx镜像,然后再进入Nginx镜像,最后才是修改的这一步

$ docker run --name webserver -d -p 80:80 nginx
$ docker exec -it webserver bash
$ echo '<h1>Hello Docker!</h1>' > /usr/share/nginx/html/index.html
$ exit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值