-
Docker
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通 过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的 APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到 “一次封装,到处运行”。
Linux 容器技术的出现就解决了这样一个问题,而Docker 就是在它的基础上 发展过来的。将应用运行在Docker 容器上面,而Docker容器在任何操作系 统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境, 换到别的机子上就可以一键部署好,大大简化了操作。 -
Docker优势
解决了运行环境和配置问题的软件容器
方便做CI/CD
有助于整体发布
容器虚拟化技术 -
Docker组成
由镜像(只读模板)、容器(通过镜像生成的docker容器)、仓库(放了一堆镜像的地方)组成。
Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker 容器,一个镜像可以创建很多容器。
Docker 利用容器(Container)独立运行的一个或一组应用。容器是 用镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。
仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。
Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是 image镜像文件。
只有通过这个镜像文件才能生成Docker 容器。image文件可以看作是容器的模板。
Docker根据image 文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。
image文件生成的容器实例,本身也是一个文件,称为镜像文件。
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端,创建一个对应的运行实例,也就是我们的容器。
至于仓储,就是放了一堆镜像的地方,我们可以把镜像发布到仓储中,需 要的时候从仓储中拉下来就可以了。
Docker是一个Client-Server结构的系统,Docker守护进程运行在主 机上,然后通过Socket连接从客 户端访问,守护进程从客户端接 受命令并管理运行在主机上的容器。
容器,是一个运行时环境,就是我们前面说到的集装箱。
- 为什么Docker比VM快
(1)docker有着比虚拟机更少的抽象层。由亍docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。
仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。
(一) 安装docker步骤
官方文档:https://docs.docker.com/engine/install/centos/
(文档中有关于卸载docker的说明)
1、设置存储库,2个命令
(1)yum install -y yum-utils
(2)yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
2、安装docker引擎
yum install docker-ce docker-ce-cli containerd.io
3、启动docker服务
systemctl start docker
4、执行docker run hello-world命令测试
如果能打印出Hello from Docker!并且下面有打印出1234,说明docker安装成功了
(二) 配置镜像加速器,下载镜像(docker pull镜像名称)更快
(直接复制下面的命令到linux客户端执行,不需要复制#注释的内容)
(加速器地址可以注册阿里云安全中心,在“容器镜像服务”的镜像加速器中找到)
sudo mkdir -p /etc/docker #创建目录
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://yr1vqkq7.mirror.aliyuncs.com"]
}
EOF #EOF表示结束符,不常用
sudo systemctl daemon-reload #重新加载一下配置文件
sudo systemctl restart docker #重启服务
(三) 经常做的操作
docker pull hello-world
docker images
docker run hello-wolrd
注意:执行docker run XXX 命令过程:先在本地找镜像文件,如果找到则直接执行;如果找不到则去hub仓库上拉镜像文件,然后再去执行
(四) docker常用命令
1、 docker images 查看本机的镜像文件
2、 docker version 查看docker的版本
3、 docker info 查看docker更详细的信息
4、 docker –help 查看docker所有的命令
docker --help| grep pull:表示只想看pull命令的帮助信息
docker images --help:表示可以查看images的帮助信息
-a:列出本地所有的镜像(含中间映像层)
-q:只显示镜像ID
举例显示所有镜像ID:docker images -q
(五)查找镜像
使用下面的命令查找和在网站上(https://hub.docker.com/)查找是一样的
docker search python:表示查找所有的python镜像
docker search --filter=stars=30 python:表示查找收藏数大于30的python镜像
(注意指定条件查找,有个参数是-s,现在已经不用了)
(六)下载镜像
docker pull nginx 不指定版本,默认下载最新的nginx镜像
docker pull nginx:标签 表示指定版本下载nginx镜像
(七)删除镜像文件
-f 表示强制删除
docker rmi -f 镜像ID:表示删除单个镜像
docker rmi -f 镜像名称1:TAG 镜像名称2:TAG 表示删除多个镜像
docker rmi -f $(docker images -qa):表示删除全部的镜像(注意-qa表示所有镜像的id)