Docker基本管理和概念:

Docker是什么:开源的应用容器引擎。基于go语言开发的。运行在Linux系统当中的开源 的,轻量级的“虚拟机”。

Docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的,可移植,自给 自足的容器。

Docker的宿主机是Linux系统。集装箱可以理解为相互隔绝的容器(组件,应用程序APP), 每个容器都是一个独立的应用程序。

Docker的设计宗旨: build,ship and run any app,anywhere

Build:封装好的程序,只要部署即可使用,一次封装。

Ship and run any aopp:一次分装完成之后的程序,可以在任何环境运行。

Anywhere:任意宿主机。

一次封装,到处运行。

封装,分布,部署,运行,维护,运行,销毁。

可以一整套的方式管理应用程序的生命周期。

Docker为什么受欢迎:

  1. 灵活,在复杂的应用也可以实现容器化。
  2. 轻量级,小型的,不完整的,最小化封装的程序,与宿主机共享内核。
  3. 可互换,可以随时的升级,更新。
  4. 便携式,本地可以构建,在云平台上也可以实现部署。在任何地方运行。
  5. 可扩展,自动分发容器副本。
  6. 可堆叠,在一个宿主机上可以创建不同版本的同一容器,也可以是多个相同版本的同一 容器。

Linux的命令空间 namespace。是一种内核的特性,允许将一组系统资源隔离。在一个命名的进程在系统当中可以拥有独立的资源。

面试题:

Namespace的六项隔离:

  1. UTS(命名空间),系统调用参数:CLONE_NEWUTS,隔离内容:主机与域名,在UTS这 个命名当中创建,进程到自己的主机名和域名,与其他进程分隔开。
  2. IPC,系统调用的参数:CLONE_NEWIPC,隔离内容:信号量,消息队列,共享内存。在 IPC这个命名空间之中,进行可以拥有独立的进程间通信资源。
  3. PID(进程号),系统调用参数:CLONE_NEWPID,隔离内容:每个进程都有自己的独立的 进程号空间。
  4. Network (网络),系统调用参数:CLONE_NEWNET 隔离内容:网络设备,网络栈,以 及端口。每个 进程都有一个自己独立的网络资源。端口号。
  5. Mount:(挂载点),系统调用的参数:CLONE_NEWNS,隔离内容:挂载点,在mount这 个命名空间之中,每个进程或者设备都有自己的文件系统挂载点,相互之间互不干扰。
  6. User(用户,用户组),系统调用的参数:CLONE_NDEWUSER,隔离不同的用户和用户组。

基于这六个隔离项,实现了容器和容器之间,以及容器和宿主之间的资源隔离。

Docker的核心组件:

  1. 镜像:是docker的基础。最小单位。类似于虚拟机的ISO文件,一个镜像就是一个可执行的包,包里面包含了运行这个程序的所有内容(代码,配置文件,环境变量)

     Docker镜像也是一个压缩包,不是一个解压文件,是一个环境部署的脚本,甚至包含了完整的操作系统。

  1. 容器:docker的容器就是基于镜像运行起来的实例,可以启动,停止,删除。每一个容器都是相互隔离的,互不可见。

  1. 仓库:保存镜像,所有的镜像都是从仓库当中拉取到。可以有公有仓库,还可以是私有仓库。镜像都是从仓库中拉取,镜像也保存在仓库之中。

下载到了本地:镜像 容器,日志  /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; 来追踪文件系统的变更

  1. docker的镜像进行操作:
  2. 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台阿里云镜像加速

一个镜像有多个标签,删除时只是删除标签,如果只剩最后一个,那么就是删除的镜像本身。

如果镜像已经被容器使用,先停容器,再删除容器,最后再删除镜像。

给予镜像创建容器:

  Exit 退出容器

-d:可以让创建的容器以守护进程在后台运行,容器所运行的程序不会结束

  1. 没有镜像能不能直接 run(运行)
  2. 运行的程序是什么

没有镜像可以自行拉取,  -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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐