准备开始学习docker,网上教程很多,最后还是决定看官网的指南。
另外强烈建议在linux下学习,windows反而太麻烦了。
以下内容是官网指南的google翻译加一些我个人的修正。
原版在这里:
https://docs.docker.com/get-started/#containers-and-virtual-machines
ubuntu下安装Docker看这里:
https://www.jianshu.com/p/f88df4791091
入门,第1部分:Orientation and setup
预计阅读时间: 4分钟
欢迎!我们很高兴您想学习Docker。该Docker入门教程 教你如何:
- 设置Docker环境(本文)
- 构建映像并将其作为一个容器运行
- 扩展您的应用程序以运行多个容器
- 在群集中分发您的应用
- 通过添加后端数据库来堆栈服务
- 将您的应用部署到生产环境
Docker概念
Docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台。使用Linux容器部署应用程序称为容器化。容器不是新的,但它们用于轻松部署应用程序。
容器化越来越受欢迎,因为容器是:
- 灵活:即使是最复杂的应用也可以集装箱化。
- 轻量级:容器利用并共享主机内核。
- 可互换:您可以即时部署更新和升级。
- 便携式:您可以在本地构建,部署到云,并在任何地方运行。
- 可扩展:您可以增加并自动分发容器副本。
- 可堆叠:您可以垂直和即时堆叠服务。

Images和Containers
通过运行映像启动容器。一个Image是一个可执行的包,其中包括运行应用程序所需的所有内容-的代码,运行时,库,环境变量,和配置文件。
一个容器是Image的运行时实例-当Image在存储器中被执行时变成了什么(即:Image的状态,或者用户进程)。您可以使用该命令查看正在运行的容器列表docker ps
,就像在Linux中一样。
容器和虚拟机
一个容器中运行原生 Linux和共享主机与其它容器的内核。它运行一个独立的进程,不占用任何其他可执行文件的内存,使其轻量级。
相比之下,虚拟机(VM)运行一个完整的“客户”操作系统,通过虚拟机管理程序对主机资源进行虚拟访问。通常,VM提供的环境比大多数应用程序需要的资源更多。

准备Docker环境
在支持的平台上安装维护版本的Docker Community Edition(CE)或Enterprise Edition(EE) 。
完整的Kubernetes集成
- Docker for Mac上的Kubernetes 可在17.12 Edge(mac45)或 17.12 Stable(mac46)及更高版本中使用。
- Docker for Windows 上的Kubernetes仅在 18.02 Edge(win50)和更高边缘通道中提供。
测试Docker版本
-
运行
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
组中。阅读更多。
不用阅读更多了,就两行命令我贴过来:
sudo groupadd docker
sudo usermod -aG docker $USER
然后退出用户重新登陆下就OK了
测试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主机。
网友评论