一. Docker简介
docker是一款容器虚拟技术,运行依赖linux内核。Docker是一个C/S结构。
- Docker通过client与Docker Daemon建立通讯,并发送请求给Docker Daemon;
- Docker Daemon作为Docker的主体部分,通过Docker Server的提供的功能结构建立通讯请求;
3.Docker Engine(执行引擎)执行内部的一系列工作,每一项工作都是以一个Job的形式存在;- 当Job的运行过程中需要镜像时,从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载的镜像按照Graph的形式存储;
- 通过网络驱动Network driver创建并配置docker的网络环境;
- 通过Exec driver来限制Docker执行的资源及用户执行指令;
- Lib Container是一项独立的容器管理包,Network driver及Exec Driver都是听过Lib Container来执行对容器的操作。
二. Docker三要素
1.镜像 image
可以创建容器,一个镜像可以创建多个容器。包含了最小的一个linux文件系统,本省也是一个文件也叫镜像文件。
2.容器 container
根据镜像文件生产容器,一个容器可以运行一个或一组应用,可以启动,停止,删除。
3.仓库 repository
存放镜像
cat /etc/redhat-release #查看系统版本
三.容器的生命周期
- 检查本地是否存在镜像,没有的话就去远程仓库拉取;
- 利用镜像启动容器
- 在容器镜像外面加一层可写层 writable
- 从宿主机网桥接口中虚拟一个接口到容器
- 从一个地址池配置一个IP地址给容器
- 执行用户指令
- 指令执行完成后容器终止
四.Docker安装
1.移出系统中历史的docker
//卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. 安装GCC
//安装Gcc
yum -y install gcc
//安装gcc-c++
yum -y install gcc-c++
3.安装yum-utils
//安装yum-utils包
yum install -y yum-utils
4.设置镜像仓库
### 方式一
//设置镜像仓库 国外的
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
### 方式二
--`建议使用 阿里云镜像地址`
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.更新索引
yum makecache fast
6.安装docker相关的
### 方式1
//安装最新的docker
yum install docker-ce docker-ce-cli containerd.io
### 方式2
//列出并排序您的存储库中可用的版本。此示例按版本号从最高到最低对结果进行排序
yum list docker-ce --showduplicates | sort -r
查询结果如下所示,第二列为版本号:
> docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable
> docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable
> docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable
> docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable
> docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable
> docker-ce.x86_64 3:20.10.4-3.el7 docker-ce-stable
> docker-ce.x86_64 3:20.10.3-3.el7 docker-ce-stable
//安装特定版本的 Docker Engine
yum install docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io
7.启动docker
systemctl start docker
8.查看docker版本
docker version
9.查看镜像
docker images
10.卸载docker依赖
yum remove docker-ce docker-ce-cli containerd.io
11.删除资源
rm -rf /var/lib/docker
12.配置docker 镜像
方式一:
sudo mkdir -p /etc/docker
//阿里云镜像加速器地址在 阿里云上`弹性计算`->`容器镜像`->`镜像工具`->`镜像加速器`->`选择系统复制加速器地址`
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ssssjy.midddarror.aliysdaduncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
方式二:在/etc/docker/daemon.json中修改配置文件内容
{
"graph":"/data/docker",
"insecure-registries":[],
"storage-driver":"overlay2",
"registry-mirrors": ["https://1xen9v7z.mirror.aliyuncs.com"],
"bip":"172.200.1.0/24",
"live-restore":true
}
五.Docker的常用命令
一.Docker启动及帮助命令
//1.启动docker
systemctl start docker
//2.停止docker
systemctl stop docker
//3.重启docker
systemctl restart docker
//4.查看docker状态
systemctl status docker
//5.查看docker概要信息
docker info
//6.查看docker帮助文档
docker --help
//7.查看docker某个命令的帮助文档
docker XXX --help
//8.设置docker开机启动
systemctl enable docker
二. 镜像命令
//1.查看所有docker镜像
docker images
//2.查询远程仓库中XXX的镜像是否存在 --limit 5 参数表示查询前5个 docker search --limit 5 redis
docker search XXX
//3.拉取镜像 不带version表示拉取的是最新的
docker pull XXX:VERSION
//4.查看当前docker中有多少镜像、容器、本地卷 及占用的空间
docker system df
//5.删除镜像、容器 参数-f是强制删除 docker rmi -f $(docker images -qa) 删除全部镜像
docker rmi -f 镜像名1:tag 镜像名2:tag
三. 容器命令
//1.新建并启动容器
docker run [options] 镜像名
`
options 参数说明:
--name 容器名称
-i 以交互模式运行容器 通常-t一起使用
-t 为容器重新分配一个伪输入终端
-P 随机端口映射
-p 指定端口映射
-d 后台运行 后台守护模式
`
//2.查询当前容器信息
docker ps [options]
`
options 参数说明:
-a 所有的额容器 当前运行的及历史的容器
不带参数查询出来的是正在运行的容器
`
//3.退出容器
exit #run进入容器 退出容器停止
ctrl+p+q #run进入容器 退出容器不停止
//4.启动已停止运行的容器
docker start 容器ID或容器名
//5.停止容器
docker stop 容器ID或容器名
//6.重启容器
docker restart 容器ID或容器名
//7.强制停止容器
docker kill 容器ID或容器名
//8.删除已停止的容器 -f 是强制删除
docker rm 容器ID或容器名
//9.查看容器日志
docker logs 容器ID
//10.查看容器内的运行进程
docker top 容器ID
//11.查看容器内部信息
docker inspect 容器ID
//12.进入运行的容器
docker exec -it 容器ID /bin/bash #重新启动一个进程的方式进入;用exit退出,容器不会退出
docker attach 容器ID #用exit退出,容器不会退出
//13.拷贝容器内的资料到本地机器
docker cp 容器ID:容器内资源目录 需要拷贝到本地的目录
//14.将容器导出
docker export 容器ID>本地导出路径
//15.将tar导入到容器
cat tar文件 | docker import - 容器用户/容器名:版本号
//16.创建新的镜像
docker commit [OPTIONS] 容器ID 用户用户名/容器名:版本号
OPTIONS:
-a 作者
-c 将 Dockerfile 指令应用于创建的镜像
-m 提交消息
-p 提交期间暂停容器
四. 容器数据卷(Volume)
//数据挂载
docker run -v 宿主机目录:容器内目录:rw --privileged=true 镜像ID
在 docker run 命令后加上-v开启文件挂载,:rw表示容器内可读可写 默认就是可读可写
–privileged=true表示让container内的roo用户正真的root权限.
数据挂载可以实现宿主机与容器间的数据共享及数据同步。
注意:如果容器没有数据挂载,在删除镜像后,在容器内的数据会丢失。