Docker容器技术实战-1

1.docker容器

docker就好比传统的货运集装箱

每个虚拟机都有独立的操作系统,互不干扰,在这个虚拟机里可以跑任何东西 如应用 文件系统随便装,通过Guest OS 做了一个完全隔离,所以安全性很好,互不影响

容器 没有虚拟化层,直接共享操作系统内核,不同的容器共享是同一个宿主机内核

容器如何工作?

cs 架构 客户端通过docker这个客户端命令 发送指令,由docker引擎进行响应,去本地查询下有没有这个镜像,如果有镜像,直接创建容器。如果没有镜像,从远程Registy仓库中,默认官方直接下载镜像到本地运行容器

2.创建第一个docker

安装docker-ce

启动服务

激活内核选项+重启服务

启动容器

显示激活的容器

访问

修改容器内容

进容器内部修改

docker exec -it 容器id /bin/bash

提交改变

将自己修改好的镜像提交

docker commit  + 参数 + 容器ID+镜像名:V1.0(假设之前的容器没了 在想启动 就可以启动这个容器 恢复原位)

镜像传输

第1 种方法:先保存镜像 docker save -o abc.tar guigu:v1.0(把guigu:v1.0 保存为 abc.tar)

把别的镜像传输给别的主机

在别的主机上 docker load -i abc.tar

第2 种方法: 推送镜像到docker hub

挂载数据

挂载数据到外部修改

docker run --name=mynginx -d --restart=always(开机自启) -p 80:80  -v /data/html(主机目录): /usr/share/nginx/html(容器的目录):ro/rw(在容器里面是只读/读写模式) nginx 

把主机上的目录/data/html 挂载到容器里/usr/share/nginx/html 主机外面如果是空的 容器里就也是空的

命令补充:

日志 docker logs+容器名/id 进行排错

进入容器里面 修改内容 :docker exec -it 容器id /bin/bash

02 docker 镜像

每个镜都有很多的层 每个层都是独立的 这些层在本地保留一份就行。如果有多个镜像共享一个层,只要保存一份,这样避免了冗余,避免了占用磁盘空间,避免了占用带宽。如果要下载一个镜像,镜像里有很多层,这个层已经有了,就不需要下载,这样,节省了网络带宽

镜像在上传仓库的时候,如果仓库端也有相同的镜像层的时候,只需上传他没有的层就可以了

分层结构的最大好处:共享资源

镜像层是只读的,修改的东西只保存在容器层,当保存的时候,容器层就会保存成新的镜像层,一个镜像最多127 层,

docker 从上往下会依次查找文件,这样修改的内容就会被优先读取到

镜像的构建

docker commint 构建镜像三部曲:运行容器  修改容器   将容器保存为新的镜像

缺点:效率低,可重复性弱  容易出错

使用者无法对镜像进行审计,存在安全隐患

所有的镜像文件都在这个目录里 不能随意删除

这种方式不利于安全审计

构建镜像

推荐使用Dockerfile这种方式

Dockerfile详解

构建镜像

自动删除所有已经被停止的容器

查看容器详情

数据卷挂载

自动分配的IP

访问容器

这个地址不能从外面浏览器访问的,因为没有做端口映射,这是一个私有网段,不能从windows访问

03 镜像的优化

缩减镜像层

首先缩减镜像层数 绕后清理中间产物

多阶段构建

使用最精简的基础镜像

导入基础镜像

gitehub 上搜索  nginx  distroless

如果有错误 查看日志

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值