docker 基础一

本文为docker系列教程的第一篇,主要阐述docker的概念以及一些主要应用场景。本文观点大多数来自docker官方文档,本人不对其正确性负责,由于笃信本文所述内容造成的一切损失与作者无关

纲要

  1. 创建docker环境
  2. 创建一个容器并运行
  3. 扩展你的应用使其能够运行多个容器
  4. 通过云发布你的应用
  5. 为应用创建数据库服务
  6. 生产环境的部署

基本概念

docker

docker是一个为开发者以及系统管理员提供的以容器的方式开发、部署以及运行产品的平台。使用容器技术进行产品的部署并不是什么新鲜事物,但是如docker这般简易方便的容器管理平台确实前无古人。
容器技术越来越受欢迎的原因有以下几点:

  • Flexible:即使再复杂的产品也能够被容器化
  • Lightweight:容器之间实现了对主机资源的平衡与共享
  • Interchangeable: 你可以利用容器快速的部署及更新你的产品
  • Scalable: 你可以增强以及自动分分配的容器的副本
  • Stackable: 你可以直截了当地将多个服务进行叠加


    docker 基础一_第1张图片
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,扩展你的产品只需一个新的可执行文件,而不需要运行笨重的虚拟机。

你可能感兴趣的:(docker 基础一)