Docker基本管理

那如何实现应用A和应用Bl隔离

应用和应用的嗝离,如何进行判断,以操作系统维度,应用A与应用B隔离,在操作系统中,是通过namespaces(名称空间、命名空间)实现的,只要实现以下6个空间隔离,才能认为两个应用实现了完全/完整隔离

容器隔离了6个名称空间( namespace资源隔离-用容器化技术封装)
mount  文件系统,挂载点—》》一个文件系统内,不能重复挂载一个指定目录,例如:/mnt19 
user    操作进程的用户和用户组
pid     进程编号
uts     主机名和主机域
ipc      信号量、消息队列,共享内存(理解,不同的应用调用内存资源的时候应该使用不同的内存空间)
net      网络设备、网络协议栈、端口等
docker是啥

Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。
是一个开源的应用容器引擎,让开发者可以打包方式封装应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的.inux或者windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制(隔离机制),相互之间不会有任何接口沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制

docker把容器化技术做成了标准化平台(docker 统一/指定了容器化技术的标准化平台)
使用docker有什么意义
docker引擎统一了基础设施环境-docker环境,image,封装一个简易的操作系统
docker引擎统一了程序打包(装箱)方式-docker镜像images
docker引擎统一了程序部署(运行)方式-docker 容器,基丁锐像,运仃内行奋飞可e1个激活Windows
实现了一次构建、多次、名处使用

面试题

#cgroup和namespaces 两者构成了docker底层原理
cgroup 资源控制与namespaces 结合控制管理了6个名称空间资源(以下)
mount  文件系统,挂载点—》》一个文件系统内,不能重复挂载一个指定目录,例如:/mnt19 
user    操作进程的用户和用户组
pid     进程编号
uts     主机名和主机域
ipc      信号量、消息队列,共享内存(理解,不同的应用调用内存资源的时候应该使用不同的内存空间)
net      网络设备、网络协议栈、端口等
docker 三要数

镜像:模板
容器:基于镜像,运行状态/运行时状态
仓库:存放镜像模板

Docker的使用场景

war jar:github gitlab 私有仓库(代码仓库)jenkins (测试)
(应用程序封装/构建镜像)运维下载,使用容器技术进行运行/发布
打包诚用程序简单部署
可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云,持续集成和持续交付(CI/CD) :开发到测试发布部署微服务
提供PAAS产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAA.S、Docker (KSS)属于PAS

Docker引擎(Docker Engine )

Docker Engine是具有以下主要组件的c/s客户端-服务器应用程序:
server端∶服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
CLIENT端: REST’ API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。106 命令行界面(CLI)客户端( docker命令)。
docker run,docker start,docker rm

Docker的架构(Docker architecture)

Docker使用客户端-服务器架构。Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。
Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快
Docker Client:客户端/提供一个与用户交互,展示的平台+管理、控制docker服务端(功能)的工具docker
Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。 Docker客户端可以与多个守护程序通信。
Docker daemon:守护进程
Docker守护程序(dockerd)侦听Docker
API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
Docker images:镜像

容器可以被打包成镜像

Docker container:容器
Docker registry:镜像仓库
存储镜像的地方,默认在公共的Docker Hub上查找,可以搞个人仓库

面试题

不同点             containerI                  VM
启动速度           秒级(进程控制)                分钟级(来宾操作系统管理)
运行性能           接近原生(直接在内核中运行90% )   50号左右损失
磁盘占用           MB                           GB(操作系统镜像2G)
数量              成白上千(进程)                 一般几十台(操作系统级别)
隔离性            进程级别                       系统级别(更彻底)
操作系统          主要支持Linux (只需要支持引擎)    几乎所有(吃宿主机操作系统的支持)
封装程度       只打包项目代码和依赖关系,共享宿主机内核  完整的操作系统,与宿主机隔离

docker和vm ,解决了虚拟机的什么问题:
vm :
docker解决了vm的一个环境孤岛的问题
docker可以自定义传参(创建-创建镜像/容器、启动(基于镜像启动)之前)

实验(两台)

安装docker依赖包
[root@docker1 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

设置阿里云镜像源
[root@docker2 ~]# cd /etc/yum.repos.d/
[root@docker2 yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述
在这里插入图片描述

安装docker-ce
[root@docker1 yum.repos.d]# yum -y install docker-ce
[root@docker1 yum.repos.d]# systemctl start docker
[root@docker1 yum.repos.d]# systemctl enable docker
设置镜像加速
[root@docker1 yum.repos.d]# sudo mkdir -p /etc/docker
[root@docker1 yum.repos.d]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://qtt0mp44.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://qtt0mp44.mirror.aliyuncs.com"]
}
[root@docker1 yum.repos.d]# sudo systemctl daemon-reload
[root@docker1 yum.repos.d]# sudo systemctl restart docker
网络优化
[root@docker1 docker]# vim /etc/sysctl.conf

在这里插入图片描述

[root@docker1 docker]# systemctl restart network
[root@docker1 docker]# systemctl restart docker
[root@docker1 docker]# docker run hello-world

在这里插入图片描述

[root@docker1 docker]# docker images

在这里插入图片描述

1、docker client客户端连接到了服务端(服务端是以一个守护进程的形式跑在操作系统里面的)restful api279典型的c/s架构
2、由docker服务端的守护进程从docker hub 上下载了镜像
3、服务端创建了一个新的容器,然后从拉去的这个镜像启动了一个容器,容器执行了脚本/可执行程序让我们可以查看/使用
4、docker服务端把这些信息流(传递〉返回到客户端并展示出来,(展示在终端上)docker client可以是多种形式,比如"docker"命令工具所在的终端
查询docker版本
[root@docker1 ~]# docker version
[root@docker1 ~]# docker info

在这里插入图片描述
在这里插入图片描述

搜索镜像
[root@docker1 ~]# docker search nginx
[root@docker1 ~]# docker search centos:7

在这里插入图片描述
在这里插入图片描述

下载镜像
[root@docker1 ~]# docker pull nginx

在这里插入图片描述

获取镜像信息
[root@docker1 ~]# docker inspect hello-world

在这里插入图片描述

添加镜像标签
[root@docker1 ~]# docker tag nginx:latest nginx:lnmp
[root@docker1 ~]# docker images

在这里插入图片描述

删除
[root@docker1 ~]# docker rmi nginx:lnmp
Untagged: nginx:lnmp
镜像导出
[root@docker1 ~]# docker save -o centos_1 centos
[root@docker1 ~]# ls

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

容器操作

查询容器
[root@docker1 ~]# docker ps -a

在这里插入图片描述

创建容器
[root@docker1 ~]# docker create -it nginx:latest /bin/bash
fff66225d74194c6462278696ef00e26dcfe81975fa488047cb685e625f23ff2
-i:让容器的标准输入保持打开
-t:分配一个伪装端
-d:后台守护进程的方式运行
启动容器
[root@docker1 ~]# docker start fff66225d741

在这里插入图片描述

启动容器(一次性执行)
[root@docker1 ~]# docker run centos /usr/bin/bash -c ls /

在这里插入图片描述

停止容器
[root@docker1 ~]# docker stop fff66225d741

在这里插入图片描述

持续后台运行
[root@docker1 ~]# docker run -d centos /bin/bash -c "while true;do echo hello;done"
7db1e22e2886cf173a7c8c87f5dc5ce8a94ef2d5a71dd5bcf9b59af17a640966

在这里插入图片描述

进入容器
[root@docker1 ~]# docker run -it nginx:latest /bin/bash  一次性
[root@docker1 ~]# docker exec -it 7db1e22e2886 /bin/bash

在这里插入图片描述

容器导出
[root@docker1 ~]# docker export 7db1e22e2886 > centos_03
[root@docker1 ~]# ls

在这里插入图片描述

容器导入
[root@docker1 ~]# docker import centos_03 centos
sha256:e4a6406120ff7662d851df18c033b2bd0fb15287528f97246c106dc1df93684b
[root@docker1 ~]# docker images

在这里插入图片描述

强制删除容器
[root@docker1 ~]# docker rm `docker ps -aq`

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值