由于现在容器化技术的普及和广泛的应用,不管你工作中是否用到容器化技术,docker名声却越来越响,这篇文章就让我们简单了解一下docker吧;
概念
了解docker之前我们应该知道docker的三大组成部分
-
镜像(images)
操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而Docker 镜像(Image),就相当于是一个 root 文件系统。
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变. -
容器 (Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等(不会对镜像产生任何影响) 。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。前面讲过镜像使用的是分层存储,容器也是如此。
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。 -
仓库 (Repository)
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
一个 Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签.。
docker常用命令
概念介绍完了我们来简单了解一下docker常用的一些命令
- 通过此命令可以docker远程仓库拉取镜像到本地.
docker pull [options] NAME[:TAG] --options是拉去的一些参数. name是拉取镜像的名称,:TAG表示是可选的
如果不选表明时latest,如果选择表明是指定版本的.
- 查看所有镜像
docker images [options] [REPOSITORY[:TAG]] --options是选项,后面是指定镜像的名称.这个用的不多,可能
当本地镜像非常多的时候要指定查看某一个镜像.
- 运行一个镜像
docker run [options] IMAGE[:TAG] [COMMAND] [ARG..] --IMAGE是镜像的名字,COMMAND是运行起来的时候要
执行什么命令.ARG表示这条命令运行需要的参数.
docker run -d IMAGE 加了 -d 就是后台运行
docker run -d -p 8080:80 IMAGE -- p(小写)是开放一个容器的端口到主机上,-P(大写)是开放容器所有的端口
到主机上一个随机的端口.
- 查看运行的容器
docker ps
docker ps -a 查看所有容器
- 进入容器内部
docker exec -it container_id bash -i保证我们的输入有效,即使在没有detach的情况下也能运行.-t表示将分配
给我们一个伪终端.我们将在伪终端输入我们的内容.后面跟着的是容器的id,即我们上面用ps查询出来的id,这个id
可以少写几位,它会自动识别.
- 退出容器返回原来的系统.
exit
- 启动、停止、重启、删除容器
docker start container_id
docker stop container_id
docker restart container_id
docker rm container_id 删除容器是先停掉容器在删除,也可以强制删除 rm -f 建议不这么做
- 删除镜像
docker rmi [IMAGE...]
- 创建当前镜像
docker build -t frontend . 前提有Dockerfile文件 .指的是当前文件
下一篇我们介绍docker 安装tomcat部署项目----------------docker tomcat应用