Docker学习——基础知识(一):概述与环境配置
Docker学习——基础知识(一):概述与环境配置
概述(Docker concepts)
Docker是开发人员和系统管理员使用容器开发,部署和运行应用程序的平台。使用Linux容器部署应用程序称为容器化。
容器化越来越受欢迎,因为容器有以下特点:
- 灵活:即使是最复杂的应用也可以容器化。
- 轻量级:容器利用并共享主机内核。
- 易替换:您可以即时部署更新和升级。
- 可移植:您可以在本地构建,部署到云,并在任何地方运行。
- 可扩展:您可以增加并自动分发容器副本。
- 可堆叠:您可以垂直和即时堆叠服务。
镜像和容器(Images and containers)
通过运行镜像启动容器。镜像是一个可执行包,包含运行应用程序所需的所有内容 - 代码,运行时,库,环境变量和配置文件。
容器是镜像的运行时实例——镜像在执行时在内存中有哪些变化(即具有状态的镜像或用户进程)。您可以使用命令,docker ps
,查看正在运行的容器列表,就像在Linux中一样。
容器和虚拟机(Containers and virtual machines)
容器在Linux上本机运行,并与其他容器共享主机的内核。它运行一个独立的进程,不占用任何其他可执行文件的内存,这使容器轻量级化。
相比之下,虚拟机(VM)运行一个完整的“客户”操作系统,通过虚拟机管理程序对主机资源进行虚拟访问。通常,VM提供的环境比大多数应用程序需要的资源更多。
配置Docker环境
在支持的平台上安装维护版本的Docker Community Edition(CE)或Enterprise Edition(EE)。
完整的Kubernetes集成
测试Docker版本(Test Docker version)
- 运行
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
命令),请将您的用户添加到docke
r组。阅读更多。
测试Docker安装(Test Docker installation)
- 通过运行简单的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主机。
下一节
声明:此文章为个人根据官方文档翻译搬运,若有理解及翻译错误,欢迎大佬们批评指正。