Docker 必须跑在Linux内核上
镜像是一个轻量级可执行的独立软件包
新建一个docker容器只需要几秒钟
Docker常用命令
启动类命令 镜像命令 容器命令
docker images docker search --limit 5 redis docker pull redis:6.0.8
docker system df 查看镜像/容器/数据卷所占的空间
删除镜像 rmi
删除所有镜像 docker rmi -f S(docker images -qa)
每个容器其实就是一个简易版的Linux环境
- 新建+启动容器
- docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 例子:docker run -it --name=myu1 ubuntu bash
- 上面这个例子这条命令可以交互式运行一个钨棒图容器 名字取为 myu1
-i 是interactive t是tty
-it可以交互式运行 表示我在centos中使用docker容器跑了一个Ubantu
docker ps 可以查看什么时候启动过什么容器 罗列出正在运行的容器实例
从容器中退出 exit 容器会停止 ctrl +p+q退出但容器不停止
注意 rmi是删除镜像 而 rm是删除容器 大概是removeImage和remove的意思
守护式容器:
使用镜像centos:latest以后台模式启动一个容器
docker run -d centos 很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
最佳的解决方案是,将你要运行的程序以前台进程的形式运行,
常见就是命令行模式,表示我还有交互操作,别中断,O(∩_∩)O哈哈~
查看容器日志:docker logs 容器ID
重新进入正在运行的容器实例
使用exec重新进入容器的bash后 使用exit退出是不会终止该容器的
如果使用 attach进入的话 使用exit退出是会终止该容器的 尽量别用
对比 新技术 云原生 容器化
可以将容器上的文件拷贝到主机路径中
还可以将容器中的内容打包导入导出到主机上
联合文件系统 镜像分层的意义是下载简单 可复用
镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。
比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。
关于容器层与镜像层
可以将容器提交为镜像:例子 首先用一个容器安装好原本没有的vim包 然后将其提交到镜像中 再通过镜像打开容器来使用
vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi iMproved),与vi编辑器完全兼容,而且实现了很多增强功能。
关于镜像分层的总结:
本地镜像发布到阿里云:
只需要按照阿里云的提示一步步来即可
将镜像下载到本地也很简单 只需要一条命令:
docker pull registry.cn-hangzhou.aliyuncs.com/xyp_images/dockerrepo:[镜像版本号]
私有库(自己个人的库)下载 :docker pull registry 相当于本地有个私有的Docker Hub 具体的看操作文档 详细说了如何推送本地仓库中的内容到阿里云上
关于docker容器数据卷:启用了数据卷的容器实例他的数据会保存在宿主机的某个磁盘中
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
关于挂载:容器可以将一些配置信息挂载到宿主机上