目录
1.架构类型
2.应用产品
3.容器特点
4.六项隔离
5.Docker核心概念
镜像
容器
仓库
6.安装docker
7.命令
镜像操作
容器操作
8.docker网络
寄居架构 真实的操作系统上安装虚拟化软件然后再虚拟机上安装虚拟化系统 稳定性不高 真机掉了 虚拟机也掉(个人搭建)
原生架构 虚拟软件直接按在硬件上 不依赖操作系统 稳定
vmware workstation 个人在windows安装虚拟机
vmFUsion 个人机器MAC安装虚拟机
EXSI (vmware vsphere) 全虚拟化 直接用物理硬件 高性能 (原生)
Xen (xen hypervisior) kernel-xen 内核
KVM rehl 6
灵活:即使是最复杂的应用也可以集装箱化
轻量级:容器利用并共享主机内核
可互换:可以即时部署更新和升级
便携式:可以在本地构建,部署到云,并在任何地方运行
可扩展:可以增加并自动分发容器副本
可堆叠:可以垂直和即时堆叠服务
namespace | 系统调用参数 | 隔离内容 |
UTS | CLONE_NEWUTS | 主机名与域名 |
IPC | CLONE_NEWWIPC | 信号量、消息队列和共享内存 |
PID | CLONE_NEWPID | 进程编号 |
NETWORK | CLONE_NEWNET | 网络设备、网络栈、端口等 |
MOUNT | CLONE_NEWNS | 挂载点(文件系统) |
USER | CLONE_NEWUSER | 用户和用户组(3.8以后的内核才支持) |
Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。
Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。
Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。
Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
docker-ce-20.10.18
systemctl start docker.service
systemctl enable docker.service
docker version 查看docker版本 docker info 信息查看
搜索镜像 docker search 关键字
获取镜像 docker pull 仓库名称
查看本地所有镜像 docker images
根据镜像标识ID获取详细信息 docker inspect 镜像ID号
为本地的镜像添加新的标签 docker tag 名称:标签 新名称:新标签
删除镜像 docker rmi 仓库名称:标签 或 docker rmi 镜像ID号
### 如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像
存出镜像 将镜像保存成为本地文件 docker save -o 存储文件名 存储的镜像
载入镜像 将镜像文件导入到镜像库中 docker load < 存出的文件 或 docker load -i 存出的文件
容器创建 docker create [选项] 镜像
### 常用选项:
-i:让容器开启标准输入
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell
查看容器的运行状态 docker ps -a(查看所有容器运行状态)
启动容器 docker start 容器的ID/名称
创建并启动容器 docker run 容器ID
可以直接执行 docker run 命令 等同于先执行 docker create 命令 再执行 docker start 命令
终止容器运行 docker stop 容器的ID/名称
容器的进入 docker exec -it 容器ID/名称 /bin/bash
复制到容器中 echo abc123 > ~/test.txt docker cp ~/test.txt 容器ID:/opt/
从容器复制文件到主机 docker cp 容器ID:/opt/test.txt ~/abc123.txt
容器的导出与导入 出 docker export 容器ID/名称 > 文件名
入 cat 文件名 | docker import – 镜像名称:标签
删除容器 docker rm [-f] 容器ID/名称(要先stop终止)
Docker 的网络模式
Host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围
None:该模式关闭了容器的网络功能
Bridge:默认为该模式,此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat 表配置与宿主机通信
### 查看docker网络列表 docker network ls 或 docker network list
### 使用docker run创建Docker容器时,可以用 --net 或 --network 选项指定容器的网络模式
host模式:使用 --net=host 指定
none模式:使用 --net=none 指定
container模式:使用 --net=container:NAME_or_ID 指定
bridge模式:使用 --net=bridge 指定,默认设置,可省略