0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文带你读懂Docker容器 1

jf_78858299 来源:碳峰博客 作者: Tanyongfeng 2023-02-03 15:33 次阅读

Docker 是一个开源软件,用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

一、Docker初识

1.什么是Docker

  • Docker 是一个开源的应用容器引擎,基于Go 语言实现并遵从 Apache2.0 协议开源。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

2.Docker vs VM

图片

docker与vm比较

  • 传统的虚拟机模拟出一套硬件来运行操作系统,也就是在硬件层面实现虚拟化,通常启动速度比较忙,资源消耗比较大。
  • Docker容器化技术则是在操作系统层面实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件实现虚拟化。

3.Docker组成

Docker基本组成主要包括以下三部分内容:

  • 镜像(image) —> 类模板
  • 容器(container)—> 对象
  • 仓库(repository)—> 镜像仓库

Docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过commit命令、Dockerfile等方式创建,也可以从Docker hub/registry上下载。

Docker container:容器是可写的,也是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。

Docker repository: 存储镜像的仓库,用户通过它来共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。

4.Docker优点

应用架构上 ,就比如那一个订购系统来举例子,本来是一个基本的静态网页用来电话订购,现在需要网络订购了,那么我们就需要引入DB,再然后为了提升性能,引入了类似Redis、Memcached、MQ缓存等中间件,到项目后期,发现单机不能满足性能要求了,然后引入了Nginx作为反向代理,总之,随着系统功能的日趋复杂,那么应用依赖就会逐渐复杂,不同组件的配置方法各不相同,运维人员进行应用配置可能会耗费大量时间。

应用部署上 ,Dockerfile的存在使得开发人员仅仅需要修改其配置文件就可以轻松构建具有不同依赖的镜像。同时保障了从开发、构建、测试、生成的一整套流程。

集群角度上 ,随着流量的逐渐增大,这个时候就要引入集群了,服务器由原来的一台变成两台,那么相同的配置在另一台主机进行相同的配置时间开销比较大,因此可以通过镜像来一键打包部署即可。

关于Docker优点,总结如下:

  • 快速的应用部署和维护
  • 更便捷的升级和扩缩容
  • 更简单的系统运维
  • 更高效的计算资源利用
  • 支持多种操作系统,Windows、Mac和Debian等

5.Docker架构

关于官方文档中解释:Docker Architecture

Docker引擎 (Docker Engine)是一个服务端-客户端结构的应用,主要有这些部分:Docker守护进程、Docker Engine API、Docker客户端。

  • Docker守护进程 (Docker daemons),也叫 dockerd ,是一个持久化的进程,用户管理容器。守护进程会监听Docker Engine API 的请求。
  • Docker Engine API是用于与Docker守护进程交互用的的API。它是一个RESTful API,因此它不仅可以被Docker客户端调用,也可以被wgetcurl等命令调用。
  • Docker客户端 ,也叫docker,是大部分用户与Docker交互的主要方式。用户通过客户端将命令发送给守护进程。命令会遵循Docker Engine API

6.Docker生态

Docker生态中还有一个非常重要的容器管理工具–Kubernetes,它是Google开源的用于在集群环境中管理、维护、自动扩展容器,通过Kubernetes可以很方便地在多个机器上管理和部署容器服务。现在已经得到IBM、Microsoft、RedHat等多个大公司的支持。

Docker现在出现了一个特殊的模式——swarm模式——可以用来管理容器集群。Docker Swarm允许使用Docker CLI运行swarm命令,因而很容易初始化一组容器,并向组中添加或删除容器。除了Docker Swarm,还有几个其他的容器协调管理器:

  • Kubernetes,一个容器集群管理器。可以在你自己的服务器上或是在云上运行。
  • DC/OS,一个特别的项目,提供了高级用户界面管理Docker容器。
  • Nomad Project,一个部署和管理应用的软件,运行在Amazon ECS,DigitalOcean,Azure Container Service或Google云平台。

二、Docker安装

1. 命令行安装

这里测试环境是 Centos Linux 8版本,安装使用 yum命令安装。

yum -y install docker-ce docker-ce-cli #下载Docker
docker version #查看docker版本号
docker images #存在的镜像

图片

图片

image-20220614152303600

  • TAG:版本号(默认最新)
  • REPOSITORY: 镜像名字
  • IMAGET ID : 镜像全局唯一ID
  • CREATED: 镜像创建时间
  • SIZE:镜像大小

2. 设置加速仓库

注册阿里云开发者账户,进入仓库镜像模块,获取仓库加速域名。

仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?

首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。

3. 配置普通用户管理Docker

由于需要使用普通用户对Docker进行管理,因此需要给普通用户配置Docker权限,根据 官方文档来进行配置。具体命令行如下:

sudo groupadd docker #加入Docker用户组
 sudo usermod -aG docker $USER #将用户添加到用户组
  newgrp docker  #刷新权限
  id $USER #查看用户情况
  docker run hello-world #运行hello world测试

图片

image-20220615190215061

图片

三、Docker基本使用

  • 获取镜像 docker pull REPOSITORY:TAG
  • 运行镜像 docker run IMAGE_ID
  • 删除镜像 docker rmi IMAGE_ID
  • 暂停容器 docker stop CONTAINER_ID
docker run -i 镜像ID #交互模式启动容器


## 常用参数
 -i, --interactive                    Keep STDIN open even if not attached
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
-p : 宿主机端口Docker运行端口
-P : 随机宿主机端口
-t : 命令终端

图片

image-20220614154748840

Docker虚悬镜像:仓库名、标签都为的镜像。建议删除

前台启动和后台启动

docker run -d #守护式启动
docker run -i  #前台式启动


#重新进入命令交互界面
docker exec -it 容器ID bashshell
docker attach 容器ID

区别:

  • accatch 不会重新创建一个新的进程,使用exec会导致终端停止
  • exec 会重新创建一个新的进程,不会导致终端停止,此种方法也是工作常用的

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源软件
    +关注

    关注

    0

    文章

    204

    浏览量

    15661
  • 编程
    +关注

    关注

    88

    文章

    3441

    浏览量

    92404
  • Docker
    +关注

    关注

    0

    文章

    437

    浏览量

    11603
收藏 人收藏

    评论

    相关推荐

    一文带你入门Docker容器

    docker不是一个值得投入的领域,它解决的问题是Unix系统最初设计的一个疏忽。从一个不会用docker的小白,自己一步一步的摸索,中间也踩过许多坑。但任然,坚持从哪里跌倒就从哪里爬起来。不求感动自己,但求人生无悔。
    发表于 06-05 14:44 382次阅读
    一文<b class='flag-5'>带你</b>入门<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>

    如何使用 Docker容器化技术

    对于开发人员来说,Docker肯定都不陌生,今天小编带大家重新学习一下Docker。 什么是 Docker 官话: Docker 是一种开源的容器
    的头像 发表于 09-30 11:24 1w次阅读

    读懂电阻和电容的不同

    要了解它们的主要参数。般情况下,对电阻器应考虑其标称阻值、允许偏差和标称功率;对电容器则需了解其标称容量、允许偏差和耐压。读懂电阻和电
    发表于 11-14 10:25

    如何在Docker中创建容器

    Docker个开源的引擎,可以轻松的为任何应用创建个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在
    发表于 01-03 15:58

    理解Docker容器并畅玩docker

    ,完全不影响其他容器的正常运作)。这样描述,还是不大明白,我们可以实际操作下。先打开两个命令行,在其中个命令行执行以下命令:docker run -it --name a
    发表于 11-05 09:54

    请问docker容器如何查看日志?

    docker容器如何查看日志
    发表于 11-19 07:29

    读懂接口模块的组合应用有哪些?

    读懂接口模块的组合应用有哪些?
    发表于 05-17 07:15

    读懂什么是NEC协议

    读懂什么是NEC协议?
    发表于 10-15 09:22

    Docker容器管理命令()

    1Docker容器管理命令的使用方法查看当前主机本地docker镜像:启动容器必须依赖镜像,所以要获取到镜像的唯
    发表于 04-20 17:55

    Docker容器管理命令(二)

    1Docker容器管理命令的使用方法批量删除docker 容器docker cp命令
    发表于 04-21 11:31

    一文带你读懂Docker容器 2

    Docker** 是一个开源软件,用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
    的头像 发表于 02-03 15:33 454次阅读
    一文<b class='flag-5'>带你</b><b class='flag-5'>读懂</b><b class='flag-5'>Docker</b><b class='flag-5'>容器</b> 2

    一文带你读懂Docker容器 3

    Docker** 是一个开源软件,用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
    的头像 发表于 02-03 15:34 403次阅读
    一文<b class='flag-5'>带你</b><b class='flag-5'>读懂</b><b class='flag-5'>Docker</b><b class='flag-5'>容器</b> 3

    docker容器容器之间通信

    Docker是一种轻量级容器化技术,能够将应用程序及其依赖项封装在一个独立、可移植的容器中。而容器化的应用程序通常是以分布式方式设计的,因此实现容器
    的头像 发表于 11-23 09:36 548次阅读

    docker进入容器的方法有哪些

    Docker是一种流行的容器化平台,它能够快速构建、交付和运行应用程序。在使用Docker时,我们经常需要进入容器进行调试、管理和运行命令等操作。本文将详细介绍
    的头像 发表于 11-23 09:45 3417次阅读

    docker容器有几种状态

    Docker 是一种流行的容器化平台,它能够帮助开发人员将应用程序和其依赖打包成一个独立的容器,并且能够在不同的环境中进行部署和运行。在 Docker 中,
    的头像 发表于 11-23 09:50 830次阅读