CloudDockerKubernetes

image.png
image.png

https://segmentfault.com/a/1190000002609286
删除所有未运行 Docker 容器
docker rm $(docker ps -a -q)
删除所有 Docker 镜像
删除所有未打 tag 的镜像

docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')
删除所有镜像

docker rmi $(docker images -q)
根据格式删除所有镜像

docker rm $(docker ps -qf status=exited)
移除所有的容器和镜像(大扫除)
用一行命令大扫除:

docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)
注:shell 中的 $() 和 `` 类似,会先执行这里面的内容,上面的脚本会出现如下 docker kill "pids" ; docker kill 在 docker 中用于停止容器,docker rm 删除容器, docker rmi 删除镜像
当没有运行的容器或者是根本没有容器的时候,这只会提示一个警告信息。当你想尝试的时候,这就是个非常好的单行命令。如果你仅仅想删除所有的容器,你可以运行如下命令:

docker kill $(docker ps -q) ; docker rm $(docker ps -a -q)
退出时删除容器
如果你仅仅想在一个容器中快速的运行一个命令,然后退出,并且不用担心容器状态,把 --rm 参数加入 run 命令后面,这将结束很多你保存了的容器,并且清理它们。

示例:docker run --rm -i -t busybox /bin/bash
不在 Shell 上运行命令
如果你使用需要Shell 的扩展项的 docker run 命令处理某些事情,比如 docker run --rm busybox ls '/var/log/', 这个命令将失败。这个失败的原因我花了工夫才弄明白。这个陷阱在这里:你原来没有 Shell , 而 ``` 是 Shell 的扩展项,因此你需要一个能使用的 Shell 。正确方法为:

docker run --rm busybox sh -c 'ls /var/log/*'
Boot2Docker 和 LapTops 处理 DNS 问题的方法
由于这个原因, Boot2Docker 会占用 DNS 服务器很长一段时间。当你在尝试创建镜像的时候,可能会得到离谱的错误。如果你在 Ubuntu 或者 CentOS 上看到下面的提示:

cannot lookup archive.ubuntu.com
聪明的做法是停止,然后启动 boot2docker 。

boot2docker-cli down && boot2docker-cli up
这样问题就解决了
Volumes 解决 docker logs
和 docker copy
问题
如果你想在一个容器中监控另一个容器中的日志文件和文件的使用,你可以看看 volumes ,例如,检查 tomcat 是否启动:
tomcat_id=$(docker run -d -v /var/log/tomcat6 wouterd/tomcat6)# Give Tomcat some time to wake up...sleep 5while ! docker run --rm --volumes-from ${tomcat_id} busybox /bin/sh -c "grep -i -q 'INFO: Server startup in' /var/log/tomcat6/catalina*.log" ; do echo -n "." sleep 5done

你还可以在一个 Dockerfile
中指定 volumes ,这个在我前面的博客文章中结合 Docker 连载了。\

Docker Inspect 结合 Go Templates 的好处
命令 docker inspect
允许使用 Go Templates 来格式化inspect 命令的输出信息如果你擅长这个,你能获取很多 docker 容器命令行的脚本输出信息。这是一个获取正在运行的容器 IP 的示例:
container_ip=$(docker inspect --format '{{.NetworkSettings.IPAddress}}' ${container_id})

这里有一个笨的技巧,用于得到匹配所有暴露(exposed)的端口 host:port ,并且把他们输入一个 java properties 文件:
sut_ip=${BOOT_2_DOCKER_HOST_IP}template='{{ range $key, $value := .NetworkSettings.Ports }}{{ $key }}='"${BOOT_2_DOCKER_HOST_IP}:"'{{ (index $value 0).HostPort }} {{ end }}'tomcat_host_port=$(docker inspect --format="${template}" ${container_id})for line in ${tomcat_host_port} ; do echo "${line}" >> ${work_dir}/docker_container_hosts.propertiesdone

Docker基础命令
查看docker版本信息
$ docker --version

查看docker安装信息
$ docker info

查看本机Docker中存在哪些镜像
$ docker images

检索images
$ docker search images

下行images
$ docker pull images

显示一个镜像的历史操作
$ docker history images

列出一个容器里面被改变的文件或者目录
$ docker diff container

列出当前所有正在运行的容器
$ docker ps

列出所有的容器
$ docker ps -a

列出最近一次启动的容器
$ docker ps -f

查看容器的相关信息
$ docker inspect $CONTAINER_ID

显示容器IP地址和端口号,如果输出是空的说明没有配置IP地址(不同的Docker容器可以通过此IP地址互相访问)
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID

通过容器生成新的镜像
$ docker commit -m "Added ssh from centos" -a "xiaoming" 4a4de4cf223d1 xiaoming/centos:v1

参数:
-m参数用来来指定提交的说明信息;
-a可以指定用户信息的;
4a4de4cf223d1代表的时容器的id;
birdben/ubuntu:v1指定目标镜像的用户名、仓库名和 tag 信息。

构建一个容器
$ docker build -t="centos:v1" .

参数:
-t为构建的镜像制定一个标签,便于记忆/索引等
. 指定Dockerfile文件在当前目录下,也可以替换为一个具体的 Dockerfile 的路径。

在docker中运行centos镜像
$ docker run <相关参数> <镜像 ID> <初始命令>

守护模式启动
$ docker run -it centos:v1

指定端口号启动
$ docker run -p 80:80 centos:v1

指定配置启动
$ sudo docker run -d -p 10.211.55.4:9999:22 birdben/ubuntu:v1 '/usr/sbin/sshd' -D

参数:
-d:表示以“守护模式”执行,日志不会出现在输出终端上。
-i:表示以“交互模式”运行容器,-i 则让容器的标准输入保持打开
-t:表示容器启动后会进入其命令行,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>,-v 标记来创建一个数据卷并挂载到容器里。在一次 run 中多次使用可以挂载多个数据卷。
-p:表示宿主机与容器的端口映射,此时将容器内部的 22 端口映射为宿主机的 9999 端口,这样就向外界暴露了 9999 端口,可通过 Docker 网桥来访问容器内部的 22 端口了。
注意:这里使用的是宿主机的 IP 地址:10.211.55.4,与对外暴露的端口号 9999,它映射容器内部的端口号 22。ssh外部需要访问:ssh root@10.211.55.4 -p 9999
不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”

start 启动容器
$ docker start 117843ade696117843ade696

stop 停止正在运行的容器
$ docker stop 117843ade696117843ade696

restart 重启容器
$ docker restart 117843ade696117843ade696

rm 删除容器
$ docker rm 117843ade696117843ade696

rmi 删除镜像
$ docker rmi ed9c93747fe1Deleted

登录Docker Hub中心
$ docker login

发布上传image(push)
$ docker push xiaoming/centos:v1

本文只是一个简单的使用docker来提供一些如数据库,redis等公共服务的搭建过程记录.docker-compose.yml的详细配置可以参考官方文档或这篇文章.由于工作环境是在windows下,docker对windows的支持很不好,如果要在windows下安装docker请确保,系统达到官方要求,这里记录的是使用虚拟机的情况下搭建.
安装docker
官方文档中详细说明了不同系统的安装方法,这里以Centos为例.
确保linux系统满足docker要求( 64-bit version of CentOS 7.3,貌似内核也需要3.x以上的可以通过uname -a
查看)

升级/安装 yum-utils $ sudo yum install -y yum-util

设置仓库$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

将软件包信息缓存 sudo yum makecache fast

安装docker sudo yum -y install docker-ce

启动docker sudo systemctl start docker

测试是否安装成功 sudo docker run hello-world

开机启动dockersudo chkconfig docker on

安装docker-compose
这里使用python-pip的方式来安装
安装python-pipyum -y install epel-release yum -y install python-pip

安装docker-composepip install docker-compose

测试是否安装成功docker-compose version

编写简单docker-compose.yml例子
version: "2.0"services: redis: image: redis:3.2 restart: always ports: - "6379:6379" mongo: image: mongo:3.4.1 restart: always ports: - "27017:27017"

安装启动镜像
在docker-compose.yml所在根目录下执行docker-compose up

统计某人的代码提交量,包括增加,删除:
git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -
仓库提交者排名前 5(如果看全部,去掉 head 管道即可):
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
仓库提交者(邮箱)排名前 5:这个统计可能不会太准,因为很多人有不同的邮箱,但会使用相同的名字
git log --pretty=format:%ae | gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }' | sort -u -n -r | head -n 5
贡献者统计:
git log --pretty='%aN' | sort -u | wc -l
提交数统计:
git log --oneline | wc -l
添加或修改的代码行数:
git log --stat|perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,454评论 0 120
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,370评论 0 27
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,487评论 15 147
  • 0x01 核心概念 Docker镜像类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统...
    闲云逸心阅读 4,676评论 0 9
  • 生活真的很辛苦,我尽我所能的活着,即使失败了,也只是一无所有。 今天是周四,上午上了四节数学课...
    树羊阅读 130评论 0 0