本文为docker系列教程的第一篇,主要阐述docker的概念以及一些主要应用场景。本文观点大多数来自docker官方文档,本人不对其正确性负责,由于笃信本文所述内容造成的一切损失与作者无关
纲要
- 创建docker环境
- 创建一个容器并运行
- 扩展你的应用使其能够运行多个容器
- 通过云发布你的应用
- 为应用创建数据库服务
- 生产环境的部署
基本概念
docker
docker是一个为开发者以及系统管理员提供的以容器的方式开发、部署以及运行产品的平台。使用容器技术进行产品的部署并不是什么新鲜事物,但是如docker这般简易方便的容器管理平台确实前无古人。
容器技术越来越受欢迎的原因有以下几点:
- Flexible:即使再复杂的产品也能够被容器化
- Lightweight:容器之间实现了对主机资源的平衡与共享
- Interchangeable: 你可以利用容器快速的部署及更新你的产品
- Scalable: 你可以增强以及自动分分配的容器的副本
-
Stackable: 你可以直截了当地将多个服务进行叠加
Images and containers
一个容器通过运行一个image来开始自己的工作。一个image呢,指的是一个可执行的包文件,这个image包含了运行产品所需的一切--代码、运行环境、库、环境变量以及配置文件
一个容器代表一个image包在某个运行环境下的一个实例--即当image被执行后在计算中内存区域的具体状态(一个有状态的image或者用户进程)。你可以通过执行 docker ps
来查看当前运行的容器列表。
Containers and virtual machines
一个运行在linux环境下的容器,与同一主机下的其他容器共享计算资源。其以一种不连续进程的方式运行,除执行本身任务外不会占据任何多的内存,因而实现了轻量化。
相反,运行在虚拟机中的容器由于要通过hypervisor来调用主机的资源,通常情况下会占用一些额外的资源
Perpare your Docker environment
- 安装docker程序
安装方法见 https://docs.docker.com/install/ - 查看版本
#查看版本
docker --version
Docker version 17.12.0-ce, build c97c6d6
#查看详情以及当前状态
docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.12.0-ce
Storage Driver: overlay2
...
在安装docker后,如果涉及到权限问题,请查阅https://docs.docker.com/install/linux/linux-postinstall/
- 测试docker能否正常工作
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
#列表展示当前下载的image
docker image ls
#列表展示当前容器列表
docker container ls --all
概要和清单
#列表展示docker命令
docker
docker container --help
# 展示docker版本以及其他信息
docker --version
docker version
docker info
# 执行docker image
docker run hello-world
# 列表展示docker的image
docker image ls
#列表展示docker的容器
docker container ls
docker container ls --all
docker container ls -aq
结论
容器化使得持续开发/持续集成能够无缝衔接,例如
- 产品本身没有系统依赖
- 更新可以推送到发布产品的任何一个部分
- 优化了资源密集程度
使用docker,扩展你的产品只需一个新的可执行文件,而不需要运行笨重的虚拟机。
网友评论