docker常用操作

本文记录笔者在日常操作docker中常用的一些命令,仅作参考:

1.docker info

这个命令在可以查看大体的docker服务运行信息,比如有多少docker服务,处于某个状态(runing,stop or paused)的服务有多少个,docker的存储位置,你在dockerhub上的用户名……等等信息
这个相对docker version更全

2.docker image镜像操作

在docker hub上拉去image

docker images               #查看当前(本地)所有镜像

docker search image_name    #在线查找image

docker pull image_name      #下拉image到本地

docekr rmi image_name/container_id      #删除镜像,注意还有一个是docker rm (这是删除某个服务,后面接的是服务的id,这个是每次启动某个container会生成的一串id值)

3.启动docker 服务

我们从dockerhub上pull了一些container之后,使用docker images可以看到它们在本地的名字以及其他一些信息版本号之类的,一般通过image name来启动服务:
1.启动splash服务,可以用docker run –help查看run命令的相关选项,-it表示申请一个控制台同容器进行数据交互,-p指定占用端口
docker run -it -p 8050:8050 scrapinghub/spalsh

2.-d参数,后台启动
docker run -it -d -p 8050:8050 –name tingyun scrapinghub/splash

这个在写脚本的时候特别需要,因为你不需要利用控制台来和你交互,只要启动服务。个人觉得在服务器上运行的大部分程序,都应该优先使用后台模式,将log文件重定向到专门的日志文件中,出现错误就从log文件中查找记录。

4.日常操作docker服务

我在使用splash的时候由于渲染页面是一件比价耗费资源的事情,spalsh所做的事情相当于调用浏览器内盒去打开一个网页,虽然比正常浏览网页的代价花费小,但是由于docker的资源限制等问题,会有一个上限,这时候我找到的方法是重启docker服务,这只是暂时的对策,日后会考虑其他解决方法,比如搭建docker集群,还有待深入学习。

docekr ps       #查看全部运行中runing的服务

docker ps -a    #查看所有的服务,无论什么状态

docker ps -aq   #只查看container_id这一项信息,所有服务

------------------------------
#注意每次关闭重启服务都会生成一个唯一的container_id,如果你要经常重新关机开机再起开某些服务的话,可能会出现大量废弃的id(stop了的容器),可以定期批量删除

docker rm $(docker ps -aq) #正在运行的container并不会被删除,会提示你先stop这个服务

docker rm container_id      #删除某个container

docker kill/stop container_id   #两者都是停掉服务,stop和kill的区别是:stop首先发送一个SIGTERM信号给程序等待程序做一些退出前"善后"的工作,保存状态等...
                                #kill是直接发送SIGKILL,应用程序直接退出,线上的服务的话最好使用前者,for safe

现在笔者对docker的了解程序还仅仅限于简单使用,有什么问题欢迎留言一起讨论。

这里写了一个自动查找splash 镜像并启动的脚本,很简单的代码:

//autorun_splash.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-  
import sys,os
import re
#os.system("docker run -d -it -p 8050:8050 scrapinghub/splash --max-timeout 3600")

splash_image_id = ""

os.system("docker ps -a| grep tingyun > temp.txt")
with open('temp.txt','r') as f:
    temp = f.read()
    try:
        splash_image_id = re.search('.{12}',temp).group().replace("/","")
    except Exception,e:
        print Exception,":",e

#print "当前的splash id是 : ",splash_image_id,"\n"

if not splash_image_id:
        status_code = os.system("docker run -it -d -p 8050:8050 --name tingyun scrapinghub/splash")
        if status_code == 0:
                print "Splash not exists , start success , and named tingyun....."
        else:
                print "Error1 , fail!!!"
else:
        status_code = os.system("docker restart %s"%splash_image_id)
        if status_code == 0:
                print "Splash exists , restart tingyun success ....."
        else:
                print "Error2 , fail!!!"

temp_file = './temp.txt'

if os.path.exists(temp_file):
        os.remove(temp_file)
        print "Delete temp_file success ....."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值