Docker容器引擎基础
Linux很早就有一个容器的技术叫MXC,Docker实际上就是在LXC的基础之上做的二次封装。所以docker就是一个开源容器的管理工具,实现容器管理,而不是容器。可以把它理解为轻量级的虚拟机。
寄居架构: 底层硬件>Windows7/10–>VMware- > Linux个人用的
裸金属架构: 底层硬件-> VMware ESXI→Linux 大多数企业都是这种
docker的核心思想和虚拟化相似,都是给每一个软件一个独立的运行环境,互不干扰。
docker的目的是“一次封装,到处运行”。比如某一个集装箱中跑的是MySQL,安装MySQL并且再对MySQL主配置文件进行各种配置本来就特别慢,如果别的机器也需要相同的MySQL环境,还得从头到尾重新布一遍,这样就特别麻烦耗时。所以说可以把MySQL封装到一个“集装箱”内,如果有别的“蓝鲸”想要这个MySQL环境,那就直接把这个集装箱迁过去即可。甚至可以把MySQL的环境做成一个镜像(镜像可以理解为创建容器的一个模板),谁想要这个容器谁就直接拿这个镜像直接跑起来就行。
镜像是用来创建容器的。
镜像是只读的,本身不能直接修改,但是可以往上面叠加很多东西。
比如可以在centos镜像上加一个nginx镜像,他两可组成一个全新的nginx镜像。
容器类似于一个正在运行的简化版的虚拟机,里面有root权限、进程空间、用户空间等,以及一个或一组应用程序。
一台服务器可以有多个仓库,每个仓库可以放多个镜像。每个镜像都得有标签。比如nginx镜像可以有很多标签,第一个nginx可以叫XXX,第二个nginx可以叫YYY…。所以说你的镜像名和标签名合起来才可以是一个完整的名字。
仓库是用来放镜像的,镜像是用来启动容器的
我的是18.06版本
阿里云下载镜像加速:
或者在此网站上搜索也行;
[root@docker ~]# docker pull nginx 获取nginx镜像
docker tag 也可以改名
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210628195017194.png
docker save -o 指定你要导出的镜像的名字 后面写镜像名
例如:
即导出名字为nginx-test的nginx镜像到本地目录
docker load < nginx-images 或者 docker load --input nginx-images
docker create -it centos /bin/bash 创建centos容器,未来要打开的程序是/bin/bash,因为容器必须得有一个程序正在运行
docker ps -a 查看所有容器状态
docker ps -l 查看最近一次创建的容器状态
docker ps -q 查看正在运行的容器的id号
docker ps 查看正在运行的容器
进入容器内:(相当于进入一个虚拟机内)
退出容器:
如果敲exit,,那么f3a就是停止的状态
基于一个镜像可以创建n个容器
如果想退出一个镜像,但不想让进程停止
那么键盘输入ctrl加pq
进入有两种方式:docker exec 或 docker attach
例:导入一个名字为centos:apache的http镜像
然后就可以进入这个容器中
之后会讲企业级的仓库