Docker基本管理1

Docker 概述

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。

Docker是在Linux容器里运行应用的开源工具,是一种轻量级的"虚拟机"。

Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。

鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。
容器是与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。

虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

docker容器与虚拟机的区别?

|----------------------------------------|-------------------------------------------|
| docker容器 | 虚拟机 |
| 所有容器共享主机的内核 | 有自己的独立的操作系统和内核 |
| 通过namespace实现资源隔离 通过cgroup实现限制资源的最大使用量 | 完全隔离的 每个虚拟机都有自己独立的硬件资源分配 |
| 秒级启动 | 分钟级启动 |
| 容器相当于宿主机的进程,性能几乎没有损耗 | 需要通过hypervisor虚拟机管理程序对宿主机资源虚拟访问,会有一定的性能损耗 |
| 一个宿主机可以启动成百上千个容器 | 最多几十个虚拟机 |

Linux 六大 namespace

  1. MNT文件系统隔离
  2. NET网络资源隔离
  3. PID进程的PID隔离
  4. IPC进程间通信隔离
  5. UTS主机名隔离
  6. USER用户隔离

docker的三大核心概念

镜像:是创建容器的基础,是一个只读的模板文件,里面包含运行容器中的应用程序所需要的所有资料(比如应用程序执行文件、配置文件、动态库文件、依赖包、系统文件和目录等)

容器:是用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器之间默认是相互隔离的

仓库:是用来集中保存镜像的地方,有公有仓库和私钥仓库之分

操作:

复制代码
docker version   查看docker版本信息
docker info      查看docker详细信息

镜像操作

复制代码
docker search 关键字           根据仓库或镜像的关键字搜索镜像
docker pull  镜像名:标签      下载镜像,如果不指定标签则默认使用 :latest
docker images                 查看镜像列表,-q 表示仅显示镜像ID
docker  ipspect 镜像名/id      查看镜像的详细信息
docker tag 旧镜像名:旧标签  新镜像名:新标签   添加新的镜像名或标签
docker rmi 镜像名或者镜像id -f 强制删除        删除镜像
docker save -o 文件路径   镜像名或者id 将镜像导出为文件
dokcer load -i 文件路径   将镜像文件导入docker
docker load < 镜像文件    从定向输入的方式将镜像文件导入docker
dokcer login 仓库地址     登录镜像仓库
docker push  仓库名/镜像名:标签   #上传镜像到仓库

演示:上传镜像倒仓库

先登录仓库

再修改标签 tag

再用push 上传到阿里云的vcdvd的命名空间中 叫myapp1:v1

复制代码
docker push registry.cn-hangzhou.aliyuncs.com/vcdvd/myapp1:v1

将镜像导出为文件 再用文件恢复

复制代码
docker save -o 文件路径/文件名 镜像名:标签

恢复

docker load < cat 文件名、
docker load -i 文件路径文件名

容器操作

复制代码
docker create --name 名称 [-it] 镜像名:标签 [容器启动命令]    创建容器
docker start 容器名或容器ID           启动容器
docker ps -a             查看容器列表
docker ps -q             查看启动容器列表的id号
docker inspect 容器名/容器id         查看容器的详细信息
docker stop 容器名/容器id(-t 等待时间)     优雅停止容器,发送 SIGTERM 信号,默认等待10s 
docker kill 容器名/容器id  停止容器,默认发送 SIGKILL 信号
docker rm 容器名或容器ID  [-f 强制删除]  删除容器
docker exec -it  容器名或容器ID  sh|bash    登录容器
docker logs 容器名/id

docker cp 宿主机目录 容器名/id:绝对路径 复制宿主机文件到容器中
docker cp 容器名/id:绝对路径 宿主机目录 复制容器文件到宿主机中

创建并启动容器

复制代码
docker run [-i -d] [--name 容器名] 镜像名:标签 [容器启动命令]          #创建并启动容器

docker run 的启动过程:

1.检查本地是否有指定镜像,如果有则直接使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器

2.在只读的镜像层上再挂载一层可读可写的容器层

3.从docker网桥给容器分配一个虚拟接口和IP地址

4.使用镜像的默认启动命令或docker run 指定的命令来启动容器,直到容器中的PID=1的主进程退出为止

相关推荐
网络笨猪6 小时前
# Nginx企业级全套配置\+排错手册
运维·nginx
Yupureki6 小时前
《Linux网络编程》8.网络层IP原理
linux·运维·服务器·网络·ip
yyuuuzz6 小时前
aws亚马逊入门常见认知误区
运维·服务器·网络·云计算·github·aws
DeepFlow 零侵扰全栈可观测7 小时前
运动战:AI 时代 IT 运维的决胜之道——DeepFlow 业务全链路可观测性的落地实践
运维·网络·人工智能·arcgis·云计算
高旭的旭7 小时前
GitLab Omnibus Docker 内存优化实战:从 4.7 GiB 降到 3.2 GiB
docker·容器·gitlab
林叔聊渠道分销8 小时前
saas产品运营案例 | 联盟营销计划如何帮助企业提高销售额?
运维·产品运营·sass·流量运营·用户运营
志栋智能9 小时前
告别报告堆砌:超自动化巡检的智能分析与洞察
运维·服务器·网络·人工智能·自动化
雅斯驰11 小时前
AES-128加密+滚动码认证:ATA5702W如何防御中继攻击与信号重放
运维·单片机·嵌入式硬件·物联网·自动化
网络与设备以及操作系统学习使用者11 小时前
直连路由优先级最高
运维·网络·学习·华为·智能路由器
goyeer11 小时前
【ITIL4】34服务实践 - 发布管理
运维·企业数字化·信息化·it管理·itil·it治理