Docker第一章:Docker理念、安装配置、命令
什么是Docker
Docker是基于Go语言实现的云开源项目,本身是一个容器运行载体或称之为管理引擎。
Docker的主要目标是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的程序及运行环境能够做到"一次镜像,处处运行"
Docker与虚拟机
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面上实现虚拟化,在其上运行一个完整操作系统
Hypervisor:一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。
虚拟机的缺点:资源占用多、冗余步骤多、启动慢
为什么选择Docker
Docker的基本组成
镜像
一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建多个容器。Docker镜像文件类似于Java的类模板,而Docker容器实例类似于java中new出来的实例对象
容器
容器类似于一个虚拟化的运行环境,容器是镜像创建的运行实例。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离,保证安全的
仓库
集中存放镜像文件的场所,最大的公开仓库是Docker Hub(https://hub.docker.com/)
Docker运行基本流程
1:用户使用Docker Client与Docker Daemon建立通信,并发送请求给后者
2:Docker Daemon提供Docker Server的功能使其可以接收Docker Client的请求
3:Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job形式存在
4:Job运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储
5:当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境
6:当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成
7:Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontaine来实现具体对容器进行的操作
Docker安装与配置
1:卸载旧版本
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2:yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++
3:执行命令
sudo yum install -y yum-utils
4:设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5:更新yum软件包索引
yum makecache fast(centos8去掉fast)
6:安装Docker CE
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
7:启动docker
systemctl start docker
8:测试
docker version
docker run hello-world
9:卸载
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
阿里云镜像加速器配置
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
Docker命令
帮助启动类命令
镜像命令
docker images——查看当前镜像列表
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
docker search xxx某个镜像名字 ——查找镜像
NAME:镜像名称
DESCRIPTION:镜像说明
STARTS:点赞数量
OFFICIAL:是否是官方的
AUTOMATED:是否是自动构建的
docker pull xxx某个镜像名字——拉取镜像
docker rmi 某个xxx镜像ID——删除镜像
docker虚悬镜像——仓库名、标签都是<none>的镜像
docker image ls -f dangling=true——列出虚悬镜像
docker image prune——删除所有虚悬镜像
容器命令
docker run [OPTIONS] IMAGE [COMMAND][ARG...]——新建+启动容器
通常我们会用docker run -it xxx /bin/bash,/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself
docker ps [options]——列出当前所有正在运行的容器
退出容器
启动已停止容器、重启容器、停止容器、强制停止容器、删除已停止容器
进入正在运行的容器
docker load
docker load
命令用于从一个tar存档文件中加载Docker镜像。以下是该命令的基本用法和参数
注意事项
使用镜像以后台模式启动一个容器时,最好用docker ps -a确认容器是否成功运行。
因为Docker容器后台运行,必须要有一个前台进程,容器运行的命令需要是那些一直挂起的命令,如Top,tail等
容器内文件拷贝到主机
docker cp 容器ID:容器内路径 目的主机路径
导入和导出容器