docker 安装 导出 导入 自启动程序
docker安装:
先安装software-properties-common,这样才可以用add-apt-repository命令来增加第三方仓库了。
sudoapt-getinstallsoftware-properties-common
接着增加dotcloud的仓库
sudoadd-apt-repositoryppa:dotcloud/lxc-docker
sudoapt-getupdate
接着安装docker:
命令:
sudoapt-getinstalllxc-docker
如果上面命令安装不了,试着下面命令:
sudosh-c"echodebhttp://get.docker.io/ubuntudockermain>/etc/apt/sources.list.d/docker.list"sudoapt-getupdatesudoapt-getinstalllxc-docker
安装完之后执行
dockerimages
没报错说明安装成功
导出:
sudodockerexportCONTAINERID>/root/x.tar
导入x.tar
大概需要五到十几分钟,导入完成后会输出一长串字符串
导入命令:
cat/path/x.tar|sudodockerimport–xxxx
/path/x.tar:就是你的x.tar存放的完整路径
导入完之后执行dockerimages 看到下面输出说明安装成功
root@li671-138:/root/#dockerimages
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE
xxxxlatest8ead5f541ed12weeksago6.519GB
启动镜像:
dockerrun-it--nameCONTAINER_NAMES-v/root/data/CONTAINER_NAMES:/root/data-p22223:22-p80:80-p18010:18010-p8001:8001-p8002:8002-p81:81xxxx/bin/bash
CONTAINER_NAMES:给创建的容器取哥哥名称
-v:/root/data/CONTAINER_NAMES本机的目录
/root/data容器内的目录
启动成功后就会直接进去(如果执行上面命令后没反应,敲下回车)
会看到类似下面的界面,说明已经进去:
root@cb428b7ff639:/#...
启动服务,命令:
/root/start.sh
===================================
#!/bin/sh
ps-fe|grepapache2|grep-vgrep
if[$?-ne0]
then
echo"startapache2...."
serviceapache2start&
sleep5
else
echo"apache2isruning....."
fi
ps-fe|greppostgresql|grep-vgrep
if[$?-ne0]
then
echo"startpostgresql...."
servicepostgresqlstart&
sleep5
else
echo"postgresqlisruning....."
fi
=======================================
启动完成后,大概二到三分钟打开浏览器访问
IP:你系统的ip
启动的这些程序你也可以让它开机的时候启动,我的方式是
把镜像xxxx.tarimport之后,运行时候去执行/etc/rc.local
dockerrun-it-p80:80xxxx/etc/rc.local
rc.local里写着你要执行启动的那些服务,开始只是加了启动的服务,启动完就退出了,后来往rc.local里加了/bin/bash才在后台正常运行,第一次run是直接进入docker里,退出之后,执行dockerps-a会看到CONTAINERID,之后只要dockerstartCONTAINERID,启动之后dockerCONTAINER会在后台运行,dockerattchCONTAINERID进入容器可以看到正在运行的服务(当然是还服务多还没有执行完的时候)
dcoker容器里,我的rc.local是
===========================
#!/bin/sh-e
#
#rc.local
#
#Thisscriptisexecutedattheendofeachmultiuserrunlevel.
#Makesurethatthescriptwill"exit0"onsuccessoranyother
#valueonerror.
#
#Inordertoenableordisablethisscriptjustchangetheexecution
#bits.
#
#Bydefaultthisscriptdoesnothing.
servicemysqlstart&
sleep5
servicememcachedstart&
sleep5
serviceredis-serverstart&
sleep5
servicerabbitmq-serverstart&
sleep5
servicenginxstart&
sleep5
mongod-f/etc/mongodb.conf&
sleep5
serviceelasticsearchstart&
sleep5
/etc/init.d/sshstart&
sleep5
/bin/bash
exit0
=====================================
这是docker开机程序启动,但如果要求服务器启动的时候要求启动项目,那就要在服务器上启动docker,我使用的ubuntu,docker服务开机启动,只要把启动项目的服务器加进服务器的/etc/rc.local里就行
这是我的ubuntu/etc/rc.local
===========================
#!/bin/sh-e
#
#rc.local
#
#Thisscriptisexecutedattheendofeachmultiuserrunlevel.
#Makesurethatthescriptwill"exit0"onsuccessoranyother
#valueonerror.
#
#Inordertoenableordisablethisscriptjustchangetheexecution
#bits.
#
#Bydefaultthisscriptdoesnothing.
dockerstartCONTAINERID&
exit0
===============================
另外一种启动方式
vish为容器,这里可以是容器id
dockerrun-d--namevish_00-p3030:3000-p3080:80-p22222:22vish/usr/sbin/sshd-D