docker基本概念:
Docker基本管理和概念:
Docker是什么:开源的应用容器引擎。基于go语言开发的。运行在Linux系统当中的开源 的,轻量级的“虚拟机”。
Docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的,可移植,自给 自足的容器。
Docker的宿主机是Linux系统。集装箱可以理解为相互隔绝的容器(组件,应用程序APP), 每个容器都是一个独立的应用程序。
Docker的设计宗旨: build,ship and run any app,anywhere
Build:封装好的程序,只要部署即可使用,一次封装。
Ship and run any aopp:一次分装完成之后的程序,可以在任何环境运行。
Anywhere:任意宿主机。
一次封装,到处运行。
封装,分布,部署,运行,维护,运行,销毁。
可以一整套的方式管理应用程序的生命周期。
Docker为什么受欢迎:
- 灵活,在复杂的应用也可以实现容器化。
- 轻量级,小型的,不完整的,最小化封装的程序,与宿主机共享内核。
- 可互换,可以随时的升级,更新。
- 便携式,本地可以构建,在云平台上也可以实现部署。在任何地方运行。
- 可扩展,自动分发容器副本。
- 可堆叠,在一个宿主机上可以创建不同版本的同一容器,也可以是多个相同版本的同一 容器。
Linux的命令空间 namespace。是一种内核的特性,允许将一组系统资源隔离。在一个命名的进程在系统当中可以拥有独立的资源。
面试题:
Namespace的六项隔离:
- UTS(命名空间),系统调用参数:CLONE_NEWUTS,隔离内容:主机与域名,在UTS这 个命名当中创建,进程到自己的主机名和域名,与其他进程分隔开。
- IPC,系统调用的参数:CLONE_NEWIPC,隔离内容:信号量,消息队列,共享内存。在 IPC这个命名空间之中,进行可以拥有独立的进程间通信资源。
- PID(进程号),系统调用参数:CLONE_NEWPID,隔离内容:每个进程都有自己的独立的 进程号空间。
- Network (网络),系统调用参数:CLONE_NEWNET 隔离内容:网络设备,网络栈,以 及端口。每个 进程都有一个自己独立的网络资源。端口号。
- Mount:(挂载点),系统调用的参数:CLONE_NEWNS,隔离内容:挂载点,在mount这 个命名空间之中,每个进程或者设备都有自己的文件系统挂载点,相互之间互不干扰。
- User(用户,用户组),系统调用的参数:CLONE_NDEWUSER,隔离不同的用户和用户组。
基于这六个隔离项,实现了容器和容器之间,以及容器和宿主之间的资源隔离。
Docker的核心组件:
- 镜像:是docker的基础。最小单位。类似于虚拟机的ISO文件,一个镜像就是一个可执行的包,包里面包含了运行这个程序的所有内容(代码,配置文件,环境变量)
Docker镜像也是一个压缩包,不是一个解压文件,是一个环境部署的脚本,甚至包含了完整的操作系统。
- 容器:docker的容器就是基于镜像运行起来的实例,可以启动,停止,删除。每一个容器都是相互隔离的,互不可见。
- 仓库:保存镜像,所有的镜像都是从仓库当中拉取到。可以有公有仓库,还可以是私有仓库。镜像都是从仓库中拉取,镜像也保存在仓库之中。
下载到了本地:镜像 容器,日志 /var/lib/docker 宿主机。
Docker与传统虚拟机的区别:
特性 docker 虚拟机
启动速度 秒级 分钟级
计算能力损耗 几乎无 损耗50%
性能 接近原生系统 弱于原生系统
系统支持量 上千个 硬件系统来看(几十个)
隔离性 资源隔离(只是) 完全隔离
安全性 安全性差 安全性
Docker version 查看docker的版本
Docker只能支持64位系统
Docker info 查看docker所有信息
Docker安装完毕之后,客户端和服务端都在一起。都运行在一台机器上。
Overlay2:docker使用的文件系统驱动。
OverlayFS: overlay file system :联合文件系统,用于适配宿主机的文件系统,可以自动适配。
lowerDir:底层目录 docker的底层文件系统。一个或者多个镜像文件的根文件系统。
UpperDir:可写层 可以在容器运行时,在容器内进行写操作。实现容器的可写性。
MergeDir:合并目录 lowerdir和upperdir合并起来,就是容器的文件系统,用户看到的也就 是这个合并的视图
WorkDir:工作目录 处理文件系统的变更,当在容器内进行写操作时, overlayfs使用workdir; 来追踪文件系统的变更
- docker的镜像进行操作:
-
阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台阿里云镜像加速
一个镜像有多个标签,删除时只是删除标签,如果只剩最后一个,那么就是删除的镜像本身。
如果镜像已经被容器使用,先停容器,再删除容器,最后再删除镜像。
给予镜像创建容器:
Exit 退出容器
-d:可以让创建的容器以守护进程在后台运行,容器所运行的程序不会结束
- 没有镜像能不能直接 run(运行)
- 运行的程序是什么
没有镜像可以自行拉取, -d结合,给容器持续的命令,后台没有指令,容器没有可 运行的程序,将会直接退出
-it 形成交互式会话
d 后台运行 /bin/bash
--name 给容器命名
Nginx:1.22.0 镜像名称和标签,如果本地没有。可以自动下载
删除镜像;
删除容器 。 运行中的容器必须停止才能删除
导出的容器还是一个镜像,必须要 run create 才能成为容器
已经配置好的导出的容器镜像,可以直接使用(我们都是用的开发已经设置,配置好的容器 镜像)
总结:
Docker:就是一个轻量级的虚拟机,宿主机是Linux
Docker 镜像 容器 仓库
Docker search 搜索镜像
Docker pull nginx:1.22.0 获取镜像
Docker images 查看镜像
Docker rmi -f 强制删除镜像(删除了在运行的容器的镜像,对容器会有影响吗?)
Docker tag nginx:1.22.0(在镜像当中已有的标签)nginx:guoqi(给她新的标签)硬链接(复 制了源镜像)
Docker save -o /opt/nginx.tar(一般用XXX.tar)nginx:1.22.0(这个镜像要已经存在)
Docker load -i xxx.tar
Docker push pplok1230/nginx:guoqi
Pplok1230:dockerhup的用户名 镜像名称和标签
Docker容器:
-itd: 表示后台运行指定程序,而且创建一个交互式的shell。用户输入操作命令
Docker run -itd nginx:1.22.0 --name test1 /bin/bash
如果容器灭有执行命令,容器创建完成之后将会立刻退出
Docker exec -it 容器名/容器ID
Docker ps 只显示正在运行的容器
Docker -ps -a 显示所有容器,包括没有运行的容器
Docker export -o guoqi.tar 容器名/容器ID
Docker import guoqi.tar --nginx:guoqi (尽量不要重复标签名)
Docker cp 容器名/容器ip:/etc/nginx/nginx.conf /opt
Docker cp /opt/123.txt 容器/容器ip:/etc/nginx/nginx.conf
Docker rm 删除容器
正在运行的容器
Docker rm -f
Docker stop
Docker rm
更多推荐
所有评论(0)