了解docker

目录

一、什么是容器

二、什么是docker

三、docker与虚拟机相比的优缺点

四、docker的架构

五、docker底层隔离技术的实现

六、volume

七、compose

八、docker常用命令


 

一、什么是容器

Linux容器是一种对进程进行隔离的运行环境。运行这些进程所需的所有文件都由另一个镜像提供,具有可移植性和一致性

二、什么是docker

一个容器进程本质上是一个运行在沙盒中的隔离进程,由Linux系统本身负责隔离,Docker只是提供了一系列工具,帮助我们设置好隔离环境后,启动这个进程。所以docker可以理解为管理容器的工具,用于开发、发布和运行应用程序的开放平台

三、docker与虚拟机相比的优缺点

• docker 创建和部署应用更快,扩展性更好,特别使用了k8s编排容器后
• docker 需要的资源更少, docker 在操作系统级别进行虚拟化, docker 容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化;
• docker 更轻量, docker 的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境, Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高;
• 高可用和可恢复性: docker 对业务的高可用支持是通过快速重新部署实现的。虚拟化具备负载均衡,高可用,容错,迁移和数据保护等经过生产实践检验的成熟保障机制, VMware 可承诺虚拟机 99.999% 高可用,保证业务连续性;
• 交付、部署:虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化。 Docker 在 Dockerfile 中记录了容器构建过程,可在集群中实现快速分发和快速部署。

• (缺点)与虚拟机相比, docker 隔离性更弱, docker 属于进程之间的隔离,虚拟机可实现系统级别隔离;
• (缺点)可管理性: docker 的集中化管理工具还不算成熟。各种虚拟化技术都有成熟的管理工具,例如 VMware vCenter 提供完备的虚拟机管理能力;
• (缺点)安全性: docker 的安全性也更弱。 Docker 的租户 root 和宿主机 root 等同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户 root 权限和宿主机的 root 虚拟机权限是分离的,并且虚拟机利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔离技术,这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击

四、docker的架构

Docker 使用 C/S 结构,即客户端/服务器体系结构。 Docker 客户端与 Docker 服务器进行交互,Docker服务端负责构建、运行和分发 Docker 镜像。docker客户端主要是管理员与docker通信用的,管理员从客户端键入命令让docker去执行。 Docker 客户端和服务端可以运行在一台机器上,也可以通过 RESTful 、 stock 或网络接口与远程 Docker 服务端进行通信。

镜像:app的封装,里面有一些程序代码,基础系统、依赖库、工具等
容器:镜像运行的一个场所,一个容器启动相当于一个进程在运行
仓库:存放镜像的地方

五、docker底层隔离技术的实现

主要基于lxc-linux container实现,包含下面两部分:

namespace:用来给进程隔离资源的(资源:文件系统、网络等),不同的命名空间里有不同的资源,而容器由不同的命名空间组合而成

cgroups:对资源进行限制,比如限制某个容器用多少cpu、内存、磁盘等

 

六、volume

1、使容器里的数据保存到宿主机磁盘里,达到数据的持久化,实现容器和宿主机之间共享数据,
2、正常的停止容器,容器里的数据不会丢失,会保存在/var/lib/docker/volumes


示例:创建一个卷底层挂载到nfs服务器192.168.1.133上的共享目录/web里
 

1、[root@sc-docker nfs-web]# docker volume create --driver local --opt type=nfs --opt  o=addr=192.168.1.133,nolock,soft,rw,sync  --opt  device=:/web nfs-web-6
nfs-web-6

2、[root@sc-docker nfs-web]# docker volume ls
DRIVER    VOLUME NAME
local     2f1f1ac5ccdde7a9d80e277a974eeb3c2b6ff98b7126349f52caaef0042bbf9f
local     5103a4c07fe6745fba25c88320cc42a385c1e44b9cd461ed6b7be894e77bf357
local     b9eeeb4fc5d95a184919ad9dbdb6a329771950a85a98e3729ad911107eb681d4
local     nfs-web
local     nfs-web-2
local     nfs-web-6
local     nginx-web

3、[root@sc-docker nfs-web]# docker volume inspect nfs-web-6
[
    {
        "CreatedAt": "2022-08-26T18:24:33+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nfs-web-6/_data",
        "Name": "nfs-web-6",
        "Options": {
            "device": ":/web",
            "o": "addr=192.168.1.133,nolock,soft,rw,sync",
            "type": "nfs"
        },
        "Scope": "local"
    }
]

4、创建一个容器使用nfs-web-6卷
docker run -d -p 8818:80 -v nfs-web-6:/usr/share/nginx/html --name siyx-nginx-8 nginx

七、compose

是一个容器编排工具,启动一个容器,进行哪些配置,端口,启动那个进程,使用那个卷,是否链接其他的容器等,同时可以启动多个容器

例如:我们现在需要启动10个容器,其中3个nginx,2个redis,3个mysql,1个zabbix,1个ansible
有些容器需求先启动,有容器需要后启动,在启动的时候是有先后顺序的。

批量启动容器,而且启动的时候容器之间是有依赖关系,需要考虑启动顺序的

编排的内容全部写到一个yaml文件里,docker 的compose根据这个yaml文件里的安排去启动容器。

优点:
1.快速批量的启动容器,效率高
2.不容易出错,可靠

八、docker常用命令

1、docker version  查看docker的版本
1、docker info     查看docker的详细信息
2、docker images  查看自己的docker里有那些镜像
3、docker search     搜索doucker镜像
    docker search nginx  查找nginx镜像
    docker search mysql  查找mysql镜像
4、docker pull  下载docker镜像
    docker pull mysql           下载mysql镜像,默认是下载最新版本的
    docker pull mysql:5.7.37   下载指定版本的mysql镜像,5.7.37
5、docker ps    查看有多少容器正在运行
6、docker ps -a  查看有多少容器,没有运行的也显示出来
7、dokcer stats   查看容器的使用情况
6、docker run     启动某个容器,第一次启动
    docker run -d -p 8090:80 --name  sc-nginx  nginx
        -d 在后台运行 daemon 守护进程
        -p 8090:80  指定端口映射    DNAT 访问本机的8090端口,转发到docker容器的80端口
        --name  sc-nginx  指定容器的名字
         nginx 是镜像的名字
7、docker  stop 停止某个容器
    docker stop lhj-nginx-3   停止lhj-nginx-3这个容器
8、docker start  启动某个容器
    docker start lhj-nginx-3   启动运行lhj-nginx-3这个容器
9、docker rm 删除某个容器
    docker rm lhj-nginx  删除lhj-nginx容器
10、docker rmi  删除某个镜像,还要指定版本
    docker rmi mysql:latest  删除mysql:latest镜像
11、ps aux|grep containerd-shim--》查看docker里有多少容器正在运行
12、docker logs    查看容器日志,当容器启动不起来,它会给予相应的提醒,还可以用来排错
    docker logs centos7-lhj-1        查看centos7-lhj-1这个容器的日志
13、docker create --name sc-lhj-1 -p 8090:80 nginx        创建静态的容器
14、docker exec -it sc-lhj-1 /bin/bash        进入容器的内部
    docker exec    进入容器内部
    -it            开启一个交互式的中端,进入容器里面,运行/bin/bash
15、docker inspect    查看容器的详细信息
    docker inspect sc-lhj-1  查看sc-lhj-1这个容器的详细信息
16、docker network ls  查看容器使用的网络类型
17、docker registry/harbor   搭建私有仓库
18、docker cp    可以实现容器和宿主机里面文件的相互拷贝
    docker cp re.txt sc-nginx:/root 
            复制r宿主机里re.txt到容器sc-nginx的家目录下面

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值