文档章节

docker常用命令

加油2018
 加油2018
发布于 2014/12/31 14:18
字数 1362
阅读 121
收藏 4
  1. 查看容器的root用户密码

    docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1

    因为docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到redmine容器的root用户的密码了。

  2. 查看容器日志

    docker logs -f <容器名orID>
  3. 查看正在运行的容器

    docker ps
    docker ps -a为查看所有的容器,包括已经停止的。
  4. 删除所有容器

    docker rm $(docker ps -a -q)

    删除单个容器

    docker rm <容器名orID>
  5. 停止、启动、杀死一个容器

    docker stop <容器名orID>
    docker start <容器名orID>
    docker kill <容器名orID>
  6. 查看所有镜像

    docker images
  7. 删除所有镜像
    docker rmi $(docker images | grep none | awk '{print $3}' | sort -r)
  8. 运行一个新容器,同时为它命名、端口映射、文件夹映射。以redmine镜像为例

    docker run --name redmine -p 9003:80 -p 9023:22 -d -v /var/redmine/files:/redmine/files -v /var/redmine/mysql:/var/lib/mysql sameersbn/redmine
  9. 一个容器连接到另一个容器

    docker run -i -t --name sonar -d -link mmysql:db   tpires/sonar-server
    sonar

    容器连接到mmysql容器,并将mmysql容器重命名为db。这样,sonar容器就可以使用db的相关的环境变量了。

  10. 拉取镜像

    docker pull <镜像名:tag>

    docker pull sameersbn/redmine:latest
  11. 当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。
    机器a

    docker save busybox-1 > /home/save.tar

    使用scp将save.tar拷到机器b上,然后:

    docker load < /home/save.tar
  12. 构建自己的镜像

    docker build -t <镜像名> <Dockerfile路径>

    如Dockerfile在当前路径:

    docker build -t xx/gitlab .
  13. 重新查看container的stdout
    # 启动top命令,后台运行 $ ID=$(sudo docker run -d ubuntu /usr/bin/top -b) # 获取正在running的container的输出 $ sudo docker attach $ID
    top - 02:05:52 up 3:05, 0 users,  load average: 0.01, 0.02, 0.05 Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Mem: 373572k total, 355560k used, 18012k free, 27872k buffers
    Swap: 786428k total,        0k used, 786428k free, 221740k cached
    ^C$
    $ sudo docker stop $ID
  14. 后台运行(-d)、并暴露端口(-p)

    docker run -d -p 127.0.0.1:33301:22 centos6-ssh
  15. 从container中拷贝文件出来

    sudo docker cp 7bb0e258aefe:/etc/debian_version .

    拷贝7bb0e258aefe中的/etc/debian_version到当前目录下。
    注意:只要7bb0e258aefe没有被删除,文件命名空间就还在,可以放心的把exit状态的container的文件拷贝出来。

  16. 移除所有的容器和镜像(大扫除)

    用一行命令大扫除:

    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 5 while ! 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 5 done

    你还可以在一个 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.properties
    done
  17.  Docker网络学习笔记:http://blog.csdn.net/junjun16818/article/details/38423379

© 著作权归作者所有

共有 人打赏支持
加油2018
粉丝 150
博文 276
码字总数 243077
作品 0
海淀
架构师
Docker 三剑客之 Docker Swarm

上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service 部署单个集群服务 Docker Stack 部署多个集群服务,以及 ...

那谁爸爸
01/08
0
0
Docker系列教程23-docker-compose常用命令

原文:,转载请注明出处。 和docker命令一样,docker-compose命令也有很多选项。下面我们来详细探讨docker-compose的常用命令。 build 构建或重新构建服务。服务被构建后将会以 的形式标记,...

EACDY
05/16
0
0
Docker | 第三章:Docker常用命令

前言 上一章节,简单介绍了在下的的安装过程,以及运行了一个官方提供的镜像运行了第一个。就像上一章中,验证是否安装成功,我们执行的是命令。运行镜像时,执行的是。所以学习一个工具,主...

oKong
08/01
0
0
Docker MongoDB 部署

MongoDB 是一款较为常用的NOSQL 数据库,结合 Docker 使用,能实现轻松配置部署、迁移,本文以下为简要介绍如何在 Docker 中部署并使用 MongoDB。下文主要分为几个部分,内容如下: MongoDB ...

speculatecat
04/06
0
0
常用docker命令,及一些坑

常用docker命令,及一些坑 常用命令 查看容器的root用户密码 docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1 因为docker容器启动时的root用户的密码是随机分配的。所以,通过这...

清风徐不来
2014/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL autocommit探究

-- sessionA:tx_isolation=REPEATABLE-READmysql> select connection_id();+-----------------+| connection_id() |+-----------------+| 28 |+-----------------+......

安小乐
刚刚
0
0
c++多线程锁 Mutex  自动判断死锁

c++多线程锁可以使用absl::Mutex std::mutex这两种,下面是demo代码。 使用absl:Mutex的时候打印: [mutex.cc : 1338] RAW: Cycle: [mutex.cc : 1352] RAW: mutex@0x683b68 stack: @ 0x43856......

青黑
19分钟前
0
0
Blockathon2018(成都站)比赛落幕,留给我们这些区块链应用思考

9月14日,HiBlock区块链社区主办的第二届Blockathon在成都菁融国际广场成功举行,30名参赛者分为5支队伍在48小时内完成区块链项目的创意、开发及路演,经过紧张的开发及现场评选,最终币托(...

HiBlock
24分钟前
0
0
71.告警系统主脚本 配置文件 监控项目

20.20 告警系统主脚本(main.sh) 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本(main.sh): ~1.约定:把以后所有的shell脚本放在/usr/local/sbin下,也方便我们查...

王鑫linux
31分钟前
0
0
装饰者模式

装饰者模式 Q:何为装饰模式? ()地给一个对象添加一些额外的(),并且()时,并不影响原对象。扩展功能来说,装饰器模式相比生成子类更为灵活。 Q:使用场景? 1.想要在不影响其他对象的情况下...

阿元
51分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部