我的docker常用命令清单

来源:互联网 发布:战网更新网络出现问题 编辑:程序博客网 时间:2024/05/16 11:34


我的docker命令清单


2016-5-23




一)总体上docker的命令比较简单,但是,有些稍微复杂点的还是需要记录一下。




需要root权限,不足的时候,报错如下:

[ec2-user@ip-172-30-0-43~]$ docker ps -a


Cannotconnect to the Docker daemon. Is the docker daemon running on thishost?




1. 进入容器(exec attach命令)

先看下这两个命令在help中的说明

attach Attach to a running container


exec Run a command in a running container



1.1 docker exec -it containerID /bin/bash


先看下常用的三个 OPTIONS 的说明:

-d, --detach=false Detachedmode: run command in the background


-i, --interactive=false Keep STDINopen even if not attached


-t, --tty=false Allocate apseudo-TTY



(参数可以连写在一起,如-it等同-i -t


关于-i,-t参数




可以看出只用-i时,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令


返回值都可以正确获取。

[root@ip-172-30-0-43home]# docker exec -i myTest /bin/sh


date


MonMay 23 08:30:02 UTC 2016


cat/etc/hostname


consul-server-1


exit


[root@ip-172-30-0-43home]#



1.2 docker attach containerID


附加到一个正在运行的容器上。

可以运行多次,都会附加到容器内PID=1的进程上,共享输入输出。


所以,退出的时候,容器也会退出。


这个命令排第一,是因为不论是开发者是运维人员,都经常有需要进入容器的诉求。



2. 删除所有容器(rm命令)

docker rm$(docker ps -a -q)


这个命令分两步,

docker ps -a-q,以安静模式列出所有的容器,也就是只列出随机唯一名字(numericID

docker rm ,依次(循环)删除列表中的容器,

删除正在运行的,会报错。


docker rm -f<容器名orID> ,强制删除



3. 启动容器(run命令)

给出一个例子

docker run --name redmine -p 9003:80 -p9023:22 -d -v /var/redmine/files:/redmine/files -v /var/redmine/mysql:/var/lib/mysql sameersbn/redmine


说明:

容器名字是redmine

绑定容器内的9003端口到主机的80端口,绑定9023端口到22端口

将容器的/var/redmine/files文件或者目录映射到主机的/redmine/files

执行容器内的sameersbn/redmine



4. 容器的基本操作


docker stop<容器名orID>


docker start<容器名orID>


docker restart<容器名orID>


docker kill<容器名orID>


还有三个与暂停相关的命令pause,unpause,wait


stop Stop a running container

start Start one or more stoppedcontainers

restart Restart a container

kill Kill a running container


pause Pause all processeswithin a container

unpause Unpause all processeswithin a container

wait Block until a containerstops, then print its exit code



5. 删除所有镜像


docker rmi$(dockerimages -q)

dockerimages-q只列出了镜像的ID

dockerrmi 用于删除镜像



docker rmi$(docker images | grep none | awk '{print $3}' | sort -r)

docker images | grep none | awk '{print$3}' | sort -r只列出untaggedimages,也就是镜像名字为<None>的,取出ID,降序排列



6. 一个容器连接到另一个容器




docker run -it --name sonar -d --linkmmysql:db tpires/sonar-server


sonar容器连接到mmysql容器,并将mmysql容器重命名为db

这样,sonar容器就可以使用db的相关的环境变量了。


这样在 容器sonar内 查看 /etc/hosts文件的时候,发现增加一条记录,映射主机名到一条IP地址。

这样在容器sona内,就可以直接解析db了。



7. 镜像迁移

当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。


机器1


docker savebusybox > /home/save.tar



使用scpsave.tar拷到机器2上,然后:


docker load< /home/save.tar


save Save an image(s) to a tararchive

load Load an image from a tararchive or STDIN



8. 推拉镜像


拉取镜像


docker pull<镜像名:tag>


如:

docker pull sameersbn/redmine:latest


docker pull 172.30.0.43:5000/myhello




docker push<镜像名:tag>


如:

docker push 172.30.0.43:5000/myhello


docker push 172.30.0.43:5000/myhello:v2


docker push 172.30.0.43:5000/myhello:latest


docker push 172.30.0.43:5000/myhello


pull Pull an image or arepository from a registry

push Push an image or arepository to a registry

tag Tag an image into arepository



9. 构建自己的镜像




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


Dockerfile在当前路径:dockerbuild -t xx/gitlab .



10. 镜像操作

docker search <keywords>

docker history <镜像名>

docker commit <容器名or ID> <新镜像名>保存对容器的修改

docker build <标签> <Docker-file路径>


search Search the Docker Hub forimages

history Show the history of animage

commit Create a new image from acontainer's changes

build Build an image from aDockerfile

import Import the contents froma tarball to create a filesystem image

inspect Return low-levelinformation on a container or image



11. 容器操作(2


文件系统相关

docker diff <容器名or ID>查看容器内文件的改变

docker export -o <文件名> <容器名orID>导出文件到tar

docker cp在容器和主机之间复制文件


统计相关

docker top <容器名or ID>显示容器内进程信息

docker stats <容器名or ID>显示容器内统计信息

docker port <容器名or ID> 显示容器与主机端口映射信息

docker inspect <容器名or ID>显示容器底层细节


其他

docker logs-f <容器名or ID>查看运行日志

docker rename<容器名> <新名字>改名



diff Inspect changes on acontainer's filesystem

export Export a container'sfilesystem as a tar archive

cp Copy files/foldersbetween a container and the local filesystem

top Display the runningprocesses of a container

stats Display a live stream ofcontainer(s) resource usage statistics

port List port mappings or aspecific mapping for the CONTAINER

inspect Return low-levelinformation on a container or image

logs Fetch the logs of acontainer

rename Rename a container



12. 查看容器的root用户密码(这个没有验证)




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


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





二)docker镜像的如何命名–RegistryRepository,Image and Tag 概念与关系


本地执行docker images的结果


大致关系如下:

Registry存储镜像数据,并且提供拉取和上传镜像的功能。Registry中镜像是通过Repository来组织的,而每个Repository又包含了若干个Image

  • Registry包含一个或多个Repository

  • Repository包含一个或多个Image

  • ImageGUID表示,有一个或多个Tag与之关联


镜像一般有两种方式,一种是从官方Registry地址(DockerHub)中获取,一般格式为

<username>/<repo_name><:tag>

另外一种则是使用私有的registry地址大致如下

172.30.0.43:5000/library/myhello:latest

其中library可以省略,:latest也可以省略。


这两者之前的明确区别是私有registry,以ip地址或者hostname开始,官方registry不带ip地址。


地址中,如果tag如果不存在,会使用默认的‘DEFAULTTAG’,即latest





1 0
原创粉丝点击