CentOS 7上搭建Docker环境
一.Docker介绍和安装
http://linux.cn/article-4340-1.html
Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单。容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止。Docker 帮助系统管理员和程序员在容器中开发应用程序,并且可以扩展到成千上万的节点。
容器和 VM(虚拟机)的主要区别是,容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。容器使用宿主操作系统的内核,而虚拟机使用独立的内核。
Docker 的局限性之一是,它只能用在 64 位的操作系统上。
在这篇文章中我们将讨论如何在 CentOS 7.x 中安装 docker。
CentOS 7 中 Docker 的安装
Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:
- [root@localhost ~]# yum install docker
启动 Docker 服务
安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:
- [root@localhost ~]# service docker start
- [root@localhost ~]# chkconfig docker on
(LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:
- [root@localhost ~]# systemctl start docker.service
- [root@localhost ~]# systemctl enable docker.service
)
下载官方的 CentOS 镜像到本地 (LCTT 译注:由于 Docker 被墙 :-< ,所以请使用 http://docker.cn 的镜像,感谢 @马全一 的镜像。 )
- [root@localhost ~]# docker pull centos
- Pulling repository centos
- 192178b11d36: Download complete
- 70441cac1ed5: Download complete
- ae0c2d0bdc10: Download complete
- 511136ea3c5a: Download complete
- 5b12ef8fd570: Download complete
确认 CentOS 镜像已经被获取:
- [root@localhost ~]# docker images centos
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
- centos centos5 192178b11d36 2 weeks ago 466.9 MB
- centos centos6 70441cac1ed5 2 weeks ago 215.8 MB
- centos centos7 ae0c2d0bdc10 2 weeks ago 224 MB
- centos latest ae0c2d0bdc10 2 weeks ago 224 MB
运行一个 Docker 容器:
- [root@localhost ~]# docker run -i -t centos /bin/bash
- [root@dbf66395436d /]#
我们可以看到,CentOS 容器已经被启动,并且我们得到了 bash 提示符。在 docker 命令中我们使用了 “-i 捕获标准输入输出”和 “-t 分配一个终端或控制台”选项。若要断开与容器的连接,输入 exit。
- [root@cd05639b3f5c /]# cat /etc/redhat-release
- CentOS Linux release 7.0.1406 (Core)
- [root@cd05639b3f5c /]# exit
- exit
- [root@localhost ~]#
我们还可以搜索基于 Fedora 和 Ubuntu 操作系统的容器。
- [root@localhost ~]# docker search ubuntu
- [root@localhost ~]# docker search fedora
显示当前正在运行容器的列表
二.DAOCLOUD
daocloud提供了docker上的许多image,对访问被墙的外网来说是一个很好的解决办法:https://dashboard.daocloud.io/mirror
安装或升级Docker
Docker 1.3.2版本以上支持加速器,如果您没有安装Docker或者版本较旧,请安装或升级。
参考Docker安装文档。高速安装Docker
配置Docker加速器
sudo sed -i 's|other_args=|other_args=--registry-mirror=http://f07735fb.m.daocloud.io |g' /etc/sysconfig/docker
sudo service docker restart该脚本可以将
--registry-mirror
加入到你的Docker配置文件/etc/sysconfig/docker
中。适用于Centos7,其他版本可能有细微不同。其中other_args可替换为OPTIONS,要根据脚步的实际情况来决定,配置完后为:OPTIONS=--registry-mirror=http://f07735fb.m.daocloud.io '--selinux-enabled'尽情享受Docker加速器
Docker加速器使用时不需要任何额外操作。就像这样下载官方Ubuntu镜像
docker pull ubuntu
更多精彩镜像就在下方Docker热门Repositories中
三.使用Docker在本地搭建Hadoop分布式集群
http://www.tuicool.com/articles/QBryi23
启动第一个容器
下面,我们准备以ubuntu镜像作为基准镜像,构建我们的Hadoop运行环境镜像。
先使用命令如下命令启动容器:
docker run -ti ubuntu
注意:我们在不指定Tag的情况下,默认选择Tag为 latest
的镜像启动容器。 指定Tag启动命令为:
docker run -ti ubuntu:14.04
另外,每次容器启动的时候需要指定一个命令,容器启动后便会执行这个命令。例如执行下面的命令:
king@king:~$ docker run ubuntu /bin/echo 'Hello world'
Hello world
king@king:~$
可以看到,容器启动了马上又退出了,因为容器之做了一件事情:就是打印 Hello world
,打印完了,自然就退出了。
如果你想做多件事情,可以自己写一个shell脚本,把你要的操作写入进去,然后在 run
后面指定这个脚本路径。
我们刚刚的 docker run -ti ubuntu
命令中没有指定执行程序,Docker默认执行 /bin/bash
。
其他启动参数,大家可以自己在网上查,这里不再陈述了。好了我们回到刚刚 docker run -ti ubuntu
启动的容器,可以看到容器几乎瞬间就启动起来了,比虚拟机不知快了多少倍!!
king@king:~$ docker run -ti ubuntu
root@009fe5728aba:/#
容器启动起来了,接下来就是安装Java、Hadoop及相关配置了。
Java安装
依次执行如下命令:
sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sodu apt-get update
apt-get install oracle-java7-installer
java -version
注意:
- 这里安装的Java7(JDK1.7),如需其他版本请自行修改
apt-get install oracle-java7-installer
为apt-get install oracle-java6-installer
- 默认使用的是Ubuntu的官方源,如果下载比较慢,请自行修改更新源,不知道如何使用命令行修改的,参考 这里 。
另外,大家可以将装好java的镜像保存为一个副本,他日可以在此基础上构建其他镜像。命令如下:
root@122a2cecdd14:~# exit
docker commit -m "java install" 122a2cecdd14 ubuntu:java
上面命令中 122a2cecdd14
为当前容器的ID, ubuntu:java
是为新的镜像指定一个标识, ubuntu
为 仓库名 , java
是 Tag 。
如何获取容器ID:
- 有个简便的办法找到此ID,就是命令行用户名
@
后面的那一串字符。这个方法只在容器启动时没有指定hostname时才能用。 - 使用
docker ps
列出所有运行的容器,在命令结果中查看
Hadoop安装
渐渐切入正题了O(∩_∩)O~
使用刚刚已经安装了Java的容器镜像启动:
docker run -ti ubuntu:java
启动成功了,我们开始安装Hadoop。这里,我们直接使用wget下载安装文件。
1.先安装wget:
sudo apt-get install -y wget
2.下载并解压安装文件:
root@8ef06706f88d:cd ~
root@8ef06706f88d:~# mkdir soft
root@8ef06706f88d:~# cd soft/
root@8ef06706f88d:~/soft# mkdir apache
root@8ef06706f88d:~/soft# cd apache/
root@8ef06706f88d:~/soft/apache# mkdir hadoop
root@8ef06706f88d:~/soft/apache# cd hadoop/
root@8ef06706f88d:~/soft/apache/hadoop# wget http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
root@8ef06706f88d:~/soft/apache/hadoop# tar xvzf hadoop-2.6.0.tar.gz
注意:这里我们安装的Hadoop版本是2.6.0,如果需要其他版本,请在 这里 找到链接地址后修改命令即可。
3.配置环境变量
修改 ~/.bashrc
文件。在文件末尾加入下面配置信息:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export HADOOP_HOME=/root/soft/apache/hadoop/hadoop-2.6.0
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
注意:我们使用 apt-get
安装java,不知道java装在什么地方的话可以使用下面的命令查看:
root@8ef06706f88d:~# update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-7-oracle/jre/bin/java
Nothing to configure.
root@8ef06706f88d:~#
4.配置Hadoop
下面,我们开始修改Hadoop的配置文件。主要配置 core-site.xml 、 hdfs-site.xml 、 mapred-site.xml 这三个文件。
开始配置之前,执行下面命令:
root@8ef06706f88d:~# cd $HADOOP_HOME/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0# mkdir tmp
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0# cd tmp/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/tmp# pwd
/root/soft/apache/hadoop/hadoop-2.6.0/tmp
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/tmp# cd ../
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0# mkdir namenode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0# cd namenode/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/namenode# pwd
/root/soft/apache/hadoop/hadoop-2.6.0/namenode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/namenode# cd ../
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0# mkdir datanode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0# cd datanode/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/datanode# pwd
/root/soft/apache/hadoop/hadoop-2.6.0/datanode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/datanode# cd $HADOOP_CONFIG_HOME/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/etc/hadoop# cp mapred-site.xml.template mapred-site.xml
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.6.0/etc/hadoop# nano hdfs-site.xml
这里创建了三个目录,后续配置的时候会用到:
- tmp:作为Hadoop的临时目录
- namenode:作为NameNode的存放目录
- datanode:作为DataNode的存放目录
1).core-site.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/soft/apache/hadoop/hadoop-2.6.0/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<final>true</final>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
</configuration>
注意:
hadoop.tmp.dir
配置项值即为此前命令中创建的临时目录路径。fs.default.name
配置为hdfs://master:9000
,指向的是一个Master节点的主机(后续我们做集群配置的时候,自然会配置这个节点,先写在这里)
2).hdfs-site.xml配置
使用命令 nano hdfs-site.xml
编辑 hdfs-site.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
<final>true</final>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/soft/apache/hadoop/hadoop-2.6.0/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/soft/apache/hadoop/hadoop-2.6.0/datanode</value>
<final>true</final>
</property>
</configuration>
注意:
- 我们后续搭建集群环境时,将配置一个Master节点和两个Slave节点。所以
dfs.replication
配置为2。 dfs.namenode.name.dir
和dfs.datanode.data.dir
分别配置为之前创建的NameNode和DataNode的目录路径
3).mapred-site.xml配置
Hadoop安装文件中提供了一个mapred-site.xml.template,所以我们之前使用了命令 cp mapred-site.xml.template mapred-site.xml
,创建了一个mapred-site.xml文件。下面使用命令 nano mapred-site.xml
编辑这个文件:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
</configuration>
这里只有一个配置项 mapred.job.tracker
,我们指向master节点机器。
4)修改JAVA_HOME环境变量
使用命令 .nano hadoop-env.sh
,修改如下配置:
# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
5.格式化 namenode
这是很重要的一步,执行命令 hadoop namenode -format
4.安装SSH
搭建集群环境,自然少不了使用SSH。这可以实现无密码访问,访问集群机器的时候很方便。
root@8ef06706f88d:~# sudo apt-get install ssh
SSH装好了以后,由于我们是Docker容器中运行,所以SSH服务不会自动启动。需要我们在容器启动以后,手动通过 /usr/sbin/sshd
手动打开SSH服务。未免有些麻烦,为了方便,我们把这个命令加入到 ~/.bashrc
文件中。通过 nano ~/.bashrc
编辑 .bashrc
文件(nano没有安装的自行安装,也可用vi),在文件后追加下面内容:
#autorun
/usr/sbin/sshd
5.生成访问密钥
root@8ef06706f88d:/# cd ~/
root@8ef06706f88d:~# ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
root@8ef06706f88d:~# cd .ssh
root@8ef06706f88d:~/.ssh# cat id_dsa.pub >> authorized_keys
注意: 这里,我的思路是直接将密钥生成后写入镜像,免得在买个容器里面再单独生成一次,还要相互拷贝公钥,比较麻烦。当然这只是学习使用,实际操作时,应该不会这么搞,因为这样所有容器的密钥都是一样的!!
6.保存镜像副本
这里我们将安装好Hadoop的镜像保存为一个副本。
root@8ef06706f88d:~# exit
king@king:~$ docker commit -m "hadoop install" 8ef06706f88d ubuntu:hadoop
Hadoop分布式集群搭建
重点来了!
按照 hadoop 集群的基本要求,其 中一个是 master 结点,主要是用于运行 hadoop 程序中的 namenode、secondorynamenode 和 jobtracker(新版本名字变了) 任务。用外两个结点均为 slave 结点,其中一个是用于冗余目的,如果没有冗 余,就不能称之为 hadoop 了,所以模拟 hadoop 集群至少要有 3 个结点。
前面已经将Hadoop的镜像构建好了,下面就是使用这个镜像搭建Master节点和Slave节点了:
节点 | hostname | ip | 用途 | Docker启动脚本 |
Master | master | 10.0.0.5 |
namenode secondaryNamenode jobTracker |
docker run -ti -h master ubuntu:hadoop |
Slave | slave1 | 10.0.0.6 |
datanode taskTracker |
docker run -ti -h slave1 ubuntu:hadoop |
Slave | slave2 | 10.0.0.7 |
datanode taskTracker |
docker run -ti -h slave2 ubuntu:hadoop |
启动Docker容器
回顾一下,Docker启动容器使用的是 run
命令:
docker run -ti ubuntu:hadoop
这里有几个问题:
- Docker容器中的ip地址是启动之后自动分配的,且不能手动更改
- hostname、hosts配置在容器内修改了,只能在本次容器生命周期内有效。如果容器退出了,重新启动,这两个配置将被还原。且这两个配置无法通过
commit
命令写入镜像
我们搭建集群环境的时候,需要指定节点的hostname,以及配置hosts。hostname可以使用Docker run
命令的 h
参数直接指定。但hosts解析有点麻烦,虽然可以使用 run
的 --link
参数配置hosts解析信息,但我们搭建集群时要求两台机器互相能够 ping
通,其中一个容器没有启动,那么ip不知道,所以 --link
参数对于我们的这个场景不实用。要解决这个问题,大概需要专门搭建一个域名解析服务,即使用 --dns
参数(参考 这里 )。
我们这里只为学习,就不整那么复杂了,就手动修改hosts吧。只不过每次都得改,我Docker知识浅薄,一时还没有解决这个问题。相信肯定有更好的办法。如果有高人能指定一下,感激不尽!!
启动master容器
docker run -ti -h master ubuntu:hadoop
启动slave1容器
docker run -ti -h slave1 ubuntu:hadoop
启动slave2容器
docker run -ti -h slave2 ubuntu:hadoop
配置hosts
- 通过
ifconfig
命令获取各节点ip。环境不同获取的ip可能不一样,例如我本机获取的ip如下:- master:10.0.0.5
- slave1:10.0.0.6
- slave2:10.0.0.7
使用
sudo nano /etc/hosts
命令将如下配置写入各节点的hosts文件,注意修改ip地址:10.0.0.5 master
10.0.0.6 slave1
10.0.0.7 slave2
配置slaves
下面我们来配置哪些节点是slave。在较老的Hadoop版本中有一个masters文件和一个slaves文件,但新版本中只有slaves文件了。
在master节点容器中执行如下命令:
root@master:~# cd $HADOOP_CONFIG_HOME/
root@master:~/soft/apache/hadoop/hadoop-2.6.0/etc/hadoop# nano slaves
将如下slave节点的hostname信息写入该文件:
slave1
slave2
启动Hadoop
在master节点上执行 start-all.sh
命令,启动Hadoop。
激动人心的一刻……
如果看到如下信息,则说明启动成功了:
root@master:~/soft/apache/hadoop/hadoop-2.6.0/etc/hadoop# start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /root/soft/apache/hadoop/hadoop-2.6.0/logs/hadoop-root-namenode-master.out
slave1: starting datanode, logging to /root/soft/apache/hadoop/hadoop-2.6.0/logs/hadoop-root-datanode-slave1.out
slave2: starting datanode, logging to /root/soft/apache/hadoop/hadoop-2.6.0/logs/hadoop-root-datanode-slave2.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /root/soft/apache/hadoop/hadoop-2.6.0/logs/hadoop-root-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /root/soft/apache/hadoop/hadoop-2.6.0/logs/yarn--resourcemanager-master.out
slave1: starting nodemanager, logging to /root/soft/apache/hadoop/hadoop-2.6.0/logs/yarn-root-nodemanager-slave1.out
slave2: starting nodemanager, logging to /root/soft/apache/hadoop/hadoop-2.6.0/logs/yarn-root-nodemanager-slave2.out
四.基于daocloud创建startbbs容器实战
http://www.simlinux.com/archives/532.html
首先,StartBBS 是一款优雅、开源、轻量社区系统,基于MVC架构,采用PHP+MySQL
官网: http://www.startbbs.com/
项目地址:https://github.com/startbbs/startbbs
实验环境:
- 基于daocloud平台构建镜像容器
- 基础镜像采用ubuntu:trusty
- 测试机centos6.6 x64
创建步骤:
1.测试机安装docker并编写dockerfile文件
yum -y install docker-io
service docker start
chkconfig docker on
1
2
3
4
|
yum -y update
yum -y install docker-io
service docker start
chkconfig docker on
|
更改docker的默认mirrors(可以注册daocloud有免费加速镜像下载地址)
1
|
sed -i 's#other_args=#other_args="--registry-mirror=http://7de036e1.m.daocloud.io"#g'/etc/sysconfig/docker
|
下载基础镜像
1
|
docker pull ubuntu:trusty
|
在github上fork startbbs
cd startbbs
创建Dockerfile文件
FROM ubuntu:trusty
MAINTAINER Geekwolf
RUN apt-get -y update && apt-get -y install mysql-client php5 ImageMagick apache2 php5-gd php5-mysql
RUN rm -rf /var/www/html/*
ADD . /var/www/html
RUN chown -R www-data:www-data /var/www/html
WORKDIR /var/www/html
RUN echo "ServerName startbbs.daoapp.io">>/etc/apache2/apache2.conf
RUN sed -i "s#'localhost'#getenv("MYSQL_PORT_3306_TCP_ADDR")#g" app/config/database.php && sed -i "s#'startbbs'#getenv("MYSQL_INSTANCE_NAME")#g" app/config/database.php && sed -i "s#'root'#getenv("MYSQL_USERNAME")#g" app/config/database.php && sed -i "s#'123456'#getenv("MYSQL_PASSWORD")#g" app/config/database.php
EXPOSE 80
CMD ["/usr/sbin/apache2ctl","-D","FOREGROUND"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
git clone https://github.com/geek-linux/startbbs.git
cd startbbs
创建Dockerfile文件
FROM ubuntu:trusty
MAINTAINER Geekwolf
RUN apt-get -y update && apt-get -y install mysql-client php5 ImageMagick apache2 php5-gd php5-mysql
RUN rm -rf /var/www/html/*
ADD . /var/www/html
RUN chown -R www-data:www-data /var/www/html
WORKDIR /var/www/html
RUN echo "ServerName startbbs.daoapp.io">>/etc/apache2/apache2.conf
RUN sed -i "s#'localhost'#getenv("MYSQL_PORT_3306_TCP_ADDR")#g" app/config/database.php && sed -i "s#'startbbs'#getenv("MYSQL_INSTANCE_NAME")#g" app/config/database.php && sed -i "s#'root'#getenv("MYSQL_USERNAME")#g" app/config/database.php && sed -i "s#'123456'#getenv("MYSQL_PASSWORD")#g" app/config/database.php
EXPOSE 80
CMD ["/usr/sbin/apache2ctl","-D","FOREGROUND"]
|
根据Dockerfile从基础镜像中创建startbbs web镜像
docker build -t startbbs .
docker run --name=startbbs -it startbbs:latest /bin/bash
无ssh登陆容器查看是否正常
nsenter --target $(docker inspect --format "{{.State.Pid}}" startbbs) --mount --uts --ipc --net --pid
1
2
3
4
5
|
cd startbbs
docker build -t startbbs .
docker run --name=startbbs -it startbbs:latest /bin/bash
无ssh登陆容器查看是否正常
nsenter --target $(docker inspect --format "{{.State.Pid}}" startbbs) --mount --uts --ipc --net --pid
|
git commit -am "Add Dockerfile"
git push origin master
1
2
3
|
git add Dockerfile
git commit -am "Add Dockerfile"
git push origin master
|
2.在daocloud平台构建镜像
A. 登陆 https://www.daocloud.io,选择代码构建
–创建项目
B. 设置代码源github,选择代码库startbbs,暂时关闭持续集成
–发布应用镜像:镜像仓库
–开始创建
C. 选择服务集成
–选择MySQL镜像
–创建服务实例
–我的服务
查看数据库账号信息
D. 此处简单起见使用daocloud自带的phpMyAdmin镜像(镜像仓库
)创建容器,并导入startbbs的sql文件(data/db/startbbs.sql)
E. 创建startbbs容器,镜像仓库
–选择startbbs镜像
–点击部署
–容器名字:startbbs–选择相应的容器配置–点击服务&环境
–绑定MySQL容器
–立即部署
–容器启动后,设置域名
为http://startbbs.daoapp.io,绑定自有域名http://bbs.simlinux.com,增加dns解析cname到z3y206n242.daoap.me 即可
F. 访问http://startbbs.daoapp.io初始化startbbs,到此startbbs容器安装完成
G. 创建得容器在 https://dashboard.daocloud.io即可看到
CentOS 7上搭建Docker环境的更多相关文章
- 在CentOS 7上搭建Docker环境
Preface We commonly use VMware or VirtualBox to install our Virtual Machines before.For the ...
- CentOS 7 上搭建LNMP环境
(转自美团云知识库Chris) 简介 LNMP是Linux.Nginx.MySQL(MariaDB)和PHP的缩写,这个组合是最常见的WEB服务器的运行环境之一.本文将带领大家在CentOS 7操作系 ...
- 在CentOS 7上安装Docker环境
官网文档:https://docs.docker.com/engine/installation/linux/centos/ ,本文大部分是照搬官方文档写的,如果你英文还不错,那么就直接移步官方文档吧 ...
- 如何在CentOS 7上搭建LAMP环境(使用YUM或编译)
什么是LAMP? LAMP是Linux,Apache,MySQL和PHP的缩写. 它是一堆应用程序的堆栈,它们在Web服务器上一起工作以托管网站. 话虽如此,每个程序都有不同的目的: 在LAMP中, ...
- 在CentOS 6上搭建私有的Docker Registry
在CentOS 6上搭建私有的Docker Registry v2Registry概念 :Registry是一个无状态的, 高可扩展的服务器端应用程序, 用于存储和分发Docker Image. 依赖 ...
- 【FastDFS】小伙伴们说在CentOS 8服务器上搭建FastDFS环境总报错?
写在前面 在[冰河技术]微信公众号的[分布式存储]专题中,我们分别搭建了单节点FastDFS环境和高可用FastDFS集群环境.但是,之前的环境都是基于CentOS 6.8服务器进行搭建的.很多小伙伴 ...
- Centos搭建 Docker 环境
搭建 Docker 环境 安装与配置 Docker 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum ...
- 在CentOS 8服务器上搭建FastDFS环境
什么是FastDFS? 这里,我就摘录下百度百科上对于FastDFS的描述. FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下 ...
- ECS上搭建Docker(CentOS7)
ECS上搭建Docker(CentOS7) centos下 yum快速安装maven ## 安装jdk8 yum install -y java-1.8.0-openjdk* ## 安装maven w ...
随机推荐
- IDA python使用笔记
pattern='20 E5 40 00' addr=MinEA() for x in range(0,5): addr=idc.FindBinary(addr,SEARCH_DOWN,pat ...
- Web api 访问HttpContext
HttpContext context; Request.Properties.TryGetValue<HttpContext>("MS_HttpContext", o ...
- 开始Django之旅
MTV 与 MVC 模型 1.MVC模型 Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为 模型(M) ,控制器(C) 和 视图(V) 三层,他们之间以一种插件式的.松耦合的方式 ...
- [代码][deque容器练习]打分案例
案例要求: //打分案例(sort算法排序)//创建5个选手(姓名.得分),十个评委对五个选手进行打分//得分规则:去除最高分,去除最低分,取出平均分//按得分对5个选手进行排名 源代码: //打分案 ...
- Maven配置本地仓库
当我们在myeclipse中update maven时可能会报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml,以致于 ...
- Notepad++中的高级查找
准备以下字符串用来演示 abcdeab cdeabcde abcd eabcde 基于扩展的查找 基于扩展的查找不能算是真正的正则表达式搜索,因此这种查找方式仅是提供了支持转义字符.主要常用的 ...
- ERROR 程序出错,错误原因:'bytes' object has no attribute 'read'
使用json解析数据时,通常遇到这里就会出现问题'bytes' object has no attribute 'read',这是由于使用的json内置函数不同,一个是load另一个是loads. i ...
- Graphics.Blit
[Graphics.Blit] 需求注意第4个参数,用4个参数pass用于指定使用哪一个pass.默认值为-1,即使用所有的pass. 参考:file:///C:/Program%20Files%20 ...
- 解题报告-1012. Numbers With Repeated Digits
Given a positive integer N, return the number of positive integers less than or equal to N that have ...
- [Training Video - 5] [Groovy Script Test Step - Collections, Exceptions] HashSet and Hashtable
Hashset: HashSet set = new HashSet() set.add("India") set.add("USA") set.add(&qu ...