一 概述 及介绍
Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。
?Docker核心对象是:
1.镜像(image)
Docker 镜像是一个特殊的文件系统(https://hub.docker.com/),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。例如JDK镜像、Centos镜像、MySQL镜像等,可以暂时先将其理解为一个安装程序。 ?
2.容器(container)
Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。
?Docker架构图
?
1.Docker Host是我们的docker宿主机(就是安装了docker的操作系统) 2.Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images中 3.Docker Daemon是docker的服务线程,处理Docker客户端命令。 4.Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。 ?
运行机制:?
docker pull
1)客户端将指令发送给docker daemon 2)docker daemon 先检查本地images中有没有相关的镜像 3)如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地
docker run
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系(简版linux系统),并在只读的镜像层外面挂载一层可读写层
- 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
二? ?Docker? 安装
1.第一步:准备CentOS(用课前资料中的CentOS7964),本次以CentOS7为例进行安装。
2.第二步:基于vmvare打开CentOS
?3.第三步:克隆CentOS(选择链接克隆-更省空间),命名为CentOS7964-docker
?
?
4? 开启虚拟机系统
4.1第一步:启动虚拟机,默认账号密码为root/root
4.2第二步:打开终端,通过ifconfig指令检查网络
?4.3第三步:通过MobaXterm工具链接虚拟机系统
?
?
?
?
5 卸载在线安装的Docker?
sudo yum remove docker-ce \ ? ? ? ? ? ? ? ? docker-ce-client \ ? ? ? ? ? ? ? ? docker-client-latest \ ? ? ? ? ? ? ? ? docker-common \ ? ? ? ? ? ? ? ? docker-latest \ ? ? ? ? ? ? ? ? docker-latest-logrotate \ ? ? ? ? ? ? ? ? docker-logrotate \ ? ? ? ? ? ? ? ? docker-engine
6. 在线安装Docker
6.1?第一步:安装一组工具
sudo yum install -y yum-utils?
6.2第二步:设置 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 ?
6.3 第三步:更新 yum 缓存
sudo yum makecache fast #yum 是包管理器
6.4 第四步:安装新版 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
7 离线安装Docker
7.1第一步:下载docker离线包
https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
7.2?第二步:下载离线安装工具
?https://github.com/Jrohy/docker-install/
7.3第三步:将下载好的资源放在一个目录
7.4第四步:执行安装操作
# 进入/root/setup/docker 文件夹 cd /root/setup/docker
# 为 install.sh添加执行权限 chmod +x install.sh
# 安装 ./install.sh -f docker-20.10.6.tgz
7.5 第五:安装成功以后,检查安装状态
docker info
三 Docker 服务的基本操作
1. 启动Docker 服务???systemctl start docker
2.查看Docker 状态? ?systemctl status docker
3.设置Docker 开机自启? ?systemctl enable docker
4.重启Docker 服务 system restart? docker
5.查看Docker 信息 docker info
6?停止docker服务 systemctl stop docker
7.?Docker镜像加速
下面命令直接生成文件 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
cat讲解:查看/创建
cat<<EOF> +目录 表示覆盖目录的内容,没有就创建,到EOF结束,在插不进去了
cat<EOF>>+目录 表示内容追加,在EFO后面可以追加内容
四? Docker镜像操作
1.下载镜像 docker pull? 镜像的名字
2.浏览镜像文件 docker images
3.查看镜像详情 docker inspect 镜像的名字
4.查看镜像历史 docker history? 镜像的名字
5.导出镜像文件 docker save? 镜像的名字 | gzip > 自己给镜像起名(xxx.tar.gz)
6 .删除镜像文件 docker image rm? 镜像的名字
7.导入镜像?docker load < 镜像的名字
8.运行镜像文件 docker run?? 镜像的名字
五 Docker容器操作
1.下载镜像:docker pull +镜像名
2.查看镜像 : docker images
3.创建并启动镜像: docker run -it +镜像名 bash
解释:
1)镜像名, 或 image id 的前几位, 2)-it 这是两个参数(-i表示交互式操作, -t 表示终端) 3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。
4 查看docker运行中的容器 docker ps
5.查看docker运行中的所有容器 docker ps -a
6.查看容器日志信息 docker container logs +容器的id
7.停止运行的容器 docker container? stop + 容器ID
8.重新启动容器 docker container restart +容器ID
9.进入指定容器? docker exec -it? +容器的ID dash?
10 退出容器 exit
11删除容器? docker container rm 容器ID
12清理所有终止状态容器 docker container prune
六?Docker数据管理
1.在容器中管理数据主要有两种方式:
1.1 挂载主机目录 (Bind mounts)-最常用 (docker run -v 宿主机目录:容器目录)
1.2?数据卷(Volumes)
2.数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
3.创建数据卷?docker volume??create container-vol
4.查看所有数据卷 docker volume ls
5.查看指定 数据卷 的信息 docker volume inspect??container-vol
6.启动挂载数据卷的容器
docker run -it --mount source=container-vol,target=/root centos:7 bash 简写? docker run -it? -v??container-vol :/root? centos:7 bash
?7.删除数据卷(如果数据卷被容器使用则无法删除)
? ? docker volume rm??container-vol
8.清理无主数据卷 docker volume prune
9.挂载主机目录
docker run -it -v /usr/app:/opt/app centos:7 bash
解释:
1)/usr/app:为宿主机目录 2)/opt/app: 为启动容器的一个目录 3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
10查看挂载目录信息 docker inspect 容器ID
?
?
|