docker 常见命令

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]

容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]

容器rootfs命令 — docker [commit|cp|diff]

镜像仓库 — docker [login|pull|push|search]

本地镜像管理 — docker [images|rmi|tag|build|history|save|import]

其他命令 — docker [info|version]

1、容器

1.1、docker run


使用image创建container并执行相应命令,然后停止

# docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-d : 后台运行容器,并返回容器ID;
-i : 以交互模式运行容器,通常与 -t 同时使用;
-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p : 端口映射,格式为:主机(宿主)端口:容器端口
--name : 为容器指定一个名称;

-a stdin : 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
--dns 8.8.8.8 : 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com : 指定容器DNS搜索域名,默认和宿主一致;
-h "mars" : 指定容器的hostname;
-e username="ritchie" : 设置环境变量;
--env-file=[] : 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge" : 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[] : 添加链接到另一个容器;
--expose=[] : 开放一个端口或一组端口;

端口映射 -p

-p <主机端口:容器端口>

-p 8080:8080 这个即是默认情况下,绑定主机所有网卡(0.0.0.0)的11211端口到容器的11211端口上
-p 127.0.0.1:8080:8080 只绑定localhost这个接口的11211端口

目录映射 -v

-v <主机目录:容器目录>

-v /opt/docker:/var/docker

 

1.2、查看容器 docker ps

# docker ps // 正在运行的
# docker ps -a // 查看所有,包括已经停止
# docker ps -l // 显示最新启动的一个容器

1.3、查看容器日志 docker logs

# docker logs <id/name>

1.4、连接到容器 docker attach

# docker attach --sig-proxy=false $CONTAINER_ID

1.5、删除容器 docker rm

docker rm <container_id/contaner_name>

 

2、镜像

2.1、查看镜像 docker images

docker images [OPTIONS] [REPOSITORY[:TAG]]

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。




REPOSITORY:来判断这个镜像是来自哪个服务器,如果没有 / 则表示官方镜像,例如:
username/repos_name表示Github的个人公共库
regsistory.example.com:5000/repos_name则表示的是私服。

2.2、拉取镜像 docker pull

# docker pull centos

从v.13开始,只会下载tag为latest的镜像

也可以明确指定具体的镜像TAG:
# docker pull centos:centos6
# docker pull dl.dockerpool.com:5000/mongo:latest

2.3、推送镜像 docker push

# docker push seanlook/mongo
# docker push registry.tp-link.net:5000/mongo:2014-10-27

registry.tp-link.net也可以写成IP,172.29.88.222。
在repository不存在的情况下,命令行下push上去的会为我们创建为私有库,然而通过浏览器创建的默认为公共库。

2.4、容器固化为镜像 docker commit

docker commit <container> [repo:tag]

2.5、删除镜像 docker rmi

docker rmi <image_id/image_name>

2.6、镜像导出

docker save 332d3131884b>jmeter-slave.rar

docker save -o redis.tar redis:5.0.2