docker 入门到实战 1.初识 docker

什么是docker

你到市场上买了一堆菜和肉:咸鱼,鸡蛋,青菜,萝卜,熟食,水果等。这些菜都要装在一个冰箱里,不同的菜保质期不一样,味道也不一样,如果你将咸鱼和水果放在一起,水果就成了黑暗料理了。如果将鸡蛋随便丢,那很可能只要一开冰箱找食材,就会碰碎几个鸡蛋。聪明如你,肯定会将这些食材分门别类用不同的容器隔离存放。让一切都井然有序。

类似的,如果我们想在一台电脑上搭建各种开发环境:lnmp环境,java环境,nodejs,redis集群,python开发环境。显然,这些多的开发环境,如果集中在一台机器上构建,会让系统显得复杂,可能还会出现各种版本或依赖之间的不兼容。如果能将这些开发环境都独立开来,各个环境互相独立隔离,但又能互相通讯交互,相当于每个环境都是一个容器,这些容器可以独立提供服务,也能通信交互。

docker就是这样的容器技术。

用官方术语描述docker: Docker是基于Go语言实现的开源容器项目,有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。

通俗地理解:docker能让你在一台物理机上构建出很多个轻量极的开发环境。

为什么要用docker

传统的虚拟机也能实现环境的隔离,但虚拟机过于笨重,启动也慢,消耗的资源多。如果一台普通的个人电脑同时运行5个虚拟机实例,估计内存和CPU就扛不住了。

而docker不一样,docker很轻量级,对系统资源的需求很少。

  • docker容器的启动和停止可以在秒级实现,个人普通电脑同时运行上百个docker容器也没问题(在IBM服务器上可以同时实现运行10k量级的容器实例)

  • docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像。用户可以很方便地获取全球开发者共享的镜像

  • 通过Dockfile支持灵活的自动化创建和部署机器,使流程标准化,很方便移植

如何安装docker

官方文档 有详细的安装说明,本文以 macos 和 centos7 为例进行演示

macos

macos 和 windows 都有相应的桌面版安装包,下载后即可一键安装

macos 安装包

image-20190906223832152

centos

官方文档

详细操作:

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

$ sudo yum install docker-ce -y

$ sudo systemctl start docker # 启动docker

更换docker安装源

默认的docker安装源很慢,建议换成国内源,以阿里云的源为例:

阿里云docker镜像加速器

需要先注册阿里云账号

image-20190906224415565

macos

image-20190906224520248

centos

$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["你的镜像地址"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

第一个docker镜像

查看版本信息

$ docker --version
Docker version 19.03.1, build 74b1e89

按照惯例,第一个程序以 hello world 开始,执行以下命令即可执行一个输出 hello world 的容器

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3034f10adcd
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

以上指令表示你从docker镜像拉到了一个名为'hello world'镜像并执行成功。到此表示你的docker已经安装成功且正常执行

关于什么是docker的镜像,请关注我的后续更新

本作品采用《CC 协议》,转载必须注明作者和本文链接
it书童
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2

容器镜像还需要注册阿里云,不是公开的吗

4年前 评论
liuhuo

可以的

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!