【Docker镜像使用:场景,命令,架构】

时间:2023-02-02 17:05:03

一.简介

Docker 是一个开源的应用容器引擎,基于 ​​Go 语言​​ 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。


二.应用场景

1.Web 应用的自动化打包和发布。

2.自动化测试和持续集成、发布。

3.在服务型环境中部署和调整数据库或其他的后台应用。

4.从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。


三.优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1.快速,一致地交付您的应用程序

2.响应式部署和扩展

3.在同一硬件上运行更多工作负载


四.Docker架构

Docker 包括三个基本概念:

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

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

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。Docker Hub(​​https://hub.docker.com​​) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。


五.Docker镜像使用

1.列出本地主机上的镜像列表

docker images

【Docker镜像使用:场景,命令,架构】

各个选项说明:

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签,同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

2.查找镜像

docker search XXX

【Docker镜像使用:场景,命令,架构】

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

3.从仓库下载,获取一个新的镜像

docker pull XXX

【Docker镜像使用:场景,命令,架构】

4.删除镜像

docker rmi

【Docker镜像使用:场景,命令,架构】

5.创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

(1)从已经创建的容器中更新镜像,并且提交这个镜像

(2)使用 Dockerfile 指令来创建一个新的镜像


5.1更新镜像

(1)使用版本为20.04的基础镜像ubuntu镜像来创建一个容器

docker run -it ubuntu:20.04 /bin/bash

【Docker镜像使用:场景,命令,架构】

参数说明:

-i: 交互式操作。

-t: 终端。

ubuntu:20.04: 这是指用 ubuntu 20.04 版本镜像为基础来启动容器。

/bin/bash:放在镜像名后的是命令,希望有个交互式 Shell,因此用的是 /bin/bash。

如果不指定一个镜像的版本标签,例如只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

(2)在运行的容器内使用 apt-get update

【Docker镜像使用:场景,命令,架构】

(3)在完成操作之后,输入 exit 命令来退出这个容器。

【Docker镜像使用:场景,命令,架构】

(4)docker commit 来提交容器副本。

【Docker镜像使用:场景,命令,架构】

各个参数说明:

-m:

-a:

3a299d3e9ea4:容器 ID

lulu/ubuntu:new:

(5)使用新镜像 lulu/ubuntu:new

【Docker镜像使用:场景,命令,架构】

5.2构建镜像

使用命令 docker build

【Docker镜像使用:场景,命令,架构】

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。然后,我们使用 Dockerfile 文件,通过 docker build 命令来执行dockerfile文件中的命令构建一个镜像。

【Docker镜像使用:场景,命令,架构】

参数说明:

-t

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为 19a96a0b9bdd   

【Docker镜像使用:场景,命令,架构】

6.设置镜像标签,为镜像添加一个新的标签

docker tag 镜像ID 镜像源名(repository name):新的标签名(tag)

【Docker镜像使用:场景,命令,架构】

7.导出镜像,将指定镜像保存成tar归档文件

docker save -o 文件名.tar 镜像名

【Docker镜像使用:场景,命令,架构】

8.导入镜像

docker load --input 文件路径/文件名.tar

【Docker镜像使用:场景,命令,架构】