微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CentOS系统下docker的基本命令

1、基本信息查看

docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等


[root@localhost/]#dockerversion
Clientversion:1.0.0
ClientAPIversion:1.12
Goversion(client):go1.2.2
Gitcommit(client):63fe64c/1.0.0
Serverversion:1.0.0
ServerAPIversion:1.12
Goversion(server):go1.2.2
Gitcommit(server):63fe64c/1.0.0

docker info :查看系统(docker)层面信息,包括管理的images,containers数等
[root@localhost/]#dockerinfo
Containers:16
Images:40
StorageDriver:devicemapper
PoolName:docker-253:0-1183580-pool
Datafile:/var/lib/docker/devicemapper/devicemapper/data
Metadatafile:/var/lib/docker/devicemapper/devicemapper/Metadata
DataSpaceUsed:2180.4Mb
DataSpacetotal:102400.0Mb
MetadataSpaceUsed:3.4Mb
MetadataSpacetotal:2048.0Mb
ExecutionDriver:lxc-0.9.0
KernelVersion:2.6.32-431.el6.x86_64

2、 镜像的获取与容器的使用

镜像可以看作是包含有某些软件的容器系统,比如ubuntu就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,该镜像包含基本的ubuntu系统。再比如,hipache是一个官方的镜像容器,运行后可以支持http和websocket的代理服务,而这个镜像本身又基于ubuntu。

搜索镜像
docker search <image>:在docker index中搜索image


[root@localhost/]#dockersearchubuntu12.10
NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
mirolin/ubuntu12.100
marcgibbons/ubuntu12.100
mirolin/ubuntu12.10_redis0
chug/ubuntu12.10x32UbuntuQuantalQuetzal12.1032bitbasei...0
chug/ubuntu12.10x64UbuntuQuantalQuetzal12.1064bitbasei...0

下载镜像

docker pull <image> :从docker registry server 中下拉image


[root@localhost/]#dockerpullchug/ubuntu12.10x64

查看镜像

docker images: 列出images

docker images -a :列出所有的images(包含历史)

docker images --tree:显示镜像的所有层(layer)

docker rmi <image ID>: 删除一个或多个image


[root@localhost/]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE
chug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB
[root@localhost/]#dockerimages-a
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE
chug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB
<none><none>31edfed3bb884monthsago175.8MB
[root@localhost/]#dockerimages--tree
Warning:'--tree'isdeprecated,itwillberemovedsoon.Seeusage.
└─31edfed3bb88VirtualSize:175.8MB
└─0b96c14dafcdVirtualSize:270.3MBTags:chug/ubuntu12.10x64:latest
[root@localhost/]#dockerrmi<imageID>....

使用镜像创建容器


[root@localhost/]#dockerrunchug/ubuntu12.10x64/bin/echohelloworld
helloworld

交互式运行
[root@localhost/]#dockerrun-i-tchug/ubuntu12.10x64/bin/bash
root@2161509ff65e:/#

3、 查看容器

docker ps :列出当前所有正在运行的container
docker ps -l :列出最近一次启动的container
docker ps -a :列出所有的container(包含历史,即运行过的container)
docker ps -q :列出最近一次运行的container ID


[root@localhost/]#dockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
ccf3de663dc9chug/ubuntu12.10x64:latest/bin/bash22hoursagoUp22houRSSharp_hypatia
[root@localhost/]#dockerps-l
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
f145f184647bchug/ubuntu12.10x64:latest/bin/bash6secondsagoExited(0)3secondsagocompassionate_galileo
[root@localhost/]#dockerps-a
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
f145f184647bchug/ubuntu12.10x64:latest/bin/bash30secondsagoExited(0)26secondsagocompassionate_galileo
f4624b42fe7echug/ubuntu12.10x64:latest/bin/bash2minutesagoExited(0)2minutesagosharp_wilson
ccf3de663dc9chug/ubuntu12.10x64:latest/bin/bash22hoursagoUp22houRSSharp_hypatia
9cbaa79b9703chug/ubuntu12.10x64:latest/bin/bash22hoursagoExited(127)36minutesagoberserk_mcclintock
2161509ff65echug/ubuntu12.10x64:latest/bin/bash22hoursagoExited(0)22hoursagobackstabbing_mclean
[root@localhost/]#dockerps-q
ccf3de663dc9

再次启动容器

docker start/stop/restart <container> :开启/停止/重启container
docker start [container_id] :再次运行某个container (包括历史container)
docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)
docker start -i <container> :启动一个container并进入交互模式(相当于先start,在attach)

docker run -i -t <image> /bin/bash :使用image创建container并进入交互模式,login shell是/bin/bash
docker run -i -t -p <host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。
注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。

删除容器

docker rm <container...> :删除一个或多个container
docker rm `docker ps -a -q` :删除所有的container
docker ps -a -q | xargs docker rm :同上,删除所有的container

4 持久化容器与镜像

4.1 通过容器生成新的镜像

运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用docker commit <container-id> <image-name>命令可以把一个正在运行的容器变成一个新的镜像。

docker commit <container> [repo:tag] 将一个container固化为一个新的image,后面的repo:tag可选。


[root@localhost/]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE
chug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB
[root@localhost/]#dockercommitd0fd23b8d3acchug/ubuntu12.10x64_2
daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b
[root@localhost/]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE
chug/ubuntu12.10x64_2latestdaa11948e23d6secondsago270.3MB
chug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB

4.2 持久化容器

export命令用于持久化容器

docker export <CONTAINER ID> > /tmp/export.tar

4.3 持久化镜像

Save命令用于持久化镜像

docker save 镜像ID > /tmp/save.tar

4.4 导入持久化container

删除container2161509ff65e

导入export.tar文件


[root@localhost/]#cat/tmp/export.tar|dockerimport-export:latest
af19a55ff0745fb0a68655392d6d7653c29460d22d916814208bbb9626183aaa
[root@localhost/]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE
exportlatestaf19a55ff07434secondsago270.3MB
chug/ubuntu12.10x64_2latestdaa11948e23d20minutesago270.3MB
chug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB

4.5 导入持久化image

删除imagedaa11948e23d

导入save.tar文件


[root@localhost/]#dockerload</tmp/save.tar


对image打tag
[root@localhost/]#dockertagdaa11948e23dload:tag

4.6 export-import与save-load的区别
导出后再导入(export-import)的镜像会丢失所有的历史,而保存后再加载(save-load)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚。(可以执行docker tag <LAYER ID> <IMAGE NAME>来回滚之前的层)。

4.7 一些其它命令

docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
docker inspect $CONTAINER_ID #docker inspect <image|container> 查看image或container的底层信息

docker build <path> 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image
docker build -t repo[:tag] 同上,可以指定repo和可选的tag
docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到

5 一些使用技巧

5.1 docker文件存放目录

Docker实际上把所有东西都放到/var/lib/docker路径下了。


[root@localhostdocker]#ls-F
containers/devicemapper/execdriver/graph/init/linkgraph.dbrepositories-devicemappervolumes/

containers目录当然就是存放容器(container)了,graph目录存放镜像,文件层(file system layer)存放在graph/imageid/layer路径下,这样我们就可以看看文件层里到底有哪些东西,利用这种层级结构可以清楚的看到文件层是如何一层一层叠加起来的。

5.2 查看root密码

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

原文地址:https://www.jb51.cc/centos/380689.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。