IT资产管理系统ITDB一直卡在【正在从服务器加载数据】的原因和解决方法
用Navicat翻了翻,找到原因:
itdb数据库sqlite文件中的items表中的itemtypeid字段,在使用旧版的新增硬件之后这里的it会出现中文,造成一直显示正在从服务器加载数据。
用Navicat翻了翻,找到原因:
itdb数据库sqlite文件中的items表中的itemtypeid字段,在使用旧版的新增硬件之后这里的it会出现中文,造成一直显示正在从服务器加载数据。
Ubuntu14.04如何备份和恢复系统
安装好Ubuntu之后,别忘了安装 for linux 防火墙和杀毒软件。
在备份系统前,请保证系统是无错和干净的:
本人操作系统是ubuntu14.04,不知道是系统出了问题还是装的软件有问题,每次开机都出现:System program problem detected 我初步感觉是显卡驱动的问题。
看着很心烦,关闭方法:
管理员权限打开/etc/default/apport
# set this to 0 to disable apport, or to 1 to enable it
# you can temporarily override this with
# sudo service apport start force_start=1
enabled=1
把原先的1改成0就可以了。
清理Ubuntu14.04的系统的垃圾:
先清空回收站,软件升级到最新。
Ubuntu系统与Windows系统所采用的文件系统不同, Ubuntu系统在使用或更新过程中不会产生文件碎片和垃圾文件,所以在使用 Ubuntu系统中不用考虑清理系统的文件垃圾和整理文件碎片。
如果你确实想去清理一下Ubuntu系统的话,那么请你参照下述方法去做吧:
1、按“Ctrl+Alt+T”,调出终端。
2、在终端输入下面的命令(复制到终端窗口即可)——按回车键——输入帐户密码——按回车键。
sudo apt-get autoclean(清理旧版本的软件缓存)
sudo apt-get clean(清理所有软件缓存)
sudo apt-get autoremove(删除系统不再使用的孤立软件)
在备份Windows系统的时候你可能想过,我能不能把整个C盘都放到一个ZIP文件里去呢。这在Windows下是不可能的,因为在Windows中有很多文件在它们运行时是不允许拷贝或覆盖的,因此你需要专门的备份工具对Windows系统进行特殊处理。
和备份Windows系统不同,如果你要备份Ubuntu系统(或者其它任何Linux系统),你不再需要像Ghost这类备份工具。事实上,Ghost这类备份工具对于Linux文件系统的支持很糟糕,例如一些Ghost版本只能完善地支持Ext2文件系统,如果你用它来备份Ext3和Ext4文件系统,你可能会丢失一些宝贵的数据。
一. 备份系统
我该如何备份我的Ubuntu系统呢?很简单,就像你备份或压缩其它东西一样,使用TAR。和Windows不同,Linux不会限制root访问任何东西,你可以把分区上的所有东西都扔到一个TAR文件里去!
备份第一步:
打开一个终端,并运行 sudo su(回车后要求输入密码)
第二步:继续在终端中输入 cd /(注意中间有一个空格)
第三步:(开始备份系统)
在终端中输入:
# tar cvpzf Ubuntu.tgz –exclude=/proc –exclude=/lost+found –exclude=/Ubuntu.tgz –exclude=/mnt –exclude=/sys /
让我们来简单看一下这个命令:
'tar' 是用来备份的程序
c - 新建一个备份文档
v - 详细模式, tar程序将在屏幕上实时输出所有信息。
p - 保存许可,并应用到所有文件。
z - 采用‘gzip’压缩备份文件,以减小备份文件体积。
f - 说明备份文件存放的路径, Ubuntu.tgz 是本例子中备份文件名。
“/”是我们要备份的目录,在这里是整个文件系统。
在档案文件名“Ubuntu.gz”和要备份的目录名“/”之间给出了备份时必须排除在外的目录。有些目录是无用的,例如“/proc”、“/lost+ found”、“/sys”。当然,“Ubuntu.gz”这个档案文件本身必须排除在外,否则你可能会得到一些超出常理的结果。如果不把“/mnt”排 除在外,那么挂载在“/mnt”上的其它分区也会被备份。另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西, 必须把“/media”也排除在外。
有人可能会建议你把“/dev”目录排除在外,但是我认为这样做很不妥,具体原因这里就不讨论了。
执行备份命令之前请再确认一下你所键入的命令是不是你想要的。执行备份命令可能需要一段不短的时间。
备份完成后,在文件系统的根目录将生成一个名为“Ubuntu.tgz”的文件,它的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。
你还可以用Bzip2来压缩文件,Bzip2比gzip的压缩率高,但是速度慢一些。如果压缩率对你来说很重要,那么你应该使用Bzip2,用“j”代替命令中的“z”,并且给档案文件一个正确的扩展名“bz2”。完整的命令如下:
# tar cvpjf Ubuntu.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/Ubuntu.tar.bz2 –exclude=/mnt –exclude=/sys /
二. 恢复系统
切换到root用户,并把文件“Ubuntu.tgz”拷贝到分区的根目录下。
在 Linux中有一件很美妙的事情,就是你可以在一个运行的系统中恢复系统,而不需要用boot-cd来专门引导。当然,如果你的系统已经挂掉不能启动了, 你可以用Live CD来启动,效果是一样的。
使用下面的命令来恢复系统:
# tar xvpfz Ubuntu.tgz -C /
如果你的档案文件是使用Bzip2压缩的,应该用:
# tar xvpfj Ubuntu.tar.bz2 -C /
注意:上面的命令会用档案文件中的文件覆盖分区上的所有文件。
参数x是告诉tar程序解压缩备份文件。 -C 参数是指定tar程序解压缩到的目录。( 在本例中是/ ),这会花一段时间。只需确保在你做其他任何事情之前,重新创建你剔除的目录: ( /proc, /lost+found, /mnt, /sys, 等等。)
# mkdir /proc /lost+found /mnt /sys
或者这样:
# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys
执行恢复命令之前请再确认一下你所键入的命令是不是你想要的,执行恢复命令可能需要一段不短的时间。触类旁通,熟练以上操作后,对用户和部分升级文件进行定期备份,可以节省大量时间和提高安全性。
阿里云部署Docker(7)----将容器连接起来
时间:2014-11-22 来源:服务器之家 投稿:root
阿里云部署Docker系列文章目录:
阿里云部署Docker(1)----阿里云Ubuntu环境搭建Docker服务
阿里云部署Docker(2)
阿里云部署Docker(3)----指令学习
阿里云部署Docker(4)----容器的使用
阿里云部署Docker(5)----管理和发布您的镜像
阿里云部署Docker(6)----解决删除
阿里云部署Docker(7)----将容器连接起来
阿里云部署Docker(8)----安装和使用redmine
阿里云部署Docker(9)----Dockerfile脚本定制镜像
我们在阿里云上部署Docker服务系列教程已经到了第7节,
需要回顾的同学可以翻看我的博客。
今天,我们学习一下怎么将docker里面的容器连接起来。例如我是一个web服务,我需要用到mysql服务,如果它们属于不同的容器内,如果连接。这就是我们这节课要解决的问题。
连接的第一步是为我们的容器命名
容器命名 容器命名是在run的选项里面--name 具体如下:
root@iZ28ikebrg6Z:~# docker run -d -P --name web training/webapp python app.py
ca9d0b6245e0451e911ac03ef3d2b7748120a55d29c2d8b3cc9d9cd6e4ad0148
root@iZ28ikebrg6Z:~# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 11224 11210 0 80 0 - 5601 wait pts/1 00:00:00 bash
0 R 0 11907 11224 0 80 0 - 2121 - pts/1 00:00:00 ps
root@iZ28ikebrg6Z:~# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ca9d0b6245e0 training/webapp:latest "python app.py" 15 seconds ago Up 14 seconds 0.0.0.0:49153->5000/tcp web
root@iZ28ikebrg6Z:~#
我们可以详细的了解这个容器的底层信息:
root@iZ28ikebrg6Z:~# docker inspect --help
Usage: docker inspect CONTAINER|IMAGE [CONTAINER|IMAGE...]
Return low-level information on a container or image
-f, --format="" Format the output using the given go template.
root@iZ28ikebrg6Z:~# docker inspect -f "{{.Name}}" ca9
/web
root@iZ28ikebrg6Z:~#
需要注意的是,容器的名字需要是唯一的。不能够有冲突。如果你想容器停止后就放弃这个名字,那么你可以在运行的时候加入选项 --rm 容器连接
容器连接之后就可以相互交流数据,例如包含web的容器,它可以连接到一个包含数据库的容器,然后由数据容器给它提供数据存储。
连接是--link name:alias 其中name是我们要连接的容器,比如一个数据库容器mysql,而alias是这个连接的名称。
我们先执行命令,然后解释:
root@iZ28ikebrg6Z:~# docker stop web
web
root@iZ28ikebrg6Z:~# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 6 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 11 days ago 142.1 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
root@iZ28ikebrg6Z:~# docker run -d --name db sameersbn/postgresql
a9dbca9857fddbe366ce76909943e856eecc12df27886830e43fe5c91a53abc7
root@iZ28ikebrg6Z:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9dbca9857fd sameersbn/postgresql:latest "/start" 5 seconds ago Up 3 seconds 5432/tcp db
root@iZ28ikebrg6Z:~# docker rm -f web
web
root@iZ28ikebrg6Z:~# docker run -d -P --name web --link db:db training/webapp python app.py
ff990b53706d0a1277c1ba37b274c397ba906ba8ea28e9d9b57e78f84ef12d93
root@iZ28ikebrg6Z:~# docker ps --no-trunc | awk '{print $NF}'
NAMES
web
db,web/db
root@iZ28ikebrg6Z:~#
我们连接的是sameersbn/postgresql 这也是个数据库,是我不小心下载下来的,没有mysql。拿着用吧,会出错再说。
好,连是连接起来了,可是如何交互数据呢?因为到现在位置我们只是看到多了个--link 选项而已,假如我要使用数据库,我总得增删改查啊。
docker提供两种方式,一种是环境变量,一种是改/etc/hosts
环境变量
当一个连接产生之后,docker首先会为每个连接产生一个环境变量
db_NAME=/web/db
还有,一些源容器暴露的端口。这部分我直接贴官网的说明,或许更能够讲清楚,大家自行理解。
设置环境变量的方法为:
$ sudo docker run --rm --name web2 --link db:db training/webapp env
. . .
DB_NAME=/web2/db
DB_PORT=tcp://172.17.0.5:5432
DB_PORT_5432_TCP=tcp://172.17.0.5:5432
DB_PORT_5432_TCP_PROTO=tcp
DB_PORT_5432_TCP_PORT=5432
DB_PORT_5432_TCP_ADDR=172.17.0.5
还有另一种方法是更改目标容器中的hosts文件,在这个文件中加入源容器 /etc/hosts
具体如下:
$ sudo docker run -t -i --rm --link db:db training/webapp /bin/bash
root@aed84ee21bde:/opt/webapp# cat /etc/hosts
172.17.0.7 aed84ee21bde
. . .
172.17.0.5 db
可以实验一下是否能够联通
root@aed84ee21bde:/opt/webapp# apt-get install -yqq inetutils-ping
root@aed84ee21bde:/opt/webapp# ping db
PING db (172.17.0.5): 48 data bytes
56 bytes from 172.17.0.5: icmp_seq=0 ttl=64 time=0.267 ms
56 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.250 ms
56 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.256 ms
就算源容器重启,它也会自动更新
$ sudo docker restart db
root@aed84ee21bde:/opt/webapp# cat /etc/hosts
172.17.0.7 aed84ee21bde
. . .
172.17.0.9 db
好。容器的连接就到这里。到实战的时候记得有这么回事就可以。
阿里云部署Docker(6)----解决删除
时间:2014-11-22 来源:服务器之家 投稿:root
阿里云部署Docker系列文章目录:
阿里云部署Docker(1)----阿里云Ubuntu环境搭建Docker服务
阿里云部署Docker(2)
阿里云部署Docker(3)----指令学习
阿里云部署Docker(4)----容器的使用
阿里云部署Docker(5)----管理和发布您的镜像
阿里云部署Docker(6)----解决删除
阿里云部署Docker(7)----将容器连接起来
阿里云部署Docker(8)----安装和使用redmine
阿里云部署Docker(9)----Dockerfile脚本定制镜像
在Docker使用中,经常会碰到删除镜像不成功,反而让镜像变成了
root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 2 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
好多,删又删不了。这主要是一些container使用了该image导致的,不仅仅是说现在运行的容器,之前运行的也会。
docker ps -a
可以查历史记录,然后将container commit成镜像。
我们需要删除这些依赖Image的container,当使用到该镜像的所有container都删除了,就可以直接用IMAGE_ID来删除该镜像。
root@iZ28ikebrg6Z:/var/run# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d6373cb79e6 224b40d4b89f "/bin/sh -c 'apt-get 25 hours ago Exited (0) 25 hours ago distracted_blackwell
aa47ba8e71c8 training/webapp:latest "python app.py" 28 hours ago Exited (-1) 27 hours ago suspicious_ardinghelli
09792841c0b4 training/webapp:latest "python app.py" 29 hours ago Exited (-1) 27 hours ago compassionate_torvalds
d8eca9742031 9cbaf023786c "/bin/sh -c 'while t 31 hours ago Exited (-1) 30 hours ago mad_jones
95d20e5442f9 9cbaf023786c "/bin/bash" 31 hours ago Exited (0) 31 hours ago stupefied_torvalds
9d40292642e6 9cbaf023786c "/bin/echo 'hello wo 31 hours ago Exited (0) 31 hours ago stoic_mclean
1078d5bd868e 9cbaf023786c "/bin/echo 'hello wo 31 hours ago Exited (0) 31 hours ago high_leakey
e88cad8893f5 9cbaf023786c "/bin/echo hello" 31 hours ago Exited (0) 31 hours ago compassionate_mclean
0949d7b6148d 9cbaf023786c "/bin/echo 'hello wo 31 hours ago Exited (0) 31 hours ago romantic_carson
e5ab0f35322f 9cbaf023786c "/bin/bash" 31 hours ago Exited (0) 31 hours ago romantic_elion
9fbad8b573d3 9cbaf023786c "/bin/bash" 32 hours ago Exited (0) 31 hours ago thirsty_davinci
9ce1789ee43d 9cbaf023786c "/bin/echo hello" 32 hours ago Exited (0) 32 hours ago insane_colden
一个个的删除
root@iZ28ikebrg6Z:/var/run# docker rm 5d63
5d63
root@iZ28ikebrg6Z:/var/run# docker rm aa47
aa47
root@iZ28ikebrg6Z:/var/run# docker rm 0979
0979
root@iZ28ikebrg6Z:/var/run# docker rm d8ec
d8ec
root@iZ28ikebrg6Z:/var/run# docker rm 95d
95d
root@iZ28ikebrg6Z:/var/run# docker rm 9d4
9d4
root@iZ28ikebrg6Z:/var/run# docker rm 1078
1078
root@iZ28ikebrg6Z:/var/run# docker rm e88c
e88c
root@iZ28ikebrg6Z:/var/run# docker rm 0949
0949
root@iZ28ikebrg6Z:/var/run# docker rm e5ab
e5ab
root@iZ28ikebrg6Z:/var/run# docker rm 9fba
9fba
root@iZ28ikebrg6Z:/var/run# docker rm 9ce1
9ce1
root@iZ28ikebrg6Z:/var/run# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 3 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
root@iZ28ikebrg6Z:/var/run# docker rmi 4864
Deleted: 48648094d099bf7c38c5687f4cde3f2b7d27e8a1dc45c30d8fdf8e5f42c2473e
Deleted: 4b1b0cd0c62c3e86701bf4bc4736ca403e3ddd264101d69110bd1924bf05ec2d
Deleted: cd2308a31b296d77f1ef1562432d3908582528ed13d838a3ab6702e7d19ce604
Deleted: 212c2526444a6cefedf9d985f2727bef4b50b84062400a8f1d98b19f779baf3d
Deleted: ac89032e1c4548eaf6f6bf817850431b9180a5b7f06b29e6d7f73b4b8878fe10
Deleted: dcd2c451d11f4896c31b0178c41bf764a87625004ff0048863e627474147c413
Deleted: 7eac533353c28beeab8fd4abb5a6663abc99f0cf24d3650963352f3a41ce8e29
Deleted: 11ed21fa7166f4dee1cfe406885d889f07222a458e706c9d30c28aa9e4cfc398
Deleted: cf6daa523a25b1b947138ad883d18f8501d210ae110487066a9b4ccd8fbd9c70
Deleted: 830bf73bda66fe5ac8bf9262b5be7f4cfacec7a2dd28b7d8cb61c505e68fb787
Deleted: 41176d2b465f4072fa46897aef5f4e35a1941d73a20687bb704c2bfd789a5ae3
Deleted: fa078497ab6f0be3ce013f336ff052af7eaa96cbe2e14e3e6f6352c00544ede0
Deleted: 4477fcbe8e773d2699bf50a6a24b265fbede90ab95793e9cd36f1627348424ed
Deleted: 314c98eff22790bf333b9f98ff39576d9cfbeb3f380fe839ca74ef641b30d1f6
Deleted: 01fb8a54ae0821edb5d6d30280b56c47934efa05b158b67ad3a4a4bb9a82928b
Deleted: 533b41917c87f1479dd6cc852cf8ad11ccd9ef93d5b42978b66bbb1bb30dd476
Deleted: b9c0b9efe68d7fe7caa1c9dcfd61a0aa4a3fb4e2629b7d10c9140a495a438855
Deleted: a91d7692121d15b5399bfb0b4096aa7d696d9e0e0b44269479e5666ea3b39dd9
Deleted: 37d36b47338de2dca6f957a520016d9e7ca4db1e57d6eb38824c9ba267b29db7
Deleted: c4ff7513909dedf4ddf3a450aea68cd817c42e698ebccf54755973576525c416
Deleted: cc58e55aa5a53b572f3b9009eb07e50989553b95a1545a27dcec830939892dba
Deleted: 0ea0d582fd9027540c1f50c7f0149b237ed483d2b95ac8d107f9db5a912b4240
Deleted: d92c3c92fa73ba974eb409217bb86d8317b0727f42b73ef5a05153b729aaf96b
Deleted: 9942dd43ff211ba917d03637006a83934e847c003bef900e4808be8021dca7bd
Deleted: 1c9383292a8ff4c4196ff4ffa36e5ff24cb217606a8d1f471f4ad27c4690e290
root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 3 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
root@iZ28ikebrg6Z:/var/run# docker rmi 195f
Error response from daemon: No such image: 762df2d4d7bb52a46148cf3e5ab423b30aafd58ca8f758ea78ea2cbd1b1753b6
2014/10/17 17:26:04 Error: failed to remove one or more images
root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 3 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
root@iZ28ikebrg6Z:/var/run#
好,删除干净了。还我们一个干净的工作区间。
docker的删除有两种,一个是rm 删除容器,一个是rmi删除镜像。
rm Remove one or more containers
rmi Remove one or more images
这里有两个不同的单词,images和container。其中images很好理解,跟平常使用的虚拟机的镜像一个意思,相当于一个模版,而container则是images运行时的的状态。docker对于运行过的image都保留一个状态(container),可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看。 如果你退出了一个container而忘记保存其中的数据,你可以使用docker ps -a来找到对应的运行过的container使用docker commit命令将其保存为image然后运行。
回到之前的问题,由于image被某个container引用(拿来运行),如果不将这个引用的container销毁(删除),那image肯定是不能被删除。
所以想要删除运行过的images必须首先删除它的container。继续来看刚才的例子,
[yaxin@ubox ~] "hljs-variable">$docker ps "hljs-operator">-a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ade696 ed9c93747fe1 /bin/sh -c /usr/sbin hours ago Up hours 0.0.0.0:->/tcp test_sshd
可以看出ed9c93747fe1的image被117843ade696的container使用着,所以必须首先删除该container
[yaxin@ubox ~] "hljs-variable">$docker rm ade696
Error: container_delete: Impossible to remove a running container, please stop it first
// :: Error: failed to remove one or more containers
出现错误,这是因为该container正在运行中(运行docker ps查看),先将其关闭
[yaxin@ubox ~] "hljs-variable">$docker stop ade696
ade696
[yaxin@ubox ~] "hljs-variable">$docker rm ade696
ade696
[yaxin@ubox ~] "hljs-variable">$docker rmi ed9c93747fe1
Deleted: ed9c93747fe16627be822ad3f7feeb8b4468200e5357877d3046aa83cc44c6af
Deleted: c8a0c19429daf73074040a14e527ad5734e70363c644f18c6815388b63eedc9b
Deleted: dba4c468f0e53e5f1e5d76b8581d6740aab9f59141f783f8e263ccd7cf2a8e
Deleted: c25dc743e40af6858c34375d450851bd606a70ace5d04e231a7fcc6d2ea23cc1
Deleted: f5714a5ce764845119399ef75e652e23135cd5c54265ff8218b61ccbd33
Deleted: c8af1dc23af7a7aea0c25ba9b28bdee68caa8866f056e4f2aa2a5fa1bcb12693
Deleted: fdb2c5432e08ec6121f8dbb17e1fde17d5db4c1f149a9b702785dbf7b0f3be
Deleted: ca14274c80ac1df1333b89b2a41c0e0e3b91cd1b267b31bef852ceab3b2044
[yaxin@ubox ~]$docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
CentOS65 latest e55a74a32125 days ago 360.6 MB
可以看出,image已经被删除
阿里云部署Docker(5)----管理和发布您的镜像
时间:2014-11-22 来源:服务器之家 投稿:root
阿里云部署Docker系列文章目录:
阿里云部署Docker(1)----阿里云Ubuntu环境搭建Docker服务
阿里云部署Docker(2)
阿里云部署Docker(3)----指令学习
阿里云部署Docker(4)----容器的使用
阿里云部署Docker(5)----管理和发布您的镜像
阿里云部署Docker(6)----解决删除
阿里云部署Docker(7)----将容器连接起来
阿里云部署Docker(8)----安装和使用redmine
阿里云部署Docker(9)----Dockerfile脚本定制镜像
今天,我们要进一步讲解,
管理本地镜像
创建基础镜像
上传发布镜像
Listing images on the host 我们首先通过 docker images来查看一下我们本地有什么镜像。
root@iZ28ikebrg6Z:~# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu utopic 2185fd50e2ca 2 days ago 237.2 MB
ubuntu 14.10 2185fd50e2ca 2 days ago 237.2 MB
ubuntu trusty 9cbaf023786c 2 days ago 192.8 MB
ubuntu 14.04 9cbaf023786c 2 days ago 192.8 MB
ubuntu 14.04.1 9cbaf023786c 2 days ago 192.8 MB
ubuntu latest 9cbaf023786c 2 days ago 192.8 MB
ubuntu 12.04.5 a9561eb1b190 2 days ago 120.2 MB
ubuntu precise a9561eb1b190 2 days ago 120.2 MB
ubuntu 12.04 a9561eb1b190 2 days ago 120.2 MB
centos latest 87e5b6b3ccc1 2 weeks ago 224 MB
ubuntu 12.10 c5881f11ded9 3 months ago 172.2 MB
ubuntu quantal c5881f11ded9 3 months ago 172.2 MB
ubuntu 13.04 463ff6be4238 3 months ago 169.4 MB
ubuntu raring 463ff6be4238 3 months ago 169.4 MB
ubuntu saucy 195eb90b5349 3 months ago 184.7 MB
ubuntu 13.10 195eb90b5349 3 months ago 184.7 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
ubuntu lucid 3db9c44f4520 5 months ago 183 MB
ubuntu 10.04 3db9c44f4520 5 months ago 183 MB
可以看到,我在之前的教程里面拉取了两个一个是ubuntu,一个是training/webapp。其中ubuntu,docker给我拉取了那么多变种回来。上面的输出有一列叫“TAG”,记得我们运行的时候会有"docker run ubuntu:14.04 /bin/bash 么 !就是根据TAG来精确的指定我们想要执行的那个ubuntu,否则docker会自作聪明的运行TAG为“latest”的那个镜像。 Getting a new image 如何获取一个新的镜像。我们知道当我们运行一个镜像的时候,如果这个镜像例如centos在本地没有,docker会自动的去远端库查询和下载。但是这种临时的下载明显是费时间的,我们可以不可以提前去下载呢?可以,使用docker pull拉取指令。
root@iZ28ikebrg6Z:~# docker pull centos
Pulling repository centos
^Croot@iZ28ikebrg6Z:~# ^C
你看,它会去拉取,不过我中断了,因为我不需要,我的阿里云存储很金贵的。 Finding images 搜索一个镜像,你可以选择去docker hub的网站搜索,也可以选择在本地用命令行的方式进行。
如下:
root@iZ28ikebrg6Z:~# docker search redmine
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
sameersbn/redmine 40 [OK]
webts/redmine Self contained Redmine 2.4 install on Cent... 2
triangle/redmine-plugin-dev Redmine 2.4.1 on ruby 2.0 aimed at plugin ... 1 [OK]
oasis/redmine-git 1
melopos/redmine 1 [OK]
turnkeylinux/redmine-13.0 TurnKey Redmine - Integrated SCM & Project... 1
sherkenh/redmine 0
oasis/redmine 0
bernigaud/redmine Redmine for my server HAL Forked from same... 0
eprecise/redmine 0
hogefoobar/redmine 0
mattuso/redmine_nginx 0 [OK]
mattuso/redmine_mysql 0 [OK]
aofox5152/redmine 0
chonglou/redmine remine+mysql+nginx 0
laughk/redmine 0
krickwix/redmine 0
bazitov/redmine 0
sasasin/redmine-scrum ALMinium on CentOS 6, with SSH server. 0
yjkim/apache-redmine 0
sosyco/redmine-sqlite-debian Tryout/GetAndRun Redmine 2.5.1/sqlitel/De... 0
eternnoir/redminebot 0 [OK]
sosyco/redmine-mysql-debian Tryout/GetAndRun Redmine 2.5.1/mysql/Debi... 0
hiromiso/redmine2.4 redmine + mysql 0
tmtkd/redminetest Sep. 1st, 2014 test of redmine/docker 0
pvdvreede/redminedev Installation of ruby 2.0.0-p247 and others 0
madmaze/ubunturedmine quick ubuntu 12.04 image with Redmine on s... 0
shaftoe/new_redmine WARNING: old legacy Redmine, not usable fo... 0
mattuso/redmine_unicorn 0 [OK]
vpetersson/redmine 0 [OK]
miraitechno/redmine 0 [OK]
pnelson/redmine 0 [OK]
padelt/redmine 0 [OK]
binaryphile/redmine Reusable, general-purpose Redmine instance... 0
我们搜索了一下redmine,这是个项目管理的服务。上面的列 有,名字,描述,星级(越流行评分越高,提供参考),是否有官方维护,是否自动化,这点我不是很能理解,我也不敢误人子弟。所以还是引用官网的那句话,各位看官自己理解
“Official repositories are built and maintained by the Stackbrew project, and Automated repositories are Automated Builds that allow you to validate the source and content of an image.”
选一个pull下来就行了。
Building an image from a Dockerfile 通过Dockerfile来构建一个镜像。用vim写一个Dockerfile,内如如下:
FROM ubuntu:14.04
MAINTAINER zengjinlong mailto:470910357@qq.com
RUN apt-get update && apt-get install -y ruby ruby-dev
RUN gem install sinatra
命令都是大写,FROM表示它的源是什么,例如我们这个是给予Ubuntu:14.04的,MAINTANER是维护人员,比如说我,小曾,卖下萌。
RUN表示执行指令。
好,执行上述Dockerfile。
root@iZ28ikebrg6Z:~/docker# docker build -t="zengjinlong/sinatra:v2" .
Sending build context to Docker daemon 2.56 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:14.04
---> 9cbaf023786c
Step 1 : MAINTAINER zengjinlong mailto:470910357@qq.com
---> Running in c5674e71d7e4
---> 224b40d4b89f
Removing intermediate container c5674e71d7e4
Step 2 : RUN apt-get update && apt-get install -y ruby ruby-dev
---> Running in 5d6373cb79e6
Ign http://archive.ubuntu.com trusty InRelease
Ign http://archive.ubuntu.com trusty-updates InRelease
Ign http://archive.ubuntu.com trusty-security InRelease
Ign http://archive.ubuntu.com trusty-proposed InRelease
Get:1 http://archive.ubuntu.com trusty Release.gpg [933 B]
Get:2 http://archive.ubuntu.com trusty-updates Release.gpg [933 B]
Get:3 http://archive.ubuntu.com trusty-security Release.gpg [933 B]
Get:4 http://archive.ubuntu.com trusty-proposed Release.gpg [933 B]
Get:5 http://archive.ubuntu.com trusty Release [58.5 kB]
Get:6 http://archive.ubuntu.com trusty-updates Release [59.7 kB]
Get:7 http://archive.ubuntu.com trusty-security Release [59.7 kB]
Get:8 http://archive.ubuntu.com trusty-proposed Release [110 kB]
Get:9 http://archive.ubuntu.com trusty/main Sources [1335 kB]
会耗费比较长的时间。
我们技术下一步的学习。
标记一个image
docker tag 5db5f8471261 ouruser/sinatra:devel
root@iZ28ikebrg6Z:~/docker# docker tag 224b40d4b89f zengjinlong/sinatra:v3
结果显示一下,
输出:
root@iZ28ikebrg6Z:~/docker# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
zengjinlong/sinatra v3 224b40d4b89f 13 minutes ago 192.8 MB
ubuntu 14.10 2185fd50e2ca 2 days ago 237.2 MB
ubuntu utopic 2185fd50e2ca 2 days ago 237.2 MB
ubuntu trusty 9cbaf023786c 2 days ago 192.8 MB
ubuntu latest 9cbaf023786c 2 days ago 192.8 MB
ubuntu 14.04.1 9cbaf023786c 2 days ago 192.8 MB
ubuntu 14.04 9cbaf023786c 2 days ago 192.8 MB
ubuntu precise a9561eb1b190 2 days ago 120.2 MB
ubuntu 12.04.5 a9561eb1b190 2 days ago 120.2 MB
ubuntu 12.04 a9561eb1b190 2 days ago 120.2 MB
centos centos5 504a65221a38 2 weeks ago 467.1 MB
centos centos6 68edf809afe7 2 weeks ago 212.7 MB
centos centos7 87e5b6b3ccc1 2 weeks ago 224 MB
centos latest 87e5b6b3ccc1 2 weeks ago 224 MB
ubuntu quantal c5881f11ded9 3 months ago 172.2 MB
ubuntu 12.10 c5881f11ded9 3 months ago 172.2 MB
ubuntu 13.04 463ff6be4238 3 months ago 169.4 MB
ubuntu raring 463ff6be4238 3 months ago 169.4 MB
ubuntu saucy 195eb90b5349 3 months ago 184.7 MB
ubuntu 13.10 195eb90b5349 3 months ago 184.7 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
ubuntu 10.04 3db9c44f4520 5 months ago 183 MB
ubuntu lucid 3db9c44f4520 5 months ago 183 MB
上传我们的镜像到docker hub里面。
root@iZ28ikebrg6Z:~/docker# docker push zengjinlong/sinatra
The push refers to a repository [zengjinlong/sinatra] (len: 1)
Sending image list
^Croot@iZ28ikebrg6Z:~/docker#
演示一下就OK,不是很想在这里浪费时间。
删除本地镜像,因为毕竟占地方把。
root@iZ28ikebrg6Z:~/docker# docker rmi centos
阿里云部署Docker(4)----容器的使用
时间:2014-11-22 来源:服务器之家 投稿:root
阿里云部署Docker系列文章目录:
阿里云部署Docker(1)----阿里云Ubuntu环境搭建Docker服务
阿里云部署Docker(2)
阿里云部署Docker(3)----指令学习
阿里云部署Docker(4)----容器的使用
阿里云部署Docker(5)----管理和发布您的镜像
阿里云部署Docker(6)----解决删除
阿里云部署Docker(7)----将容器连接起来
阿里云部署Docker(8)----安装和使用redmine
阿里云部署Docker(9)----Dockerfile脚本定制镜像
通过上一节的学习,我们知道如何运行docker容器,我们运行了一个普通的,一个后台的,我们还学习了几个指令:
docker ps - Lists containers.
docker logs - Shows us the standard output of a container.
docker stop - Stops running containers.
我们还可以查看下docker的版本:
root@iZ28ikebrg6Z:~# docker version
Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.3.1
Git commit (client): fa7b24f
OS/Arch (client): linux/amd64
Server version: 1.2.0
Server API version: 1.14
Go version (server): go1.3.1
Git commit (server): fa7b24f
root@iZ28ikebrg6Z:~#
docker是基于google公司的Go语言的。
如果不知道docker怎么用,或者忘记了的时候,直接输入docker,会给出用法提示
root@iZ28ikebrg6Z:~# docker
Usage: docker [OPTIONS] COMMAND [arg...]
-H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use
A self-sufficient runtime for linux containers.
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders from a container's filesystem to the host path
diff Inspect changes on a container's filesystem
events Get real time events from the server
export Stream the contents of a container as a tar archive
history Show the history of an image
images List images
import Create a new filesystem image from the contents of a tarball
info Display system-wide information
inspect Return low-level information on a container
kill Kill a running container
load Load an image from a tar archive
login Register or log in to a Docker registry server
logout Log out from a Docker registry server
logs Fetch the logs of a container
port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
pause Pause all processes within a container
ps List containers
pull Pull an image or a repository from a Docker registry server
push Push an image or a repository to a Docker registry server
restart Restart a running container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save an image to a tar archive
search Search for an image on the Docker Hub
start Start a stopped container
stop Stop a running container
tag Tag an image into a repository
top Lookup the running processes of a container
unpause Unpause a paused container
version Show the Docker version information
wait Block until a container stops, then print its exit code
root@iZ28ikebrg6Z:~#
docker后面跟指令,
root@iZ28ikebrg6Z:~# docker attach
Usage: docker attach [OPTIONS] CONTAINER
Attach to a running container
--no-stdin=false Do not attach STDIN
--sig-proxy=true Proxy all received signals to the process (even in non-TTY mode). SIGCHLD, SIGKILL, and SIGSTOP are not proxied.
root@iZ28ikebrg6Z:~#
如果输入非法,总是会给出提示,告诉你怎么用。 Running a Web Application in Docker 利用Docker构建一个web程序
我们执行一个web应用。
root@iZ28ikebrg6Z:~# docker run -d -P training/weapp python app.py
Unable to find image 'training/weapp' locally
Pulling repository training/weapp
2014/10/16 11:01:56 Error: image training/weapp not found
root@iZ28ikebrg6Z:~# docker run -d -P training/webapp python app.py
Unable to find image 'training/webapp' locally
Pulling repository training/webapp
31fa814ba25a: Pulling dependent layers
511136ea3c5a: Download complete
f10ebce2c0e1: Download complete
82cdea7ab5b5: Download complete
5dbd9cb5a02f: Download complete
31fa814ba25a: Download complete
64523f641a05: Download complete
0e2afc9aad6e: Download complete
e8fc7643ceb1: Download complete
733b0e3dbcee: Download complete
a1feb043c441: Download complete
e12923494f6a: Download complete
a15f98c46748: Download complete
09792841c0b448a330a89ee656b4a16605d835f9d43bb7d6f80f204b6e8ed5b2
root@iZ28ikebrg6Z:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09792841c0b4 training/webapp:latest "python app.py" 54 minutes ago Up 54 minutes 0.0.0.0:49153->5000/tcp compassionate_torvalds
root@iZ28ikebrg6Z:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09792841c0b4 training/webapp:latest "python app.py" 56 minutes ago Up 56 minutes 0.0.0.0:49153->5000/tcp compassionate_torvalds
root@iZ28ikebrg6Z:~#
第一次敲错了。第二次它会去docker库下载,下载完了,ps查看一下。多了一行Ports。表示将本机的49153端口映射到compassionate_toralds容器的5000端口。
我用浏览器试一下。-d选项,我们已经讲过,是将程序后台化;-P,大写的P,是让docker来指定一个端口映射。这里是49153,你可以通过-p小写的来指定这种映射关系。
如下效果:
好,可以访问。哈哈。
root@iZ28ikebrg6Z:~# docker run -d -p 5000:5000 training/webapp python app.py
aa47ba8e71c8512f228a96bf80da117b6c86fc03bdb17eef1c2db353a3e18493
好,再访问一下。