专业整站优化,韩国设计公司网站,高档餐厅包房装修效果图,用ps怎么做学校网站页面1、docker是什么#xff1f;
docker是开源的应用容器引擎。基于go语言开发的#xff0c;运行在Linux系统当中开源轻量级的“虚拟机”。 docker可以在一台主机上轻松的为任何应用创建一个轻量级的#xff0c;可移植的#xff0c;自给自足的容器。docker的宿主机是Linux系统…1、docker是什么
docker是开源的应用容器引擎。基于go语言开发的运行在Linux系统当中开源轻量级的“虚拟机”。 docker可以在一台主机上轻松的为任何应用创建一个轻量级的可移植的自给自足的容器。docker的宿主机是Linux系统。集装箱可以理解为相互隔离的容器(组件应用APP)每个容器都是一个独立的应用程序。
docker只能支持64位系统。 2、docker的设计宗旨build、ship and run any app、anywhere
build: 封装好的程序只更部罢即可使用。一次封装run any app: 一次封装之后的应用程序可以在任意环境运行anywhere: 任意宿主机
一次封装到处运行、封装、发布、部罢、运行维护、运行、销毁可以一整套的方式管理应用程序的生命周期。 3、docker为什么受欢迎
1、灵活再复杂的应用都可以实现容器化。 2、轻量级小型的不完整的最小化封装的程序与宿主机共享内核。 3、可互换:可以随时的升级更新。 4、便携式可以本地构建在平台上也可以实现部署任何地方运行。 5、可扩展: 自动分发容器副本。 6、可堆叠在一个宿主机上可以创建不同版本的同一容器也可以是多个相同版本的同一容器。
namespace系统资源的资源隔离的六项隔离措施!
linux的命名空间namespace是一种内核特性运行将一组的系统资源隔离在一个命名空间中的进程在系统当中可以拥有独立的资源。
系统调用参数隔离内容说明UTS命名空间CLONE_NEWUTS主机和域名在UTS这个命名空间当中创建进程进程空间可以看到自己的主机名和域名与其他进程分隔开。内容。在IPC这个命名空间之中进行可以拥有独立的进程间通信资源。IPCCLONE_NEWIPC信号量消息队列共享PIDCLONE_NEWPIDPID号每个进程都有自己独立的进程号空间networkCLONE_NEWNET网络设备网络栈, 及网络端口每个进程都有一个自己独立的网络资源端口号。mountCLONE_NEWNS挂载点在mount这个命名空间之中每个进程或者设备都有自己的文件系统挂载点互相之间互不干扰。userCLONE_NEWUSER用户和用户组基于这六个隔离项实现了容器和容器之间以及容器和宿主机之间的贷源隔离。
doucker的核心组件
镜像
镜像是doceker的基础最小单位。类似于虚拟机的ios文件一个镜像就是一个可执行的包包里面包含了运行这个程序的所有内容代码配置文件环境变量 doceker镜像也是一个压缩包不是有一个解压的文件是一个环境部署的脚本甚至包含了完整的系统操作。
容器
容器: docker的容器就是基于镜像运行起来的实例可以启动停止删除。每一个容器都是相互隔离的,互不相见。
仓库
仓库保存镜像所有的镜像都是从仓库当中拉去的可以有公有仓库私有仓库。镜像都是从仓库中拉取镜像也保存在仓库之中。可以下载到了本地:镜像 容器 日志 /var/lib/docker 宿主机。
doecker与虚拟机之间的区别
特性docker虚拟机启动速度秒级分钟级计算能力的损耗几乎无 损耗50%性能接近原生系统弱于原生系统系统支持量上千个根据硬件系统来看隔离性资源隔离完全隔离安全性差高
创建docker
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-utils yum-config-manager工具可以远程自定义获取yum源
device-mapper-persistent-data lvm2
device-mapper 1、进行逻辑卷管理的通用设备的映射机制 2、lvm2
获取docker源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下载docker
yum -y install docker-ce-cli docker-ce contarnerd.io
docker-ce-cli 提供docker的命令行工具 contarnerd.io 负载管理容器的生命周期创建运行停止继续 销毁。 docker-cedocker的社区版面向开发者小型团队和个人使用。免费
启动docker服务
systemctl restart docker.service查看docker信息
docker infoStorage Driver: overlay2
docker使用的文件系统驱动。
查看正在运行的容器
docker ps 查看所有的容器包括运行和没有运行的
docker ps -a
搜索库中包
docker search nginx
-------------------------------------------------------------------------------------------
NAME DESCRIPTION STARS OFFICAL AUTOMATED
镜像名称 描述信息 点赞数量 官方镜像 是否自动化构建
-------------------------------------------------------------------------------------------
下载库中包
docker pull nginx:X 下载 X--版本号例
[rootlocalhost ~]# docker pull nginx:1.22.0
1.22.0: Pulling from library/nginx
bd159e379b3b: Pull complete
265da2307f4a: Pull complete
9f5a323076dc: Pull complete
1cb127bd9321: Pull complete
20d83d630f2b: Pull complete
e0c68760750a: Pull complete
Digest: sha256:f0d28f2047853cbc10732d6eaa1b57f1f4db9b017679b9fd7966b6a2f9ccc2d1
Status: Downloaded newer image for nginx:1.22.0
docker.io/library/nginx:1.22.0
[rootlocalhost ~]# 查看镜像
docker images 查看镜像
-------------------------------------------------------------------------------------------
REPOSITORY TAG IMAGE ID CREATED SIZE
镜像所属的查看 标签 镜像的唯一标识 镜像创建时间 镜像大小
-------------------------------------------------------------------------------------------
查看镜像详细信息
docker inspect 镜像id 例 修改标签
docker tag 镜像名:旧标签 镜像名:新标签
例 删除镜像
一个镜像有多个标签删除时只是删除标签只剩最后一个删除的就是镜像本身
镜像被容器使用先停容器再删容器再删镜像
docker rmi 镜像名:标签 或 IMAGE ID
例 导出镜像
docker save -o 指定路径/xxx.tar 镜像名:标签
例 导入镜像
docker load -i 指定路径/xxx.tar
例 上传镜像到仓库
仓库登录网站https://hub.docker.com/ 站点要科学上网
打标签
docker tag 镜像名:标签 网站用户名/镜像名:新标签登录
docker login
出现Login Succeeded 即为成功上传镜像到库
docker push 网站用户名/镜像名:新标签
例 docker
创建容器
docker create -it 镜像名:标签 /bin/bash 启动容器
docker start (CONTAINER ID) 进入容器
docker exec -it (NAMES或CONTAINER ID) /bin/bash-i:让容器开启标准输入接受用户的输入命令
-t: 给这个容器分配一个终端这是一个虚拟的伪终端
-it:形成一个宿主机和容器之间形成一个可以交互shell命令行。 没有镜像直接启动docker
docker run -itd --name 容器名 镜像名:标签 /bin/bash-it 形成交互式会话
-d:可以让创建的容器以守护的进程在后台运行容器所运行的程序不会结束。
--name 给容器命名
/bin/bash 后台运行 1、没有镜像能不能直接run???没有镜像会自动拉取下载
2、运行的程序是什么???
-d 结合给容器持续运行的命令后台没有指令容器没有可运行的程序将会直接退出。
例 将容器内的文件复制到linux本地
docker cp 容器名:/复制文件 linux存放路径docker cp test1:/etc/nginx/nginx.conf /opt/将linux本地的文件复制到容器内
docker cp linux文件路径 id或容器名:指定存放路径docker cp /opt/kgc 7c49b2dcd570:/ 删除容器
docker rm CONTAINER ID 或 NAMESdocker rm 990846a57d11
docker rm test1 导出容器
docker export -o xxx.tar 容器名
导出的容器还是一个镜像必须要run create 才能成为容器docker export -o test1.tar test11 导入容器
docker import xxx.tar -- 镜像名:标签
容器包 xxx.tar
导出的容器还是一个镜像必须要run create 才能成为容器
已经配置好的导出的容器镜像可以直接使用(我们都是用的开发已经设置配置好的容器镜像)docker import test1.tar -- daoru:9 docker 的特性
即使在创建过程中报错容器还是会创建但容器不可用 导入镜像或者导入容器镜像如果和已有标签重复
批量删除后台停止的东西
docker rm $(docker ps -a -q) 批量停止的后台容器
docker ps -a | awk NR2{print docker stop $1} | bash#批量删除所有容器
docker ps -a | awk NR2{print $1}| xargs docker rm 总结
docker是一个轻量级的虚拟机宿主机是Linux
docker的核心镜像、容器、仓库
docker的命令
docker基本命令
docker search
#搜索
docker pull nginx:1.22.0
#获取镜像
docker images
#查看镜像
docker rmi -f
#强制删除镜像
docker tag nginx:1.22.0(在镜像中已有标签) nginx:zyg(给他新的标签)相当于硬连接(复制了源镜像)
#给不同的镜像打上不同的标签导入和导出镜像
docker save -0 /opt/nginx.tar(一般用xxx.tar) nginx:1.22.0(这个镜像要已经存在)
#导处镜像
docker load -i xxx.tar
#导入镜像上传镜像
docker push jqmnzyg/nginx:zyg
#jqmzyg:dockerup的用户名
#nginx:zyg是镜像名称和标签容器
有镜像才有容器
容器都是基于镜像创建的
-i
-t
-d
其中-i和-t和-d一般一起使用
-itd表示后台运行指定程序而且创建一个交互式的shell.用户输入操作命令
docker run -itd 镜像名称 --name 容器名称 /bin/bash
#如果容器中没有可执行的命令容器创建完成之后将会立刻退出
docker exec -it 容器名/容器ID查看正在运行的容器
docker ps
#只显示正在运行的容器
docker ps-a
#显示所有容器包括没有在运行的容器导出容器
docker export -o 导出名称.tar 容器名/容器id
导入容器
docker import 导入名称.tar --容器名:标签名(标签名尽量不要重复)复制文件出入容器
复制文件到本地
docker cp 容器名/容器id:/etc/nginx/nginx.conf /opt/
复制本地文件到容器
docker cp /opt/123.txt 容器名/容器id:/etc/nginx/nginx.conf删除容器
docker rm -f
#强制删除容器
docker rm
#删除容器停止容器
docker stop
#停止容器
导出的容器还是一个镜像。必须要运行起来(run create)才能成为容器
已经配置好的导出容器镜像可以直接使用(我们都是用的开发已经设置配置好的进行)
docker的特性即使在创建过程中报错容器还是会被创建但是这个容器不可用
导入镜像或者导入容器镜像。如果和已有标签重复导入的镜像或者容器镜像。
TAG这一项就会变成none。标签重复的镜像或者容器镜像使用docker ps或者ps -a是查看不到的可以使用docker images查看。
附加题
删除了在运行的容器的镜像对容器会有影响吗 在Docker中容器和镜像是两个不同的概念。
镜像是一个静态的文件包含了用于创建容器的文件系统和配置信息。
容器则是在镜像的基础上运行起来的实例。
1、 如果你删除了正在运行的容器的镜像对于已经运行的容器通常不会有直接的影响。
2、 因为容器是在镜像的基础上创建的实例并且运行的实例是独立于镜像的。
3、 删除镜像不会影响已经运行的容器的文件系统或运行状态。
但是需要注意以下几点
新容器的创建 如果你删除了一个镜像以后如果需要再次创建一个相同的容器就需要重新拉取该镜像或者使用其他已有的镜像。如果没有本地缓存Docker 将会从远程仓库重新下载镜像。基于文件系统的操作 如果运行的容器对文件系统进行了修改并且你删除了相应的镜像那么这些修改可能会丢失。因为容器运行时的文件系统实际上是基于镜像的如果没有了镜像就无法重新创建一个一模一样的容器。
总之正在运行的容器的镜像通常不会直接影响正在运行的容器但可能会影响将来创建新容器的过程。