原文链接:Part 1: Orientation and setup
预计阅读时间:4分钟
Hello!我们非常高兴你能够选择学习Docker
,本模块将引导你如何:
1.配置你的Docker环境(本篇)
2.创建镜像
(image
)并作为一个容器运行它
3.应用扩容来运行多个容器
4.在集群中部署你的应用
5.添加一个后台数据库为对战服务
6.以产品的形式部署你的应用
Docker 概念(Docker concepts)
Docker是一个为开发者与系统管理员提供开发,部署和运行包含应用的容器功能的平台。在Linux容器中部署应用的用法叫做容器化(containerization)。容器并不一个很新的概念,但他们可以用来更简单的部署应用。
容器化日渐流行是因为容器:
- 灵活性:甚至最复杂的应用也可以被容器化
- 轻量级:容器可以利用并分享主机的内核
- 可互换性:可以动态部署更新和升级
- 便携性:可以在本地build,在云服务部署,并可以再任何地方运行
- 可扩容性:可以增加和动态分发到没个容器的副本中(
replicas
) - 可堆叠行:可以垂直和动态的堆叠服务
镜像和容器(Images and containers)
运行一个镜像来启动一个容器。镜像(image)是一个包含了所有运行需要的东西的可运行包--代码,运行时,库,环境变量和配置文件。
容器(container)则是一个镜像运行的实例--镜像运行时在内存中会变成的样子(可能是一个带有状态的镜像,或是一个用户线程)。你可以用命令docker ps
看到当前正在运行的容器列表,就想在Linux中一样。
容器与虚拟机(Containers and virtual machines)
容器在Linux本地运行并与其他容器分享使用主机的内核。它的运行一个独立的进程,不会比其他可执行应用占用更多内存,这使得它更轻量级。
相比之下,虚拟机(virtual machine VM)通过超级管理员虚拟访问 virtual access主机资源来运行一个完整的“guest”操作系统。通常的,虚拟机提供了超出大多应用所需要的资源环境。
准备你的Docker环境
在支持平台 supported platform安装Docker Community Edition (CE) 或 Enterprise Edition (EE) 的维护版本 maintained version
完成Kubernetes集成
- Kubernetes on Docker for Mac适用于17.12 Edge (mac45) 或 17.12 Stable (mac46) 和更高版本。
- Kubernetes on Docker for Windows 适用于 18.02 Edge (win50) 和更高的edge版本。
测试Docker版本(Test Docker version)
1.运行docker --version
并确认已经有Docker的支持版本
docker --version
Docker version 18.03.1-ce, build 9ee9f40
2.运行docker info
(或者docker version
没有--
)来查看更多docker的信息
localhost:~ yichen$ docker info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 9
Server Version: 18.03.1-ce
Storage Driver: overlay2
...
测试Docker安装
1.运行一个简单的Docker镜像来测试你的安装是否奏效, hello-world:
localhost:~ yichen$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
2.列出已经下载到你的机器中的hello-world
镜像
docker image ls
3.列出在显示消息后退出的hello-world
的容器container(因image而产生的),如果他依旧在运行,则不需要添加--all
选项
localhost:~ yichen$ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
482e93ce5196 hello-world "/hello" Less than a second ago Exited (0) 31 seconds ago focused_varahamihira
作弊表???秘籍??(Recap and cheat sheet)
## 列出Docker CLI 命令
docker
docker container --help
## 显示Docker版本与信息
docker --version
docker version
docker info
## 运行Docker镜像
docker run hello-world
## 列出Docker镜像
docker image ls
## 列出Docker容器 (正在运行, 所有, 所有处在静默模式)
docker container ls
docker container ls --all
docker container ls -aq
总了个结(Conclusion of part one)
容器化使得持续集成/持续部署
无缝化,举几个例子:
- 应用没有系统依赖
- 更新可以被推送到分布式应用的任意一个部分
- 资源可以被充分利用
使用Docker,扩展应用程序的问题在于启动新的可执行文件,而不是运行繁重的VM主机。
网友评论