docker 运行镜像_Docker—开源应用容器引擎(一)

【Docker】


主要内容

  1. Docker简介
  2. Docker安装与启动
  3. 镜像加速器配置
  4. Docker镜像操作
  5. Docker容器操作
  6. DockerFile管理
  7. 阿里云镜像仓库
  8. 本地镜像仓库
  9. Docker容器生命周期
  10. Docker数据管理

一、Docker简介

1. 什么是Docker

Docker 是基于Go语言实现的开源容器项目。利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。它是内核级的虚拟化。期望达到使项目运行环境“一次封装,到处运行的目的”。

利用docker创建的运行环境叫做docker容器,容器是通过docker镜像创建的,docker镜像文件可以放在私有仓库中也可以放在共有仓库中。

官网地址:https://www.docker.com

2. Docker和VM的对比

2.1 结构区别

6264880061a819ecff8deb48d7a5630c.png

2.2 应用区别

7ebc37bf7b7eab48c1df7982d0206517.png

Docker:面向内核、软件,docker是秒级别的

虚拟机:面向硬件的,分钟级别

8ca185cc76b11b86f7b138be970254c4.png

3. Docker特点

3.1 效率高

用户只需要几分钟,就可以把自己的程序“Docker化”。Docker依赖于“写时复制”(copy-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码即改”的境界。

随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒钟即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。

3.2 职责明确

使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境都是正常的,上线后出了问题就归结为肯定是运维的问题)”

3.3 结构完整

Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒子中一件件的取。)

3.4 契合微服务架构

Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中运行多个应用程序)

4. Docker架构

a2ec61301bc2b1811eee3fe2feb75375.png

4.1 Docker daemon(Docker守护进程)

Docker daemon是一个运行在宿主机(DOCKER_HOST)的后台进程。我们可通过Docker客户端与之通信。

4.2 Client(Docker客户端)

Docker客户端是Docker的用户界面,它可以接受用户命令和配置标识,并与Docker daemon通信。图中,docker build等都是Docker的相关命令。

4.3 Images(Docker镜像)

Docker镜像是一个只读模板,它包含创建Docker容器的说明。它和系统安装光盘有点像——我们使用系统安装光盘安装系统,同理,我们使用Docker镜像运行Docker镜像中的程序。

4.4 Container(容器)

容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。我们可通过Docker API或者CLI命令来启停、移动、删除容器。

4.5 Registry(仓库)

Docker Registry是一个集中存储与分发镜像的服务。我们构建完Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,我们就需要手动拷贝。此时,我们可借助Docker Registry来避免镜像的手动拷贝。

一个Docker Registry可包含多个Docker仓库;每个仓库可包含多个镜像标签;每个标签对应一个Docker镜像。这跟Maven的仓库有点类似,如果把Docker Registry比作Maven仓库的话,那么Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。


二、Docker安装与启动

以下安装步骤基于CentOS8,并确保该虚拟机可以连接外网。

1. 安装

1.1 下载docker-ce repo

为本地yum提供远程repo信息。

087e80bf21fc49d9a6957e762c67222b.png

1.2 安装依赖

87e5dc236dc6f7a4ee30b5d96828a005.png

1.3 安装docker-ce

526223ce9dd73652995a5a74465e06c8.png

2. 启动

2.1 启动命令

9256fb75fef64db28e94f5b35822f4e2.png

2.2 关闭命令

1907ff6c5bcbf43e3ac894d4b53ab78f.png

2.3 查看Docker状态

4de9f3aa317141297211bddc944b49a9.png

结果如下:

2b50b4a6044288aa90ab1ff661eba427.png

三、镜像加速器配置

默认情况下Docker从Docker Hub上下载镜像资源,但速度很慢,可以通过配置国内的镜像加速器来解决。

本课程以阿里云镜像加速器为例讲解

1. 访问阿里云

https://www.aliyun.com/

2. 进入控制台

780b0d9ca54e52c3299f53e506895946.png

3. 搜索镜像服务器

7eacf4955310d6b0a9fcca8c61cda97d.png
50318e581ab6f66b3f7cc0a7f51268d2.png

4. 选择对应的OS并配置

07e53ad99762381b20f038b933d4edf3.png

5. 验证镜像加速器配置

通过docker info命令验证镜像加速器配置,结果如下:

be27d26c1fb6c25d4fa073d42033c668.png

四、Docker镜像操作

1. 什么是Docker镜像

Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要一些文件的,而这些文件就可以称为Docker镜像。

14209e4850f44de478cdbb483741b35b.png

2. 列出镜像

列出docker下的所有镜像,命令: docker images 或者 docker image ls

ba1776ef6e459d854f6767994ef3d49a.png

结果解释:

REPOSITORY:镜像所在的仓库名称

TAG:镜像标签

IMAGE ID:镜像ID

CREATED:镜像的创建日期(不是获取该镜像的日期)

SIZE:镜像大小

3. 搜索镜像

可使用命令搜索需要的镜像,命令: docker search 镜像名称

156168f858c9f482000019085b2d8d63.png

结果解释:

NAME:仓库名称

DESCRIPTION:镜像描述

STARS:用户评价,反映一个镜像的受欢迎程度

OFFICIAL:是否官方

AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

4. 拉取镜像

拉取镜像相当于从远程Registry中下载镜像到本地,命令: docker pull 镜像名称

0b5697b186f01659a9106558656a2014.png

5. 删除镜像

删除本地镜像使用命令:

docker rmi $IMAGE_ID

docker rmi $REPOSITORY:$TAG

7bf6905cbfa8e775448f99f040da58b4.png

五、Docker容器操作

可以把容器看成简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。

1. 新建容器

778f241aa564d8f4afc4408ebebe3dc2.png

1.1 options 常见参数说明

--name:给容器起一个新名字。为容器指定一个名称

-i:以交互模式运行容器,通常与-t连用

-t:为容器重新分配一个伪终端,通常与-i连用

-P:随机端口映射

-p:指定端口映射,hostPost:containerPort

-e:配置信息

-d:后台执行

-v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

2. 新建并启动容器

527c31f05b2a031a453a2226214801a5.png

3. 列出启动容器

列出正在运行的容器: docker container ls

查看docker容器进程信息: docker ps [options]

docker ps

3.1 options 参数说明

-l:显示最近创建的容器

-n 数字:显示最近n个创建的容器

-a:列出所有的运行过的容器

-q:列出容器id

4. 与运行中的容器交互

docker exec [options] 容器ID [command]

docker exec -it mysql /bin/bash

4.1 options参数说明

-i:以交互模式运行容器,通常与-t连用

-t:为容器重新分配一个伪终端,通常与-i连用

5. 停止容器

docker stop 容器ID

docker stop mysql

6. 启动容器

docker start 容器ID

docker start mysql

7. 强制停止容器

不推荐使用,容易造成容器服务不正常关闭,影响后续使用。

docker kill 容器ID或名称

docker kill mysql

8. 暂停容器

docker pause 容器ID或名称

docker pause mysql

9. 恢复容器

docker unpause 容器ID或名称

docker unpause mysql

10. 删除容器

要删除的容器,必须是关闭状态的。

docker rm 容器ID或名称

docker rm mysql

11. 查看容器日志

docker logs -f -t --tail 行数 容器ID

docker logs -f -t --tail 5 mysql

-f 参数代表长期监控日志数据

-t 额外增加时间戳

--tail 行数 显示末尾多少行日志

12. 查看容器中运行的进程

docker top 容器ID或名称

docker top mysql

13. 查看容器内部详情

docker inspect 容器ID或名称

docker inspect mysql

14. 复制容器数据到宿主机

docker cp 容器ID或名称:容器内路径 宿主机路径

复制MySQL配置到宿主机: docker cp mysql:/etc/mysql ~/tmp/conf


海量Java学习资料,大厂面试题,项目练习题,统统免费提供,只要关注,那就会有收获~笔芯~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值