Docker镜像、容器的理解和使用方法

来源:互联网 发布:喇叭仿真软件 编辑:程序博客网 时间:2024/04/25 06:43

零、应用背景

先看下面2个问题:

1. 单机多系统。如:windows上跑linux、VPS服务、PaSS服务。

windows上跑linux,一般用VM技术实现。

VPS提供商需要将一台机器划分成多个虚拟机,提供给用户,例如将一台8核16G的物理机器划分成8个1核2G(实际上会比这个少)给8个用户使用,目的是实现用户应用隔离。

PaSS服务提供商同VPS。

问题关键:模拟操作系统、用户应用分隔

2. 应用发布。

为了减少bug出现,要尽量使开发环境和生产环境一样。

比如开发环境采用的是centos6.5 + nginx1.10.2 + php 5.6 + mysql 5.5,那么生产环境就要采取一样的软件环境。如果开发环境做了修改,生产环境最好做一样的修改(主要指安装插件,系统软件版本升级)。

问题关键:环境同步


一、Docker和VM

VM可以很好的解决模拟操作系统、用户应用分隔这两个问题。

Docker可以比VM更好的解决这两个问题 并且 解决环境同步问题。

相比VM,Docker是轻量级的,快速的。

二、Docker的镜像和容器

Docker如何实现VM的功能?使用静态镜像 + 一个动态读写层

从docker的使用方法来看,例如我们想在docker中运行nginx服务。

我们两个思路:

1. 先pull一个centos镜像,再在该镜像上装一个nginx。

2. 直接pull装好nginx的镜像

镜像是容器的运行环境

如果我们采取思路1,pull下一个centos镜像

# docker pull centos
docker的镜像由name:tag组成,上面的命令等价于下载最新的centos

# docker pull centos:latest
如果想下载centos6.8,则可以运行

# docker pull centos:6.8

使用run命令运行一个镜像:

# docker run -it centos /bin/bash

该命令会用centos这个镜像去创建一个容器,相当于在VM里面用镜像创建了一个虚拟机,通过docker ps -a可以看到所有容器。

细心的朋友会发现系统提示符变了,这是因为-it参数,使得容器内部的shell输入输出和当前主机挂钩了,叫做attach。

在容器内部的所有操作只在容器内有效,不会影响宿主主机,也不会影响镜像,因为所有的操作都会作用在读写层上。

如果下次要使用怎么办?可以用docker ps -a找到这个容器的id,使用docker start CONTAINER_ID 运行这个容器,当然上次安装的nginx还在。

如果把这个容器当做开发环境,部署的时候可以采取非常简单的方法,将这个容器发布成镜像即可,在生产环境中导入这个镜像,即可实现环境同步。

docker commit命令可以将容器发布成镜像,可以理解为 读写层的文件和镜像的文件合并成一个新的镜像。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一上高速就犯困怎么办 孩子初中数学学不好怎么办 高三注意力不集中怎么办 考砸了家长打我怎么办? 高三学生困疲劳怎么办 高三晚上很困怎么办 孩子上高三压力大不想上学怎么办 高三的孩子压力大怎么办 高三复读压力大怎么办 孩子一年级做数学粗心怎么办 一年级的孩子数学总粗心怎么办 天生手脚笨的人怎么办 高三的孩子厌学怎么办 二年级小孩学习笨怎么办 孩子高二不想上怎么办 高三孩子玩手机怎么办 孩子考试粗心丢题怎么办 工作中总出错是怎么办 工作上做错事了怎么办 惹她不开心了怎么办 惹到别人不开心怎么办 孩子高三不愿意写作业怎么办? 小孩特别懒不爱学习怎么办 小孩上三年级不爱学习怎么办 一年级孩子做题粗心怎么办 一年级的孩子做题粗心怎么办 一年级娃娃做题粗心怎么办 有同学抄作业该怎么办 同学要抄我作业怎么办 同桌抄我作业我该怎么办 孩子想换同桌老师不同意怎么办 尴尬的事情心里难受怎么办 孩子撒谎不完成作业怎么办 孩子撒谎不交作业怎么办 孩子不爱写作业撒谎怎么办 大便又粗又硬怎么办 二年级末考紧张怎么办 孩子粗心做数学题老出错怎么办 生地会考考了140怎么办 数学成绩考砸了怎么办? 考砸了家长发火怎么办