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的主进程退出为止

相关推荐
冬天vs不冷6 分钟前
Linux用户与权限管理详解
linux·运维·chrome
凯子坚持 c1 小时前
深入Linux权限体系:守护系统安全的第一道防线
linux·运维·系统安全
大熊程序猿1 小时前
K8s证书过期
云原生·容器·kubernetes
摸鱼也很难4 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
woshilys5 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛5 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程6 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
鸠摩智首席音效师7 小时前
Docker 中如何限制CPU和内存的使用 ?
docker·容器
Michaelwubo7 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
jingyu飞鸟7 小时前
centos-stream9系统安装docker
linux·docker·centos