一、Docker产生背景
1.1、云计算
经典云计算架构包括IaaS(Infrastructure as a Service,基础设施及服务)、PaaS(Platform as a Service,平台即服务)、SaaS(Software as a Service,软件即服务)三层服务。
随着计算机技术推陈出新,IaaS的发展主要以虚拟机为最小粒度的资源调度单位,出现了资源利用率低、调度分发缓慢、软件栈环境不统一等一系列问题。PaaS在IaaS基础上发展而来,但是通常在应用架构选择、支持的软件环境服务方面有较大的限制,带来了应用与平台无法解耦、应用运行时环境局限性强、运维人员控制力下降的问题。
1.2、Docker容器
根据官方定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。它是一个跨平台、可移植并且简单易用的容器解决方案。Docker可在容器内部快速自动化地部署应用,并通过操作系统内核技术(namespaces、cgroups等)为容器提供资源隔离与安全保障。
容器技术的生态系统自下而上分别覆盖了IaaS层和PaaS层所涉及的各类问题,包括资源调度、编排、部署、监控、配置管理、存储网络管理、安全、容器化应用支撑平台等。除了基于容器技术解决构建分布式平台无法回避的经典问题,容器技术主要带来了以下几点好处。
-
持续部署与测试
容器消除了线上线下的环境差异,保证了应用生命周期的环境一致性和标准化。
-
跨云平台支持
容器带来的最大好处之一就是其适配性,越来越多的云平台都支持容器,用户再也无需担心受到云平台的捆绑,同时也让应用多平台混合部署成为可能。
-
环境标准化和版本控制
基于容器提供的环境一致性和标准化,你可以使用Git等工具对容器镜像进行版本控制,相比基于代码的版本控制来说,你还能够对整个应用运行环境实现版本控制,一旦出现故障可以快速回滚。
-
高资源利用率与隔离
容器没有管理程序的额外开销,与底层共享操作系统,性能更加优良,系统负载更低,在同等条件下可以运行更多的应用实例,可以更充分地利用系统资源。
-
容器跨平台性与镜像
容器在原有Linux容器的基础上进行革新,为容器设定了一整套标准化的配置方法,将应用及其依赖的运行环境打包成镜像,真正实现了“构建一次,到处运行”的理念。
-
易于理解且易用
Docker英文原意为码头集装箱工人,标志为金鱼运送集装箱,集装箱及容器。一个开发者可以在15分钟之内入门Docker并进行安装和部署。
-
应用镜像仓库
Docker官方构建一个镜像仓库,组织管理形式类似于GitHub,为用户提供了一个非常有用的应用商店。
二、Docker基础
2.1、Docker安装
官方安装说明:https://docs.docker.com/get-docker/
2.2、Docker操作参数
shade.yang@macbook-air ~ % docker --help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/Users/shade.yang/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/Users/shade.yang/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/Users/shade.yang/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/Users/shade.yang/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
builder Manage builds
buildx* Build with BuildKit (Docker Inc., v0.6.3)
compose* Docker Compose (Docker Inc., v2.1.1)
config Manage Docker configs
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
scan* Docker Scan (Docker Inc., 0.9.0)
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local