欢迎!咱们很高兴您想学习 Docker。Docker 入门教程将教您如何:docker
Docker 是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用 Linux 容器来部署应用程序称为容器化(containerization)。容器并非新概念,但经过容器轻松部署应用程序则是最近才实现的。 数据库
容器化正在变得愈来愈流行,由于容器有如下特色:后端
Flexible 灵活性:即便是最复杂的应用也能够放入容器。app
Lightweight 轻量性:容器利用并共享主机内核。分布式
Interchangeable 通用性:能够即时部署更新和升级。学习
Portable 便携性:能够构建本地应用,部署到云端,并在任何地方运行。测试
Scalable 可扩展:能够增长和自动分发容器副本。优化
Stackable 可堆叠:能够即时纵向堆叠服务。ui
经过运行镜像启动容器。镜像是一个可执行包,它包括运行应用程序所需的一切内容 -- 代码、运行时、库、环境变量和配置文件。spa
容器是镜像的运行时实例,执行时镜像在内存中变为何(即具备状态的镜像或用户进程)。您能够看到运行容器的列表,该列表包含命令 docker ps
,就像 Linux 中同样。
容器在 Linux 上本机运行,并与其余容器共享主机的内核。它运行一个离散进程,不会占用比任何其余可执行文件更多的内存,所以它很轻量。
相比之下,虚拟机 (VM) 运行一个成熟的"来宾"操做系统,经过虚拟机管理程序虚拟访问主机资源。一般,VM 提供的环境比大多数应用程序须要的资源更多。
在受支持的平台上安装维护的 Docker 社区版 (CE) 或企业版 (EE)。
运行 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,扩展应用程序就是启动新的可执行文件,不运行繁重的虚拟机。