Docker的使用与攻防

docker

应用部署方式

传统企业应用构建

应用被直接部署在操作系统之上,并且操作系统直接安装于硬件之上

应用被操作系统绑定

操作系统被硬件绑定

缺点

  • 部署非常慢
  • 成本非常高
  • 资源浪费
  • 难于迁移和扩展
  • 被限定硬件厂商

虚拟化应用部署

应用被直接部署在操作系统之上,操作系统安装于虚拟硬件之上,虚拟硬件依赖硬件

应用被操作系统绑定

操作系统被封装于文件中,可以在硬件设备之间自由的传播

优点

  • 隔离分区
  • 文件封装
  • 资源池
  • 易扩展
  • 易上云

缺点

  • 资源浪费
  • 启动速度慢
  • 迁移过程慢
  • 不能适应SOA架构

容器部署应用

在容器引擎中运行容器,在独立的容器中运行应用

应用与容器捆绑

容器只依赖于容器引擎

容器不与操作系统和硬件绑定

docker与虚拟机的区别

image-20250518221700647

image-20250518221705352

docker的特性

  1. 进程号隔离,在容器中的PID会和宿主机的PID有一个映射关系,每个容器都是进程号隔离的。
  2. 文件隔离,每个容器都有一个独立的文件夹,存放文件系统。
  3. 网络隔离,每个容器都有一个独立的虚拟网卡。
  4. 环境变量隔离,每个容器的环境变量都是独立的。
  5. 容器的生命周期跟随主命令,命令执行结束,就Exit,命令执行结束包括(正常,非正常,阻塞)都是算结束

docker常用命令

镜像相关

docker search nginx:        #搜索nginx相关镜像
由于search使用不了
所以可以在https://hub.docker.com/search上搜索然后直接pull它
pull命令是可以用的

docker pull nginx:1.20      #下载镜像,如果不指定版本则默认下载latest最新的,但是查看镜像时也会显示latest,以后更新了它不是最新版也显示latest容易让人误判,建议直接指定版本

docker images               # 查看镜像
docker rmi nginx:1.20||id   # 删除本地镜像

容器相关

docker ps                   # 查看存活的容器
docker ps -a                # 查看所有的容器
docker ps -l                # 查看最新的容器
docker ps -q                # 查看所有容器的id
docker ps -qa               # 查看所有存活容器的id
docker run rockylinux:9.3   # 启动容器,默认容器的命令时/bin/bash
docker run -it rockylinux:9.3   #-it打开一个控制台交互界面,如果遇到阻塞不会退出
dockers run -d centos:7 ping -c 5 qq.com    # -d的意思时挂后台,比如这个例子就不会把ping的结果显示出来

docker run --rm centos:7 ping -c 10 qq.com  # --rm 当容器运行结束的时候,自动删除
docker run -p 8080:80 nginx:1.20    # -p 8080:80  将容器的80端口映射到主机的8080端口上
docker run -P ngixn:1.20    # 将容器建议开放的端口映射到随机端口
docker run --net=host       # 开放容器需要的端口给容器
docker run -v <主机上的目录>:<容器里的目录> # 挂载主机里的文件到容器中
docker run --name "容器名"       # 修改容器的名字

docker rm 容器id          # 删除容器
docker rm -f `docker ps -qa` #删除所有的容器

docker logs 容器名||容器id     # 查看容器运行日志,比如前面那个ping的结果就可以在这里看到
docker stats  <容器ID>      # 查看容器资源占用
docker attach <容器ID>      #进入容器的主任务    ctrl p+q即可以离开容器,但是不关闭容器
docker start  <容器ID>      #启动一个已经退出的容器
docker stop   <容器ID>      #给容器发出退出指令
docker kill   <容器ID>      #强制结束容器(有数据丢失的风险)
docker exec -it <容器ID>bash    #进入容器,并且进入到bash中 
docker port <容器ID>            # 查看容器的映射端口

docker inspect <容器ID>         # 查看容器的详细信息

docker export f299f501774c > hangger_server.tar 将镜像导出为文件

docker攻防

docker逃逸。。。

暂没时间研究

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注