docker学习记录
2022-11-07 16:44:01 0 举报
AI智能生成
docker学习记录
作者其他创作
大纲/内容
镜像
是什么
UnionFS(联合文件系统Union File System)
docker镜像加载原理
为什么镜像要分层
镜像commit
docker commit 提交容器副本使之成为一个新的镜像
docker commit -m="描述信息" -a="作者信息" 容器ID 创建的目标镜像名:[标签名]
容器数据卷(date volume)
是什么
子主题
特点
1.数据卷可在容器间共享或重用
2.卷中的更改可以直接生效
3.数据卷中的更改不会包含在镜像的更新中
4.数据卷的生命周期一直持续到没有容器使用它为止
数据卷添加
直接命令
docker run -it -v /宿主机绝对路径:/容器内目录 镜像名
(只读)docker run -it -v /宿主机绝对路径:/容器内路径:ro 镜像名
Dockerfile添加
1、创建一个Dockerfile文件,写入内容
2、生成镜像:docker build -f dockerfile绝对路径 -t 镜像名 .
3、运行容器,通过docker inspect 容器id可以看到自动挂载的宿主机地址
数据卷容器
是什么
容器挂载数据卷,其他容器通过挂载这个父容器实现数据共享,这个容器就是数据卷容器
容器间传递共享:--volumes-from
1、以一个配置了数据卷镜像生成挂载了数据卷的容器yxh1
2、以此镜像生成容器yxh2时加上--volumes-from参数
eg: docker run -it --name yxh2 --volumes-from yxh1 centos/volumes
eg: docker run -it --name yxh2 --volumes-from yxh1 centos/volumes
Dockerfile
是什么
构建docker镜像的构建文件,是有一系列命令和参数构成的脚本
基础知识
1、指令都为大写且后面要跟至少一个参数
2、指令从上到下按顺序执行
3、#表示注释
4、每条指令都会创建一个新的镜像层,并提交
Dockerfile执行的大致流程
1、docker从基础镜像运行一个容器
2、执行一条指令对容器修改
3、类似docker commit提交一个新的镜像
4、基于刚提交的镜像运行下一个容器
5、执行下一条指令
保留字指令
FROM
基础镜像,当前镜像是基于哪个镜像的
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
容器构建时需要执行的命令
EXPOSE
当前容器对外暴露的端口
WORKDIR
指定创建容器后,终端默认登录时的工作目录
ENV
构建镜像的过程中设置环境变量
ADD
将宿主机目录下的文件拷贝进镜像,且会自动处理URL和解压tar压缩包
COPY
拷贝文件和目录到镜像中
COPY source target
COPY ["source","target"]
VOLUME
容器数据卷
CMD
指定容器启动时要执行的命令
Dockerfile中可以有多个CMD,但只有最后一个会生效,而且会被dockers run之后的参数替换
ENTRYPOINT
和CMD一样,指定容器启动时要执行的命令
CMD只能有一个,且会被覆盖,ENTRYPOINT有多个会追加
ONBUILD
父镜像被子镜像继承后,父镜像的ONBUILD会被触发
优雅的使用 Dockerfile 定制镜像
安装
原理
docker run helloword流程
1、从本地寻找镜像
2、有就以该镜像为模板生产容器实例运行
3、没有就去云端下载镜像到本地,然后执行流程2
为什么比虚拟机快
1、虚拟机多了一层hypevisor(virtaul machine monitor 虚拟机监视器),管理虚拟化的硬件资源
2、虚拟机里有一个完整的操作系统,加载操作系统比较耗时耗资源。而docker和宿主机共享操作系统
常用命令
帮助命令
docker version
docker info
docker --help
镜像命令
docker images
docker search [OPTION] 镜像名字
docker pull 镜像名字[:tag]
docker rmi 镜像名字/镜像id
docker history 镜像id
容器命令
新建并启动容器
docker run [OPTION] image [COMMEND] [ARG…]
列出所有容器
docker ps [OPTION]
退出容器
停止退出exit
ctrl+P+Q不停止退出
启动容器
docker start 容器id/容器名
重启容器
docker restart 容器id/容器名
停止容器
docker stop 容器id/容器名
强制停止容器
docker kill 容器id/容器名
删除容器
docker rm 容器id/容器名
重要命令
启动守护式容器
docker run -d 容器名
查看容器日志
docker logs -f -t --tail 容器ID
查看容器内运行的进程
docker top 容器id
查看容器内部细节
docker inspect 容器id
进入正在运行的容器,并以命令行交互
在容器外执行容器内命令:docker exec -it 容器ID 命令
直接进入容器内:docker attach 容器id
从docker拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
复合命令
停止所有容器
删除所有容器
删除所有镜像
查看容器占用
Docker资源(CPU/内存/磁盘IO/GPU)限制与分配指南
导入导出
将docker容器保存为 tar 包
将镜像保存为.tar文件
从 tar 包导入docker镜像
Docker-Compose配置文件示例
收藏
0 条评论
下一页