Docker是开发人员和系统管理员使用容器来进行开发,部署和运行应用程序的一个平台。使用Linux容器部署应用程序称为容器化,容器不是一个新的概念,但是它们使得部署应用程序变得越来越简单。
容器化越来越受欢迎,因为容器是:
- 灵活:即使是最复杂的应用也可以容器化。
- 轻量级:容器利用并共享主机内核。
- 可互换:您可以即时部署更新和升级。
- 便携式:您可以在本地构建,部署到云,并在任何地方运行。
- 可扩展:您可以增加并自动分发容器副本。
- 可堆叠:您可以垂直和即时堆叠服务。
通过运行镜像来启动一个容器。一个镜像是一个可执行的包,其中包括运行应用程序所需的所有内容--代码,运行时,库,环境变量,和配置文件。
容器是镜像的运行时实例 - 实际执行时镜像会在内存中变成什么(即镜像状态或者是一个用户进程)。像在Linux上一样,你可以通过命令docker ps
来查看正在运行的容器列表
一个容器中运行原生 Linux和共享主机与其它容器的内核。它运行一个独立的进程,不占用任何其他可执行文件的内存,使其轻量级。
相比之下,虚拟机(VM)运行一个完整的“客户”操作系统,通过虚拟机管理程序对主机资源进行虚拟访问。通常,VM提供的环境比大多数应用程序需要的资源更多。
在支持的平台上安装维护版本的Docker Community Edition(CE)或Enterprise Edition(EE) 。
完整的Kubernetes集成
- Docker Desktop for Mac上的Kubernetes 可在17.12 Edge(mac45)或 17.12 Stable(mac46)及更高版本中使用。
- Docker Desktop for Windows 上的Kubernetes仅在 18.02 Edge(win50)和更高边缘通道中提供。
- 运行
docker --version
并确保您拥有受支持的Docker版本:
docker --version
Docker version 17.12.0-ce, build c97c6d6
- 运行
docker info
(或docker version
不需要--
)以查看有关Docker安装的更多详细信息:
docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
../images/: 0
Server Version: 17.12.0-ce
Storage Driver: overlay2
...
要避免权限错误(以及使用
sudo
),请将您的用户添加到docker
组中。阅读更多。
- 通过运行简单的Docker镜像hello-world来测试您的安装是否有效 :
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.
...
- 列出
hello-world
下载到您的计算机的图像:
docker image ls
- 列出
hello-world
在显示其消息后退出的容器(由图像生成)。如果它仍在运行,您将不需要--all
选项:
docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS
54f4984ed6a8 hello-world "/hello" 20 seconds ago Exited (0) 19 seconds ago
### List Docker CLI commands
docker
docker container --help
### Display Docker version and info
docker --version
docker version
docker info
### Execute Docker image
docker run hello-world
### List Docker ../images/
docker image ls
### List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq
容器化使CI / CD无缝。例如:
- 应用程序没有系统依赖性
- 可以将更新推送到分布式应用程序的任何部分
- 资源密度可以优化。
使用Docker
,扩展应用程序是一个新的可执行文件,而不是运行繁重的VM
主机。
接下来就可以正式了解容器了!