Docker 概念
Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。
Docker 说明
镜像 Image
所谓镜像,就是特殊的文件系统,提供容器运行时需要的(程序\库\资源\配置文件)外,还包含运行时需要的配置参数(环境变量\匿名卷\用户等)
容器 Container
所谓容器,就是运行镜像的载体,基于镜像创建\启动\运行镜像中的文件
架构图
**Client ** 用户端 Docker daemon Docker服务 Registry 镜像仓库
Pull 执行机制 1、用户端发送指令到Docker daemon 2、Docker daemon 首先检查本地是否有镜像 3、如果没有则向镜像服务器发送请求,远程下载到本地
Run 执行机制 1、检查本地是否存在指定镜像,没有则向镜像仓库拉取 2、利用镜像创建并启动一个容器 3、分配一个文件系统,并在只读镜像外面挂在一层可读写层 4、从宿主机配置的网桥接口桥接一个虚拟网口到容器中 5、从网络此分配一个IP给容器
安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
Docker 镜像加速
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 info 查看docker信息
镜像操作
下载镜像
#语法 docker pull 镜像名
docker pull hello-world
查看镜像文件
docker images
查看镜像详情
#语法 docker inspect 镜像名
docker inspect hello-world
查看镜像历史
docker history hello-world
导出镜像文件
docker save hello-world | gzip > hello.world.tar.gz
删除镜像文件
docker image rm hello-world
#强制删除运行的 :
docker image rm -f hello-world
导入镜像文件
docker load < hello-world.tar.gz
运行镜像文件
docker run hello-world
#交互式
docker run -it 镜像名 bash
#后台运行
docker run -d 镜像名
容器操作
下载镜像
docker pull centos:7
创建并启动容器
docker run -it 镜像名 bash
查看容器
# 运行中
docker ps
# 全部
docker ps -a
查看容器日志
#container 可省略
docker container logs 镜像ID
重启/关闭/开启容器
docker start 容器Id/名
docker stop 容器Id/名
docker restart 容器Id/名
删除容器
docker rm 容器Id
推出容器
exit
清理非启动下的容器
docker container prune
数据管理操作
创建数据卷
docker volume create 名
查看所有数据卷
docker volume ls
查看详细信息
docker volume inspect 名
挂载数据卷
docker run -it --mount source=数据卷名,target=路径 镜像名 bash
docker run -it -v source=数据卷名 镜像名 bash
删除数据卷
docker volume rm 名
清理没有用到的数据卷
docker volume prune
挂在目录
docker run -it -v 宿主机路径:容器路径 镜像 bash
Dockerfile
~ ~ ~
|