Docker - Introduction & QuickStart
Docker - 概述
Docker包括了一个命令行程序、一个后台守护进程、以及一组远程服务。它解决了常见的软件问题,并且简化了安装、运行、发布和删除程序。这一切的实现是通过使用一项 UNIX 技术,称之为容器。
容器与虚拟机:
容器:
容器是应用程序层的一个抽象,将代码和依赖关系打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为孤立进程运行。容器占用的空间少于虚拟机(容器图像的大小通常为几十MB),并且几乎立即启动。
虚拟机:
虚拟机(VM)是将一台服务器变成多台服务器的物理硬件的抽象。管理程序允许多台虚拟机在单台机器上运行。每个VM都包含一个操作系统的完整副本,一个或多个应用程序,必需的二进制文件和库 - 占用数十GB。 VM也可能启动缓慢。
Docker - 版本
Docker有两个版本:Community Edition(CE)社区版和Enterprise Edition(EE)企业版。
社区版适合希望开始使用Docker并尝试使用基于容器的应用程序的开发人员和小型团队。
Docker CE有两个更新通道,稳定和优势:
- 稳定给你每一个季度的可靠的更新
- Edge每个月都会为您提供新功能
企业版(EE)专为企业级开发人员和IT团队而设计,他们在大规模生产中构建,发布和运行关键业务应用程序。
Reference:https://docs.docker.com/engine/installation/
Docker - 特点
- Docker能够通过容器提供更小的操作系统占用空间,从而缩小开发规模。
- 有了容器,跨不同部门的团队(如开发人员,质量保证人员和操作人员)可以更轻松地跨应用程序进行无缝工作。
- 您可以在任何物理和虚拟机,甚至是云上的任何位置部署Docker容器。
- 由于Docker容器非常轻便,所以它们非常容易扩展。
Docker - 组件
Docker有以下组件:
- Docker for Mac - 它允许在Mac OS上运行Docker容器。
- Docker for Linux - 它允许在Linux操作系统上运行Docker容器。
- Docker for Windows - 它允许在Windows操作系统上运行Docker容器。
- Docker Engine - 用于构建Docker镜像和创建Docker容器。
- Docker Hub - 这是用来托管各种Docker镜像的注册表。
- Docker Compose - 用于定义使用多个Docker容器的应用程序。
Docker - 应用场景
Docker提供了轻量级的虚拟化,几乎没有其他任何额外开销。其次,相比于虚拟机,我们可以在同一台机器上创建更多数量的容器。Docker 另外一个特点是启动和停止都能在几秒钟完成。
简化配置:同一个Docker的配置可以在不同的环境中使用,这样降低了硬件要求和应用环境之间耦合度。
代码管理:Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。
隔离应用:有很多种原因会让你选择在一个机器上运行不同的应用,这时候隔离应用会非常有用
整合服务器:通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本
调试能力:Docker 提供了许多的工具,这些工具不一定针对容器,却适用于容器
多租户环境:Docker 在多租户的环境中可以避免关键应用的重写
快速部署:传统的部署模式是安装->配置->运行,Docker的部署模式是:复制->运行
Docker - 安装配置
由于 Docker 的局限性,Docker 只能运行在64位的系统中。
[root@localhost ~]# getconf LONG_BIT
CentOS安装Docker :
系统要求:
要安装Docker CE,您需要维护版本的CentOS 7。不支持或测试归档版本。 必须启用centos-extras存储库。此存储库默认情况下处于启用状态,但如果您已禁用该存储库,则需要重新启用该存储库。
卸载旧版本:
老版本的Docker被称为docker
或docker-engine
。如果安装了这些,请卸载它们以及相关的依赖项。
[root@localhost ~]# $ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
如果yum
报告说没有安装这些软件包,那也没关系。
/var/lib/docker/
包括图像,容器,卷和网络的内容将被保留。Docker CE包现在被称为docker-ce
。
安装Docker CE:
yum 安装:
安装所需的包:
[root@localhost ~]# sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
添加yum库:
[root@localhost ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# sudo yum makecache fast
安装最新版docker-ce:
[root@localhost ~]# yum install docker-ce
查看版本:
[root@localhost ~]# docker -v
Docker version 18.03.1-ce, build 9ee9f40
shell安装:
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS系统上可以使用这套脚本安装:
[root@localhost ~]# curl -fsSL get.docker.com -o get-docker.sh
[root@localhost ~]# sh get-docker.sh --mirror Aliyun
或者使用 wget:
[root@localhost ~]# wget -qO- https://get.docker.com/ | sh
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的 edge 版本安装在系统中。
其他安装方式请参考官网所提供的文档:
Reference:https://docs.docker.com/engine/installation/linux/docker-ce/centos/#prerequisites
配置加速服务:
因为国内访问 Docker Hub 较慢, 可以使用腾讯云提供的国内镜像源, 加速访问 Docker Hub
[root@localhost ~]# echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# service docker restart
Docker - Hello World
在安装好 Docker 之后,可以再命令行终端中输入:
[root@localhost ~]# docker run hello-world
之后,Docker被激活,开始下载各种组件,并最终打印出Hello from Docker!
,在这个过程成 Docker依照流程做了如下事情:
当第二次执行docker run hello-world
的时候,Docker 会检查是否安装了hello-world
这个镜像,如果已经安装,Docker 会创建一个新的容器并启动该程序。
Docker - 简单操作:
指令 | 参数 |
---|---|
docker build | 通过dockerfile生成镜像 |
docker images | 查看当前本地有哪些docker镜像 |
docker pull | 下载镜像 |
docker run | 通过docker镜像生成docker容器(docker help run 查看run命令) |
docker ps | 查看正在up运行中的docker镜像,docker ps -a 查看所有的 |
docker exec | 进入容器 |
docker attach | 进入容器 |
docker rm | 删除容器,-f 强制删除,up状态的也可以删除 |
docker rmi |
删除images,通过image的id来指定删除谁 |
docker start | 启动一个容器 |
docker stop | 停止提一个容器 |
docker tag | 给镜像打标签(docker tag imageid name:tag) |
docker status | 在宿主机查看docker使用cpu、内存、网络、io情况 |
docker logs <iamge id/name> | 查看容器的日志 |
更多命令参看 https://docs.docker.com/engine/reference/commandline/docker/
可以参考每一个镜像的文档https://hub.docker.com/
参考资料:
Docker Get Started:https://docs.docker.com/get-started/
8 Ways to Use Docker in the Real World:http://blog.flux7.com/blogs/docker