Docker容器

特点

轻量 : 在一台机器上运行的多个 Docker 容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像。

标准 : Docker 容器基于开放式标准,能够在所有主流 Linux 版本、Microsoft Windows 以及包括 VM、裸机服务器和云在内的任何基础设施上运行。

安全 : Docker 赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker 默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器。

镜像、容器、仓库:

一个镜像就代表一个软件;

基于某个镜像运行就是生成一个程序实例,这个程序实例就是容器;

仓库是用来存储 Docker 中所有镜像的。

其中仓库又分为远程仓库和本地仓库,和 Maven 类似,倘若每次都从远程下载依赖,则会大大降低效率,为此,Maven 的策略是第一次访问依赖时,将其下载到本地仓库,第二次、第三次使用时直接用本地仓库的依赖即可,Docker 的远程仓库和本地仓库的作用也是类似的。


容器与虚拟机的比较

容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。

容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。

因此容器要比传统虚拟机更为轻便。

虚拟机更擅长于彻底隔离整个运行环境 。如云服务提供商通常采用虚拟机技术隔离不同的用户。

Docker 通常用于隔离不同的应用 ,例如前端,后端,数据库,消息队列。


常用命令

systemctl start docker

当开启了Docker服务的时候,docker的守护进程 会一直等待客户端发出命令,一旦接收到命令,docker就会去镜像仓库去找,然后拉到本地。

docker images 查看所有镜像

docker rmi 删除镜像 -f强制删除

docker pull + 镜像名

docker run:先看本地是否有镜像,没有的话自动pull

docker run = docker create+ docker start

-d(在后台运行) , --name 指定名称 -p 做端口映射

docker start 开启容器内的进程,docker stop 关闭容器内的进程

docker exec 进入容器中的进程

重启虚拟机的时候,容器只是被关闭了,不需要docker run,直接docker start就可以了。

如果每次都docker run,就会重复创建容器。
端口映射 就是通过宿主机的端口能访问到的,比如我docker容器中有两个mysql服务,需要映射到两个不同的端口,否则怎么区分我用哪个呢?


数据卷

一个虚拟目录,作为中间桥梁,完成容器内目录和宿主机(虚拟机)目录的映射,这样对宿主机目录进行操作的时候,容器目录也会有相应的变动。

容器创建时,如果数据卷不存在,则自动创建(不需要手动create数据卷)

同时,如果没有指定数据卷,也会默认分配一个匿名卷(名字随机生成的)

这样创建,我们就可以指定数据卷的名称

docker volume inspect 可以看宿主目录的具体位置

docker volume ls 可以看一共有哪些数据卷(包括匿名卷)

删除数据的时候,先删数据,再删数据卷。

使用docker volume prune:提前打开要用的容器,再prune,以防删除有用的数据。


本地目录

数据卷目录的结构比较深(Docker服务指定的目录),不易记忆

因此我们也可以直接挂载到本地目录,即直接将宿主目录与容器目录进行挂载


数据卷挂载和本地挂载

数据挂载是通过增加一个数据卷(桥梁),将容器内的数据流向数据卷,再流向宿主机目录,这个目录是由docker指定的,不可更改。正是因为这个目录不可改变性,将来在进行宿主机之间的数据迁移的时候,很方便,安全。同时数据卷挂载一般用来存放需要持久化的文件。

本地挂载是直接将容器内的数据挂载到宿主机目录(可以自定义,方便记忆的路径)。因此不受docker管理维护,将来在数据迁移的时候不安全。也可以用来存放持久化的文件。本地挂载更适合需要直接访问宿主机文件系统的场景。

自定义镜像

之前用的都是别人准备的,如果自己要部署一个java项目,并将其打包成镜像。

镜像的结构:分层存储的架构 。镜像实际是由多层文件系统联合组成。

TODO

相关推荐
蓝胖的四次元口袋2 小时前
Docker Compose多容器编排与Nginx集群实战
运维·nginx·docker compose
懂软件的胡子个哥2 小时前
微信 API 消息回调怎么设计,才能避免丢消息和重复处理
运维·微信·架构·wechatapi·个人微信号二次开发
吉甫作诵2 小时前
Redis 常用命令大全:11 大类命令速查手册
运维·数据库·redis·缓存·nosql
Acrellea4 小时前
告别粗放式能耗管理!安科瑞EIOT平台助力产业园区智慧低碳运营
运维·安全·能源
Databuff4 小时前
五款主流 SSH 免费工具介绍
运维·ssh·运维开发
菜鸟学编程o4 小时前
Linux常见指令
linux·运维·服务器
pt10435 小时前
AIOps机器学习——当警报阈值被调高之后
运维·人工智能·自动化
迪康coolmu5 小时前
企业文件外发管控落地实践 —— 基于迪康端点安全一体化管理系统
运维·网络·经验分享·安全
见闻小天地6 小时前
四方电气DL300变频器面向雕铣机多工况的技术参数与适配验证
运维·人工智能·业界资讯
千舟软件7 小时前
【宿舍管理小程序】新生入住不靠纸质表
大数据·运维·服务器·科技·业界资讯