`

docker 安装 导出 导入 自启动程序

阅读更多
docker安装:
先安装software-properties-common,这样才可以用add-apt-repository命令来增加第三方仓库了。
sudo apt-get install software-properties-common
接着增加dotcloud的仓库
sudo add-apt-repository ppa:dotcloud/lxc-docker
sudo apt-get update
 
接着安装docker:
命令:
sudo apt-get install lxc-docker

如果上面命令安装不了,试着下面命令: 
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main >/etc/apt/sources.list.d/docker.list" sudo apt-get update sudo apt-get install lxc-docker
安装完之后执行
docker images
没报错说明安装成功

导出:
sudo docker export CONTAINER ID > /root/x.tar

导入x.tar
大概需要五到十几分钟,导入完成后会输出一长串字符串
导入命令:
cat /path/x.tar |sudo docker import – xxxx
/path/x.tar:就是你的x.tar存放的完整路径

导入完之后执行 docker images 看到下面输出说明安装成功
root@li671-138:/root/# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
xxxx              latest              8ead5f541ed1        2 weeks ago         6.519 GB

启动镜像:
docker run -it --name CONTAINER_NAMES -v /root/data/CONTAINER_NAMES:/root/data -p 22223:22 -p 80:80 -p 18010:18010  -p 8001:8001 -p 8002:8002 -p 81:81 xxxx /bin/bash

CONTAINER_NAMES: 给创建的容器取哥哥名称
-v: /root/data/CONTAINER_NAMES  本机的目录
    /root/data   容器内的目录
启动成功后就会直接进去(如果执行上面命令后没反应,敲下回车)
会看到类似下面的界面,说明已经进去:
root@cb428b7ff639:/#...


启动服务,命令:
/root/start.sh

===================================
#!/bin/sh

ps -fe|grep apache2 |grep -v grep
if [ $? -ne 0 ]
then
echo "start apache2 ...."
service apache2 start &
sleep 5
else
echo "apache2 is runing....."
fi

ps -fe|grep postgresql |grep -v grep
if [ $? -ne 0 ]
then
  echo "start postgresql ...."
  service postgresql start &
  sleep 5
else
  echo "postgresql is runing....."
fi
=======================================

启动完成后,大概二到三分钟打开浏览器访问
IP:你系统的ip


启动的这些程序你也可以让它开机的时候启动,我的方式是

把镜像xxxx.tar import 之后, 运行时候去执行/etc/rc.local
docker run -it -p 80:80 xxxx  /etc/rc.local

rc.local 里 写着你要执行启动的那些服务,开始只是加了启动的服务,启动完就退出了,后来往rc.local里加了/bin/bash才在后台正常运行,第一次run是直接进入docker里, 退出之后, 执行docker ps -a 会看到CONTAINER ID, 之后只要docker start CONTAINER ID ,启动之后docker CONTAINER 会在后台运行, docker attch CONTAINER ID 进入容器可以看到正在运行的服务(当然是还服务多还没有执行完的时候)

dcoker 容器里,我的 rc.local是
===========================
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

service mysql start &
sleep 5
service memcached start &
sleep 5
service redis-server start &
sleep 5
service rabbitmq-server start &
sleep 5
service nginx start &
sleep 5
mongod -f /etc/mongodb.conf &
sleep 5
service elasticsearch start &
sleep 5
/etc/init.d/ssh start &
sleep 5
/bin/bash

exit 0
=====================================


这是docker 开机程序启动, 但如果要求服务器启动的时候要求启动项目,那就要在服务器上启动docker, 我使用的ubuntu, docker服务开机启动,只要把启动项目的服务器加进服务器的/etc/rc.local里就行


这是我的ubuntu /etc/rc.local
===========================
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

docker start  CONTAINER ID &

exit 0
===============================
另外一种启动方式
vish 为容器,这里可以是容器id

docker run -d --name vish_00 -p 3030:3000 -p 3080:80 -p 22222:22 vish /usr/sbin/sshd -D

ssh root@127.0.0.1 -p 22227
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics