Docker是什么?
Docker是一个虚拟化平台,云计算时代我们的应用现在正在逐步的部署到云端,部署到云端的服务需要相互隔离,让每个服务都运行在独立的容器中,而 Docker 正是当下最主流的容器化技术。
Docker 平台基本架构(Client/Server,参考官方的架构图)
Docker 是一种Client/Server架构的应用程序,Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以 在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。如图所示(参考docker 官网https://docs.docker.com/get-started/overview/)。

Docker Client是安装完 Docker 之后,直接使用的 docker命令。
Docker Host是我们的docker宿主机(就是安装了docker的操作系统)
Docker Daemon是docker的后台守护进程,侦听并处理Docker客户端命令,管理Docker对象,例如镜像,容器,网络和卷。
Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images(本地镜像仓库)中.
Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。
Docker支持的常用基本操作有哪些?
进阶篇
Docker进行数据管理的方式有哪些?
Docker的数据卷你是如何理解的?
Docker镜像如何制作?
Docker下如何实现容器互联?
Docker 核心对象(如何理解Docker中的镜像和容器?面试)
镜像(Image)
Docker 镜像可以看成是磁盘上特殊的文件系统(https://hub.docker.com/),镜像打包了应用的运行环境以及应用程序,是静态的。可以通过 Docker 启动这个镜像,进而将镜像中的程序在一个容器中启动运行起来。在 Docker 镜像中,操作系统是高度精简的,镜像中的操作系统还不包含内核,容器都是共享所在的宿主机的内核。所以有时会说容器仅包含必要的操作系统(通常只有操作系统文件和文件系统对象),容器中查看到的 Linux 内核版本与宿主机一致。假如现在理解镜像有些抽象,可以暂时先将其理解为一个安装程序。
容器(Container)
Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。容器是轻量级的,它不需要管理程序的额外负担,而是直接在主机的内核中运行。我们常常说使用镜像打包应用程序,使用 Docker 发布、部署应用程序。当你的应用成功在 Docker 上运行时,这个应用就是容器化应用。我们还可以将通过 Docker 启动的容器看成是操作系统中的一个进程。
Docker运行机制
docker pull 执行过程:
1)客户端将指令发送给docker daemon
2)docker daemon 先检查本地images中有没有相关的镜像
3)如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地
docker run 执行过程:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系(简版linux系统),并在只读的镜像层外面挂载一层可读写层
从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个 ip 地址给容器
执行用户指定的应用程序
基于Linux系统安装部署Docker
准备工作
一、安装打开虚拟机,准备准备CentOS(老师给了),本次以CentOS7为例进行安装

2、基于vmvare打开CentOS——用虚拟机打开老师给的文件解压后的准备CentOS文件(D:\Docker全部文件\CentOS7964-empty 或 百度网盘\Docker全部文件\CentOS7964-empty)



3、克隆CentOS(选择链接克隆-更省空间),命名为CentOS7964-docker






开启虚拟机系统







[root@centos7964 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.126.128 netmask 255.255.255.0 broadcast 192.168.126.255
inet6 fe80::20c:29ff:fee9:918a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e9:91:8a txqueuelen 1000 (Ethernet)
RX packets 287398 bytes 419668874 (400.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 127375 bytes 8442701 (8.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
....
打开 Linux远程链接工具 通过MobaXterm工具链接虚拟机系统



离线安装Docker系统
推荐使用课前资料中已经下载好的资源(D:\Docker全部文件\docker-setup.zip 或 百度网盘\Docker全部文件\docker-setup.zip)并解压,也可以按如下步骤自己下载,然后将资源放到一个目录再安装,例如:
一二三步使用下载好的资源,从第四步开始
(一二步:
一步:下载docker离线包https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
说明,也可以从https://download.docker.com/linux/static/stable/网址下载指定版本
二步:下载离线安装工具https://github.com/Jrohy/docker-install/
说明,将下载好的这个工具解压。
三步:将下载好的资源放在一个目录,例如:
)
四步:在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录),例如




docker-setup.zip解压后的文件打开 并上传到Linux系统

五步:执行安装操作
# 进入/root/setup/docker 文件夹
cd /root/setup/docker
# 为 install.sh添加执行权限
chmod +x install.sh
# 安装
./install.sh -f docker-20.10.6.tgz
安装成功后,会出现如下信息:
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
docker 20.10.6 install success!

六步:安装成功以后,检查安装状态
docker info

在线安装Docker系统
第一步:安装一组工具
sudo yum install -y yum-utils
第二步:设置 yum 仓库地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第三步:更新 yum 缓存
sudo yum makecache fast #yum 是包管理器
第四步:安装新版 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
Docker服务基本操作(上下箭头可以查看/运行之前运行过的指令)
查看Docker状态:查看docker是否启动了,是否是运行状态.
systemctl status docker


停止docker服务
systemctl stop docker
启动docker服务
systemctl start docker
设置Docker开机自启(Lunux一启动就会自动启动Docker)
systemctl enable docker
禁用Docker开机自启
systemctl disable docker
重新启动Docker服务
systemctl restart docker
查看Docker信息
docker info
查看docker info中具体key的信息,例如:
docker info | grep 'Docker Root Dir:'
Docker镜像加速
由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json
下面命令直接生成文件 daemon.json
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
Docker 镜像操作实践
Docker 容器操作实践
下载镜像(Image)
创建并启动容器(Container)
查看Docker中的容器(Container)
查看容器日志(logs)信息
停止(stop)或重启(Restart)容器(Container)
进入(exec)指定容器(Container)
从容器(Container)中退出(exit)从容器(Container)中退出(exit)
删除(rm)容器(Container)
Docker数据管理——对容器中的数据进行备份
Docker容器启动后,假如我们把容器给删除了,那么容器运行过程中产生的一些数据默认也会丢失,所以我们需要把数据保存起来
在容器中管理数据主要有两种方式:
