博客
关于我
一分钟了解Docker
阅读量:436 次
发布时间:2019-03-06

本文共 1733 字,大约阅读时间需要 5 分钟。

Docker概述

Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更高效地利用。Docker的主要用途包括简单配置、代码流水线管理、开发效率提升、应用隔离、服务器整合、调试能力增强、支持多租户以及快速部署等。

Docker客户端(Client)作为用户界面,接收用户的命令(如docker builddocker pull等)和配置标识,与Docker daemon通信。Docker镜像(Images)是一个只读模板,用于创建Docker容器的基础,类似于操作系统的安装光盘。Docker容器(Containers)是镜像的运行实例,镜像与容器的关系类似于面向对象中的类与对象。

Docker Registry是一个集中存储与分发镜像的服务,官方最常用的平台是Docker Hub。

Docker与VM对比

与传统的虚拟机(VM)相比,Docker具有以下优势: 1. 轻量级:Docker容器的启动时间短,资源消耗低。 2. 一键部署:无需为每个容器预先分配大量资源。 3. 容器共享:容器之间可以共享主机的内核,减少资源浪费。 4. 灵活性:容器可以在任何支持Docker的平台上运行,无需重装系统。

尽管如此,VM仍然有其优势,例如更强的资源隔离性和更复杂的硬件支持。

Docker与Openstack对比

Docker和Openstack各有特点: - Docker更适合开发者和小型应用,快速部署和横向扩展能力强。 - Openstack适合企业级的私有云和复杂的云计算场景,提供更全面的资源管理功能。

Docker常用命令

以下是Docker的核心命令: 1. `docker pull`:下载镜像。 2. `docker build`:构建镜像。 3. `docker run`:运行容器。 4. `docker ps`:查看运行容器。 5. `docker images`:列出本地镜像。 6. `docker login`:登录Docker Registry。

Docker容器映射

Docker容器可以通过以下方式与主机进行端口映射: - `-p 8080:80`:将主机的8080端口映射到容器的80端口。 - `-p 0.0.0.0:8080`:将容器的8080端口暴露给外部网络。

Dockerfile容器构建

Dockerfile是定义容器的文本文件,包含操作系统安装、依赖添加、应用安装等步骤。基本结构如下: ```dockerfile # 基础信息 FROM base # 添加工作目录 WORKDIR /app # copying文件 COPY . . # 指定入口点 ENTRYPOINT ["cmd", "--version"] ```

Swarm

Swarm是Docker官方提供的集群管理工具,通过将多台Docker主机抽象为一个整体,统一管理Docker资源。Swarm的主要功能包括: - 多主机资源管理。 - 服务发现与负载均衡。 - 资源分配与扩展。

与Kubernetes相比,Swarm更轻量,特性更贴近Docker,适合小型集群场景。

Portainer

Portainer是Docker的图形化管理工具,提供以下功能: - 状态显示面板。 - 应用模板快速部署。 - 容器镜像、网络数据卷操作。 - 集群和服务集中管理。 - 容器控制台访问。 - 用户权限管理。

运行实例

以下是使用Docker部署Nginx的示例: ```bash # 安装Docker sudo yum -y install docker

验证版本

docker -v

启动Docker服务

sudo systemctl enable docker

sudo systemctl start docker

拉取Nginx镜像

docker pull docker.io/nginx:latest

启动Nginx容器

docker run -d -p 8080:80 docker.io/nginx

查看运行容器

docker ps

访问`localhost:8080`即可查看运行的Nginx服务。

转载地址:http://wwnyz.baihongyu.com/

你可能感兴趣的文章
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
NO 157 去掉禅道访问地址中的zentao
查看>>
no available service ‘default‘ found, please make sure registry config corre seata
查看>>
no connection could be made because the target machine actively refused it.问题解决
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
查看>>
No module named 'crispy_forms'等使用pycharm开发
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
查看>>
No new migrations found. Your system is up-to-date.
查看>>
No qualifying bean of type XXX found for dependency XXX.
查看>>
No resource identifier found for attribute 'srcCompat' in package的解决办法
查看>>
no session found for current thread
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>
NO.23 ZenTaoPHP目录结构
查看>>
NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
查看>>