使用Docker虚拟化技术搭设Hadoop环境

一、Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。(以上摘自“百度百科”)



二、Docker安装

2.1 Docker简介

使用yum安装Docker最新版本,经验证,目前能安装Docker最新版本(1.10.3)为CentOS7,因此本次安装Docker的版本为CentOS7。

配置yum源:

cd /etc/yum.repos.d
vi docker.repo
--------------文件内容-----------------------
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

清除yum,并安装docker

yum clean all
yum install docker-engine

直至安装成功后,设置docker开机自启动

systemctl enable docker

默认情况下,docker新开一个容器能使用的磁盘容量为10G(未来版本不知道会不会优化这个限制)。因此,需要修改docker配置文件,使得可以使用宿主主机的所有容量。

vi /lib/systemd/system/docker.service
修改[Service]标签下的ExecStart属性值
-------------- 文件内容 -----------------
ExecStart=/usr/bin/docker daemon -H fd:// -s overlay

重启docker服务

service docker restart


三、Hadoop镜像制作

3.1 Hadoop版本

本次使用的Java版本为jdk-8u73-linux-x64.rpm,可在甲骨文官网下载,这里不赘述。

本次使用的Hadoop版本为2.5.2,可在官网下载http://hadoop.apache.org/releases.html

如图,下载2.5.2版本的binary包。至于source源码包,根据实际情况需要下载即可。



2.3 Hadoop集群机器配置

本次Docker镜像预定配合的机器集群信息如图

主机描述 主机IP 主机名
Master 172.17.1.220 hadoop-master.richardchan.nom
Slave1 172.17.1.221 hadoop-slave1.richardchan.nom
Slave2 172.17.1.222 hadoop-slave2.richardchan.nom
Slave3 172.17.1.223 hadoop-slave3.richardchan.nom


2.4 镜像制作

2.4.1 获得操作系统基础镜像

下载docker官网发布的CentOS-6.6操作系统镜像

docker pull centos:6.6

下载完毕后,使用命令查看镜像,可以看到已经下载的镜像

docker images

docker本身支持使用Dockerfile来制作镜像。但是由于在制作hadoop镜像过程中,需要配置ssh无密码登录。这个操作需要交互式完成。因此使用Dockerfile并无法适用我们本次制作hadoop镜像。因此,只能手工一步步来操作了。

2.4.2 启动一个新容器

在生成docker容器来制作之前,我们需要清除,我们目前需要对外提供什么端口,环境变量是什么。因此即使在docker容器中配置了环境变量文件.profile。但由于docker的内部机制。实际上重启docker容器或又容器生成镜像时,环境变量文件并不会生效。也就是说,我们在生成docker容器的时候,就必须显示指定这些信息。  环境变量信息

变量 取值
HADOOP_COMMON_LIB_NATIVE_DIR /opt/hadoop/lib/native
HADOOP_OPTS /opt/hadoop/lib
JAVA_HOME /usr/java/jdk1.8.0_73
JAVA_BIN /usr/java/jdk1.8.0_73/bin
CLASSPATH .:/usr/java/jdk1.8.0_73/lib/dt.jar:/usr/java/jdk1.8.0_73/lib/tools.jar
HADOOP_HOME /opt/hadoop
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/jdk1.8.0_73/bin:/opt/hadoop/bin

需要开启端口 22 ,用于ssh免登录

使用以下命令启动一个新的容器,容器名字为hadoop-base,主机名为hadoop-base.richardchan.nom

docker run -d -it --expose=22 -e "HADOOP_COMMON_LIB_NATIVE_DIR=/opt/hadoop/lib/native" -e "HADOOP_OPTS=-Djava.library.path=/opt/hadoop/lib" -e "JAVA_HOME=/usr/java/jdk1.8.0_73" -e "JAVA_BIN=/usr/java/jdk1.8.0_73/bin" -e "CLASSPATH=.:/usr/java/jdk1.8.0_73/lib/dt.jar:/usr/java/jdk1.8.0_73/lib/tools.jar" -e "HADOOP_HOME=/opt/hadoop" -e "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/jdk1.8.0_73/bin:/opt/hadoop/bin" --net=none -h hadoop-base.richardchan.nom --name hadoop-base centos:6.6 /bin/bash

分配IP地址172.17.1.211,用于在容器中使用yum来安装软件

pipework docker0 hadoop-base 172.17.1.211/16@172.17.0.1

将准备好的java安装包和hadoop安装包上传到容器中

docker cp jdk-8u73-linux-x64.rpm hadoop-base:/opt
docker cp hadoop-2.5.2.tar.gz hadoop-base:/opt

登录到docker容器hadoop-base

docker exec -it hadoop-base /bin/bash

安装java

cd /opt
chmod +x /opt/jdk-8u73-linux-x64.rpm
rpm -ivh /opt/jdk-8u73-linux-x64.rpm

rm -rf /opt/jdk-8u73-linux-x64.rpm

添加hadoop用户和用户组

groupadd hadoop
useradd hadoop -g hadoop

chown -R hadoop:hadoop /opt

现在想要解压hadoop安装包,但是centos6.6可能未安装tar工具,这里先安装一下

yum install -y tar

解压hadoop安装包,并修改解压后hadoop目录名(该步骤使用hadoop用户)

su hadoop   # 使用su命令由root切到hadoop用户

tar -zxvf hadoop-2.5.2.tar.gz
mv /opt/hadoop-2.5.2 /opt/hadoop

rm -rf hadoop-2.5.2.tar.gz

安装ssh服务端和客户端(该步骤使用root用户)

exit               # 接上个步骤,使用exit即可由hadoop用户切回root用户

yum install openssh-server
yum install openssh-clients

chkconfig sshd on # 设置sshd开机自启动

生成私钥和密钥对(该步骤使用hadoop用户)

su hadoop  # 使用su命令由root切到hadoop用户

ssh-keygen -t rsa -P ‘‘
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 以下必须赋权,不然会有问题
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

配置sshd使用私钥公钥的认证方式(该步骤使用root用户)

exit   # 接上个步骤,使用exit可以由hadoop切回root用户

vi /etc/ssh/sshd_config
修改以下内容,即去注释即可
---------- 文件内容 ----------
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

重启sshd服务

service sshd restart

以下步骤就开始配置hadoop(使用hadoop用户)

创建目录

su hadoop   # 使用su可由root切到hadoop用户

mkdir /opt/hadoop/tmp            # hadoop临时目录
mkdir -p /opt/hdfs/namenode      # namenode目录
mkdir -p /opt/hdfs/datanode      # datanode目录

配置core-site.xml

vi /opt/hadoop/etc/hadoop/core-site.xml

----------- 文件内容 -----------
<configuration>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>
  <!-- file system properties -->
  <property>
    <name>fs.default.name</name>
    <value>hdfs://hadoop-master.richardchan.nom:9000</value>
  </property>
</configuration>

配置hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/opt/hdfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/opt/hdfs/datanode</value>
  </property>
</configuration>

配置mapreduce-site.xml。由于在hadoop2.5.2版本中,该配置文件为mapred-site.xml.template,因此需要复制一份为mapreduce-site.xml,再修改配置信息

cp /opt/hadoop/etc/hadoop/mapred-site.xml.template /opt/hadoop/etc/hadoop/mapreduce-site.xml

vi /opt/hadoop/etc/hadoop/mapreduce-site.xml
------------ 文件内容 ------------
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>http://hadoop-master.richardchan.nom:9001</value>
  </property>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

配置yarn-site.xml

<configuration>
  <!-- Site specific YARN configuration properties -->
   <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
   </property>
   <property>
       <name>yarn.resourcemanager.address</name>
       <value>hadoop-master.richardchan.nom:8032</value>
   </property>
   <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop-master.richardchan.nom:8030</value>
   </property>
   <property>   <name>yarn.resourcemanager.resource-tracker.address</name>
   <value>hadoop-master.richardchan.nom:8031</value>
   </property>
   <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop-master.richardchan.nom:8033</value>
  </property>
  <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop-master.richardchan.nom:8088</value>
    </property>
</configuration>

配置slaves

vi /opt/hadoop/etc/hadoop/slaves
--------- 文件内容 ---------
hadoop-slave1.richardchan.nom
hadoop-slave2.richardchan.nom
hadoop-slave3.richardchan.nom

配置hadoop-env.sh

vi /opt/hadoop/etc/hadoop/hadoop-env.sh
------------ 文件结尾添加 ------------
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_PREFIX}/lib"
export JAVA_HOME=/usr/java/jdk1.8.0_73

配置yarn-env.sh

vi /opt/hadoop/etc/hadoop/hadoop-env.sh
------------ 文件结尾添加 ------------
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_PREFIX}/lib"
export JAVA_HOME=/usr/java/jdk1.8.0_73

到此为止,即可退出容器

exit   # 由hadoop用户切回root用户
exit   # 退出容器

2.4.3 生成hadoop-base镜像

首先生成一个简单的hadoop-base镜像

docker commit -a "Richard Chan" -m "base on Hadoop2.5.2" hadoop-base richardchan/hadoop-base

2.4.4 生成hadoop2.5.2-base镜像

由于目前为止,如果直接richardchan/hadoop-base镜像来开启一个新的容器时,容器的sshd服务并不会自动启动(可能是docker的内部机制造成的),所以,我们需要在这个镜像的基础上用Dockerfile再进行简单的加工一下

vi Dockerfile
-------- 文件内容 --------
FROM richardchan/hadoop-base

MAINTAINER Richard Chan <545036958@qq.com>

EXPOSE 22

CMD /usr/sbin/sshd -D

上述CMD将设置sshd的开机自动启动。

最终生成镜像richardchan/hadoop2.5.2-base

docker build -t richardchan/hadoop2.5.2-base .

2.4.3 删除hadoop-base镜像

生成完毕后,richardchan/hadoop-base镜像就可以删掉了。

docker rmi -f richardchan/hadoop-base

至此,richardchan/hadoop2.5.2-base镜像制作完成。



三、使用测试

先生成4台hadoop虚拟容器,分别是Master\Slave1\Slave2\Slave3(host主机信息表在此设置)

docker run -d -it --add-host hadoop-master.richardchan.nom:172.17.1.220 --add-host hadoop-slave1.richardchan.nom:172.17.1.221 --add-host hadoop-slave2.richardchan.nom:172.17.1.222 --add-host hadoop-slave3.richardchan.nom:172.17.1.223 --net=none -h hadoop-master.richardchan.nom --name hadoop-master richardchan/hadoop2.5.2-base
docker run -d -it --add-host hadoop-master.richardchan.nom:172.17.1.220 --add-host hadoop-slave1.richardchan.nom:172.17.1.221 --add-host hadoop-slave2.richardchan.nom:172.17.1.222 --add-host hadoop-slave3.richardchan.nom:172.17.1.223 --net=none -h hadoop-slave1.richardchan.nom --name hadoop-slave1 richardchan/hadoop2.5.2-base
docker run -d -it --add-host hadoop-master.richardchan.nom:172.17.1.220 --add-host hadoop-slave1.richardchan.nom:172.17.1.221 --add-host hadoop-slave2.richardchan.nom:172.17.1.222 --add-host hadoop-slave3.richardchan.nom:172.17.1.223 --net=none -h hadoop-slave2.richardchan.nom --name hadoop-slave2 richardchan/hadoop2.5.2-base
docker run -d -it --add-host hadoop-master.richardchan.nom:172.17.1.220 --add-host hadoop-slave1.richardchan.nom:172.17.1.221 --add-host hadoop-slave2.richardchan.nom:172.17.1.222 --add-host hadoop-slave3.richardchan.nom:172.17.1.223 --net=none -h hadoop-slave3.richardchan.nom --name hadoop-slave3 richardchan/hadoop2.5.2-base

给虚拟容器分配IP地址

pipework docker0 hadoop-master 172.17.1.220/16@172.17.0.1
pipework docker0 hadoop-slave1 172.17.1.221/16@172.17.0.1
pipework docker0 hadoop-slave2 172.17.1.222/16@172.17.0.1
pipework docker0 hadoop-slave3 172.17.1.223/16@172.17.0.1

进入master容器,分配上面生成的密钥

docker exec -it hadoop-master /bin/bash

使用hadoop用户,直接追加公钥到authorized_keys(这里的公钥在制作容器的时候可以查看 more /home/hadoop/.ssh/id_rsa.pub 这里不赘述)

su hadoop
echo "" > ~/.ssh/authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu/KPnYg9Tlr9XYgDFsTLPzCJpgyEcXH08qUSJjvbIf8ZBRhqLuxoMhRxrywH6G8V/IJyLRcituYzc3CbKlnWGhtVQrdj6xENgWwy3BkYWIZ/FV13FDzcdmjRP/U6gykkOhErezukJafGFDncMP73d/Wf9YXfhvK9zuVlq9iyO4ZufeaBTUctkxHibZ/e6RzjrVxyqfgUfTYkeMFZzapHbFe7sQ+RsYSVJQMBsRselii5BSDPTh4it58O5gp6xXsGY/+a1485qKFmrGwm74/bVtAvnCAU+3oqe2s7G4GrNqiZdtHsLhxREy8LTEa6HdLd8RL0K8YPnK9RrRn2iku1Zw== [email protected]" >> ~/.ssh/authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu/KPnYg9Tlr9XYgDFsTLPzCJpgyEcXH08qUSJjvbIf8ZBRhqLuxoMhRxrywH6G8V/IJyLRcituYzc3CbKlnWGhtVQrdj6xENgWwy3BkYWIZ/FV13FDzcdmjRP/U6gykkOhErezukJafGFDncMP73d/Wf9YXfhvK9zuVlq9iyO4ZufeaBTUctkxHibZ/e6RzjrVxyqfgUfTYkeMFZzapHbFe7sQ+RsYSVJQMBsRselii5BSDPTh4it58O5gp6xXsGY/+a1485qKFmrGwm74/bVtAvnCAU+3oqe2s7G4GrNqiZdtHsLhxREy8LTEa6HdLd8RL0K8YPnK9RrRn2iku1Zw== [email protected]" >> ~/.ssh/authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu/KPnYg9Tlr9XYgDFsTLPzCJpgyEcXH08qUSJjvbIf8ZBRhqLuxoMhRxrywH6G8V/IJyLRcituYzc3CbKlnWGhtVQrdj6xENgWwy3BkYWIZ/FV13FDzcdmjRP/U6gykkOhErezukJafGFDncMP73d/Wf9YXfhvK9zuVlq9iyO4ZufeaBTUctkxHibZ/e6RzjrVxyqfgUfTYkeMFZzapHbFe7sQ+RsYSVJQMBsRselii5BSDPTh4it58O5gp6xXsGY/+a1485qKFmrGwm74/bVtAvnCAU+3oqe2s7G4GrNqiZdtHsLhxREy8LTEa6HdLd8RL0K8YPnK9RrRn2iku1Zw== [email protected]" >> ~/.ssh/authorized_keys

对可信任的host主机进行配置(这一步在虚拟容器之间使用“ssh 主机名”后,最后生成的known_hosts,可以记录下来)

echo "" > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
echo "hadoop-master.richardchan.nom ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA81rjLgthG9fpmLr41zWhnbMe1jYWfcg7mKMKUAa9EsbFY6P2eDiXQsCRt0vjDXNHpgUN8p9Xth4mxQu/TFlqetNE9hb2jZNnbtFvoBKaVbd8zLlazixG9zbG2AGC2gtpc7PtyDOUb0GW4KyDXzWqA97i4ihvl/e7UqBHRuCNqrqLK5ez8EdtO0ZyCsAqtSaUwLTnj/hH02tjJYvf5szNzo0wPZ5dOkTFZemvIXTZWvsIFjXlW5Ny69j4lstkxzC/hOn1rNs1o9EkQK7LZM1nWJYIp28KhtlAxVkMr8QnVqagkEBKYx9EPeUpneemq7iknM/R+wPGPLQ3TrWmMAioQQ==" >> ~/.ssh/known_hosts
echo "hadoop-slave1.richardchan.nom ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA81rjLgthG9fpmLr41zWhnbMe1jYWfcg7mKMKUAa9EsbFY6P2eDiXQsCRt0vjDXNHpgUN8p9Xth4mxQu/TFlqetNE9hb2jZNnbtFvoBKaVbd8zLlazixG9zbG2AGC2gtpc7PtyDOUb0GW4KyDXzWqA97i4ihvl/e7UqBHRuCNqrqLK5ez8EdtO0ZyCsAqtSaUwLTnj/hH02tjJYvf5szNzo0wPZ5dOkTFZemvIXTZWvsIFjXlW5Ny69j4lstkxzC/hOn1rNs1o9EkQK7LZM1nWJYIp28KhtlAxVkMr8QnVqagkEBKYx9EPeUpneemq7iknM/R+wPGPLQ3TrWmMAioQQ==" >> ~/.ssh/known_hosts
echo "hadoop-slave2.richardchan.nom ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA81rjLgthG9fpmLr41zWhnbMe1jYWfcg7mKMKUAa9EsbFY6P2eDiXQsCRt0vjDXNHpgUN8p9Xth4mxQu/TFlqetNE9hb2jZNnbtFvoBKaVbd8zLlazixG9zbG2AGC2gtpc7PtyDOUb0GW4KyDXzWqA97i4ihvl/e7UqBHRuCNqrqLK5ez8EdtO0ZyCsAqtSaUwLTnj/hH02tjJYvf5szNzo0wPZ5dOkTFZemvIXTZWvsIFjXlW5Ny69j4lstkxzC/hOn1rNs1o9EkQK7LZM1nWJYIp28KhtlAxVkMr8QnVqagkEBKYx9EPeUpneemq7iknM/R+wPGPLQ3TrWmMAioQQ==" >> ~/.ssh/known_hosts
echo "hadoop-slave3.richardchan.nom ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA81rjLgthG9fpmLr41zWhnbMe1jYWfcg7mKMKUAa9EsbFY6P2eDiXQsCRt0vjDXNHpgUN8p9Xth4mxQu/TFlqetNE9hb2jZNnbtFvoBKaVbd8zLlazixG9zbG2AGC2gtpc7PtyDOUb0GW4KyDXzWqA97i4ihvl/e7UqBHRuCNqrqLK5ez8EdtO0ZyCsAqtSaUwLTnj/hH02tjJYvf5szNzo0wPZ5dOkTFZemvIXTZWvsIFjXlW5Ny69j4lstkxzC/hOn1rNs1o9EkQK7LZM1nWJYIp28KhtlAxVkMr8QnVqagkEBKYx9EPeUpneemq7iknM/R+wPGPLQ3TrWmMAioQQ==" >> ~/.ssh/known_hosts
echo "0.0.0.0 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA81rjLgthG9fpmLr41zWhnbMe1jYWfcg7mKMKUAa9EsbFY6P2eDiXQsCRt0vjDXNHpgUN8p9Xth4mxQu/TFlqetNE9hb2jZNnbtFvoBKaVbd8zLlazixG9zbG2AGC2gtpc7PtyDOUb0GW4KyDXzWqA97i4ihvl/e7UqBHRuCNqrqLK5ez8EdtO0ZyCsAqtSaUwLTnj/hH02tjJYvf5szNzo0wPZ5dOkTFZemvIXTZWvsIFjXlW5Ny69j4lstkxzC/hOn1rNs1o9EkQK7LZM1nWJYIp28KhtlAxVkMr8QnVqagkEBKYx9EPeUpneemq7iknM/R+wPGPLQ3TrWmMAioQQ==" >> ~/.ssh/known_hosts

格式化namenode

hadoop namenode -format

启动hadoop

/opt/hadoop/sbin/start-all.sh

查看hadoop是否开启成功

jps -l
时间: 2024-08-04 00:41:15

使用Docker虚拟化技术搭设Hadoop环境的相关文章

Docker虚拟化技术

---恢复内容开始--- Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app).几乎没有性能开销,可以很容易的在机器和数据中心中运行.更重要的是,它们不依赖于任何语言,框架或包括系统. “Docker”应该是2014年最火爆的技术之一,2015年将开启新的跨越. Docker自开源后受到广泛的关注和讨论,以至于dotClo

Docker虚拟化技术系列之-自动化部署管理

随着企业Docker容器越来越多,如果要靠手工去管理docker,肯定非常吃力,而且也不现实,这就需要我们把日常的操作变成自动化管理,通过脚本工具,将工作减轻到最小,解放运维人员,如下为企业Docker自动化部署脚本V1版本,如果需要更多其他的功能,可以自己定制和修改. 如下自动化管理脚本功能: 1)通过YUM自动安装Docker平台: 2)通过该脚本,可以自动配置桥接网络: 3)自动创建docker容器,给予centos操作系统: 4)自动收集创建好的Docker容器,集中管理: 5)通过PI

Docker虚拟化技术系列之-命令详解

虚拟化原理:虚拟化解决方案的底部是要进行虚拟化的物理机器.这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化:那么就需要系统管理程序 层的支持.系统管理程序(Virtual machine monitor),或称为 VMM,可以看作是平台硬件和操作系统的抽象化.在某些情况中,这个系统管理程序就是一个操作系统:此时,它就称为主机操作系统. 随着docker不断的学习,我们要想进一步去维护docker,就需要掌握docker日常使用的命令,如下为docker常用命令: 一.容器基础命令 docke

Docker虚拟化技术系列之-DockerFile配置

随着Docker管理的任务增多,我们需要用Dockerfile进行docker容器管理,这样可以减轻人工的操作,让docker管理更加的方便,快捷: Dockerfile是一个镜像的完整描述,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器. 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 虽然指令忽略大小写,但是建议使用大写. FROM 命令 FROM <image> 或 FROM <image>:<tag>

Docker虚拟化技术系列之-磁盘扩容

Docker在启动容器的时候,需要创建文件系统,为rootfs提供挂载点.最初Docker仅能在支持Aufs文件系统的Linux发行版上运行,但是由于Aufs未能加入Linux内核,为了寻求兼容性.扩展性,Docker在内部通过graphdriver机制这种可扩展的方式来实现对不同文件系统的支持. 目前,Docker支持Aufs,Devicemapper,Btrfs和Vfs四种文件系统,docker容器默认的空间是10G,如果想指定默认容器的大小(在启动容器的时候指定),可以有如下两种方法: 建

你真的了解Docker虚拟化吗?

服务器虚拟化指的是在操作系统与硬件之间加一层,叫做hypervisor层,对下控制硬件,对上承载操作系统,操作系统os以文件形式封装运行,称为虚拟机,主要解决的问题是硬件利用率和灵活性的问题,常见的方案为vmware vsphere,xen,kvm,hyper-v..容器虚拟化指的是在os上将应用打包以进程的形式运行,应用和应用间非完全隔离,但是更轻量,效率高,lxc和docker都可以称为容器级虚拟化,区别在于docker可以理解为经过精美封装过更加好用的lxc,有更好的接口和更完善的配套.

Docker虚拟化实战学习——基础篇(转)

Docker虚拟化实战学习--基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技术概念和应用场景 虚拟化,一是项技术--,是一种资源解决方案. 虚拟化技术是将物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,使计算元件运行在虚拟的基础上,而不是真实的物理资源上. 通过虚拟化技术,可以将物理资源转变为逻辑资源(虚拟机),应用程序服务运行在虚拟资源上,而不是真实的物理机上.

Docker虚拟化

1. Docker虚拟化特点 跟传统VM比较具有如下优点: 操作启动快 运行时的性能可以获取极大提升,管理操作(启动,停止,开始,重启等等) 都是以秒或毫秒为单位的. 轻量级虚拟化 你会拥有足够的“操作系统”,仅需添加或减小镜像即可.在一台服务器上可以布署100~1000个Containers容器.但是传统虚拟化,你虚拟10-20个虚拟机就不错了. 开源免费 开源的,免费的,低成本的.由现代Linux内核支持并驱动.注* 轻量的Container必定可以在一个物理机上开启更多“容器”,注定比VM

50 xen虚拟化技术基础、xen虚拟化技术进阶

01 xen虚拟化技术基础 配置环境: node1 192.168.1.61 CentOS6.6 [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# vim xen4.repo [xen4centos] name=Xen4 for CentOS 6 baseurl=ftp://192.16