一文带你读懂Docker容器 1

电子说

1.3w人已加入

描述

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 会重新创建一个新的进程,不会导致终端停止,此种方法也是工作常用的

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分