博客
关于我
一分钟了解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 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 qualifying bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>‘ available
查看>>
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目录结构
查看>>
no1
查看>>
NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
查看>>
NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
查看>>
NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
查看>>
node exporter完整版
查看>>
Node JS: < 一> 初识Node JS
查看>>
Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
查看>>
Node 裁切图片的方法
查看>>
Node+Express连接mysql实现增删改查
查看>>
node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
查看>>
Node-RED中Button按钮组件和TextInput文字输入组件的使用
查看>>