虚拟化技术
<code>把真实物理机子中剩余的资源重新整合,创建出来一台新的虚拟的计算机提供给开发者使用。 优点: <a href="https://www.gaodaima.com/tag/%e8%99%9a%e6%8b%9f%e5%8c%96" title="查看更多关于虚拟化的文章" target="_blank">虚拟化</a>使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,降低成本,加快部署,极大增强系统整体安全性和可靠性。使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。 虚拟化技术有3种不同的实现方案: 1. 硬件虚拟化 需要购买虚拟化设备 2. 分区虚拟化 一台电脑下可以实际安装多个<a href="https://www.gaodaima.com/tag/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f" title="查看更多关于操作系统的文章" target="_blank">操作系统</a>。开机的时候,就固定分配好了内存。 3. <a href="https://www.gaodaima.com/tag/%e8%99%9a%e6%8b%9f%e6%9c%ba" title="查看更多关于虚拟机的文章" target="_blank">虚拟机</a>技术[应用虚拟化] 通过在操作系统中安装软件来实现,例如:VMware,virtualbox,在vm中创建虚拟机,搭建操作系统,在虚拟机运行的时候,由vm动态向真实电脑申请分配硬件资源[cpu,内存,显卡网络等等]。 4. 准虚拟机技术 是上面第2和第3中的混合产物,不需要安装vm也不需要分区,而是由操作系统本身提供出来了一个虚拟层来实现的。 例如;xven或者window10的Hyperv都是这种实现。 因为上面不管哪一种虚拟化技术,都会出现一个问题就是为了让虚拟出来的操作系统能正常运作起来都需要实实在在向真实物理机申请对应的资源。而且为了能让虚拟出来的操作系统能正常运作,物理机要分配各种的硬件资源,这样很大程度上存在资源的消耗,降低物理机的性能。而这个过程用户完全有可能仅仅只是了为运行某几个软件而已。所以为了更好的提升用户的体验,提升系统的性能,减低消耗,所以出现了一种新的虚拟化技术。 容器化技术!!! 比较流行的容器化技术有:docker和pod docker的使用提供了2种方式: 1. 终端命令[通过终端命令逐步操作] 2. dockerFile[通过脚本对docker进行封装和操作] </code>
www#gaodaima.com来源gaodaimacom搞#代%码网搞代码
Docker 命令
通用命令
查看docker 当前版本
<code class="language-shell">sudo docker version </code>
<code class="language-bash"># 启动docker sudo service docker start # 停止docker sudo service docker stop # 重启docker sudo service docker restart </code>
镜像操作[image]
列出所有镜像
<code class="language-shell">sudo docker image ls # 上面的命令时省略了 --all sudo docker image ls --all </code>
拉取镜像
如果不指定版本号,默认拉取最新版本的镜像
<code class="language-shell">sudo docker image pull <镜像名称:版本号> </code>
删除镜像
删除的时候,必须注意是否有容器在运行当前镜像文件,如果在使用,则需要先删除容器,才能删除镜像
<code class="language-shell">sudo docker image rm <镜像名称/镜像ID> </code>
删除的镜像如果被容器提前使用了,会报错误
把docker中的镜像打包成文件
用于分享发送给他人,或备份
<code class="language-shell">sudo docker save -o <文件名.tar.gz> <镜像名:版本号> </code>
把镜像文件加载到docker中
<code class="language-shell">docker load -i <文件名.tar> </code>
容器操作[container]
创建容器
必须先有镜像,才能运行创建容器,需要指定使用的镜像名,并且设置创建容器以后,执行对应的第一条命令
<code class="language-shell">docker run <参数选项> <镜像名称:镜像版本> <容器启动后的第一个命令> </code>
例如:使用”hello-world”镜像,创建一个容器,但没有进行任何操作
<code class="language-shell">docker run hello-world </code>
例如:使用ubuntu镜像,创建一个名为ubuntu1
<code>docker pull ubuntu:18.04 docker run -it --name=ubuntu1 ubuntu:18.04 bash </code>
注意:必须启动的时候,让容器运行bash解析器,才能在接下来的操作让容器不会立刻关闭,而且也能够让我们可以输入linux终端命令, 如果我们一般创建一个容器,选项都是: -itd
docker run的选项
-t 表示容器启动后会进入其命令行终端
-i 表示以“交互模式”运行容器
–name 表示设置容器的名称
例如,使用ubuntu镜像,创建一个名为ubuntu2,并且在后台运行的容器像
<code>docker run -itd --name=ubuntu2 ubuntu<:版本> ubuntu </code>
-d 创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)
列出所有容器
<code class="language-shell">docker container ls # 所有正在启动运行的容器 docker container ls --all # 所有容器[不管是否在启动运行中] </code>
启动容器【可以同时启动多个容器,容器之间使用空格隔开】
<code class="language-shell"># 启动一个容器 docker container start <容器名称/容器ID> # 启动多个容器 docker container start <容器名称/容器ID> <容器名称/容器ID> <容器名称/容器ID> </code>
停止容器
<code class="language-shell">docker container stop <容器名称/容器ID> # 停止多个容器 docker container stop <容器名称/容器ID> <容器名称/容器ID> </code>
杀死容器
在容器无法停止的时使用,注意不能滥用,这种操作有可能被导致容器里面运行的文件丢失!!!
<code class="language-shell">docker container kill <容器名称/容器ID> # 杀死多个容器 docker container kill <容器名称/容器ID> <容器名称/容器ID> </code>
进入容器
要进入容器,必须当前容器是启动状态的,这个命令不需要加上-d
<code class="language-shell">docker container exec -it <容器名称/容器ID> <第一个命令> </code>
删除容器
<code class="language-shell">docker container rm <容器名称/容器ID> # 删除多个容器 docker container rm <容器名称/容器ID> <容器名称/容器ID> </code>
把容器保存成镜像
<code class="language-shell">docker commit <容器名称/容器ID> <新镜像名:镜像自定义版本> </code>
扩展
使用docker命令需要管理员权限,如果希望每次输入docker相关命令时,不用sudo,可通过以下命令进行设置
<code class="language-shell">sudo usermod -a -G docker $USER sudo service docker restart newgrp - docker </code>
官方提供的ubuntu系统镜像,工具命令很少,如希望内部安装ping、ifconfig网卡或者vim等工具,可以通过以下命令进行设置[需要联网,而且耗时]
<code class="language-shell">apt-get update apt install net-tools # ifconfig apt install iputils-ping # ping </code>