常用docker命令,及一些坑
常用命令
1. 查看容器的root用户密码
dockerlogs容器名orID21|grep'^User:'|tail-n1
因为docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到redmine容器的root用户的密码了。
2. 查看容器日志
dockerlogs-f容器名orID
3. 查看正在运行的容器
4.dockerps
dockerps-a为查看所有的容器,包括已经停止的。
5. 删除所有容器
dockerrm$(dockerps-a-q)
删除单个容器
dockerrm容器名orID
6. 停止、启动、杀死一个容器
7.dockerstop容器名orID
8.dockerstart容器名orID
dockerkill容器名orID
9. 查看所有镜像
dockerimages
10. 删除所有镜像
dockerrmi$(dockerimages|grepnone|awk'{print$3}'|sort-r)
11. 运行一个新容器,同时为它命名、端口映射、文件夹映射。以redmine镜像为例
dockerrun--nameredmine-p9003:80-p9023:22-d-v/var/redmine/files:/redmine/files-v/var/redmine/mysql:/var/lib/mysqlsameersbn/redmine
12. 一个容器连接到另一个容器
13.dockerrun-i-t--namesonar-d-linkmmysql:dbtpires/sonar-server
sonar
容器连接到mmysql容器,并将mmysql容器重命名为db。这样,sonar容器就可以使用db的相关的环境变量了。
14. 拉取镜像
dockerpull镜像名:tag
如
dockerpullsameersbn/redmine:latest
15. 当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。
机器a
dockersavebusybox-1/home/save.tar
使用scp将save.tar拷到机器b上,然后:
dockerload/home/save.tar
16. 构建自己的镜像
dockerbuild-t镜像名Dockerfile路径
如Dockerfile在当前路径:
dockerbuild-txx/gitlab.
17. 重新查看container的stdout
18.#启动top命令,后台运行$ID=$(sudodockerrun-dubuntu/usr/bin/top-b)#获取正在running的container的输出$sudodockerattach$ID
19.top-02:05:52up3:05,0users,loadaverage:0.01,0.02,0.05Tasks:1total,1running,0sleeping,0stopped,0zombie
20.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
21.Mem:373572ktotal,355560kused,18012kfree,27872kbuffers
22.Swap:786428ktotal,0kused,786428kfree,221740kcached
23.^C$
$sudodockerstop$ID
24. 后台运行(-d)、并暴露端口(-p)
dockerrun-d-p127.0.0.1:33301:22centos6-ssh
25. 从container中拷贝文件出来
sudodockercp7bb0e258aefe:/etc/debian_version.
拷贝7bb0e258aefe中的/etc/debian_version到当前目录下。注意
:只要7bb0e258aefe没有被删除,文件命名空间就还在,可以放心的把exit状态的container的文件拷贝出来
坑
1. ubuntu14下的docker是没有service服务。去除每次sudo运行docker命令,需要添加组:
#Addthedockergroupifitdoesn'talreadyexist.$sudogroupadddocker#改完后需要重新登陆用户$sudogpasswd-a${USER}docker
2. ubuntu14的febootstrap没有-i命令
3. Dockerfile中的EXPOSE、docker run --expose、docker run -p之间的区别
Dockerfile的EXPOSE相当于docker run --expose,提供container之间的端口访问。docker run -p允许container外部主机访问container的端口