docker常用命令

docker镜像:

docker的镜像概念类似虚拟机的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
docker镜像实际上是由一层一层的系统文件组成,这种层级的文件系统被称为UnionFS( Union file system 统一文件系统),镜像可以基于dockerfile构建,dockerfile是一个描述文件,里面包含了若干条密令,每条命令都会对基础文件系统创建新的层次结构。
docker镜像通过镜像ID进行识别。镜像ID是一个64字符的十六进制的字符串,但是通常我们不会使用镜像ID来引用镜像,而是使用镜像名来引用。

docker容器:

docker容器是由docker镜像创建的运行实例。每个容器间是相互隔离的,可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
docker利用容器来运行应用:通过镜像创建容器就是在镜像上加一个可读写的层, 这个可写层有运行在CPU上的进程,而且有两个不同的状态:运行态(Running)和退出态(Exited),镜像是静态的,每一层都只是可读的,而容器是动态的里面运行着我们指定的应用,容器里面的应用会新建一个文件,修改一个目录,这些操作所带来的改变并不会作用到镜像里面,因为镜像只是可读的。
docker容器通过64字符的十六进制的字符串来定义ID,它是容器的唯一标识符。容器之间的交互是依靠容器ID识别的,由于容器ID的字符太长,通常只需键入容器ID的前4个字符即可, 还可以使用容器名。
搜索镜像:

 docker search [--automated][--no-truc][-s count] image

image为镜像名称(镜像名称如:centos、nginx、redis)
–automated:只显示自动化构建的镜像
–no-truc:显示时信息不截断
-s:控制最低星级

拉取镜像:

 docker pull 

列出本地镜像:

 docker images

• REPOSITORY:表示镜像的仓库源
• TAG:镜像的标签
• IMAGE ID:镜像ID
• CREATED:镜像创建时间
• SIZE:镜像大小

查看镜像详细信息:

docker inspect REPOSITORY:TAG/IMAGE ID

删除镜像:

docker rmi image_name/image_id
-f:force强制删除
注:如果镜像被容器占用了,需要先删除容器,才能删除镜像

删除所有镜像:

docker rmi $(docker images -q)

更新镜像:
(在完成操作之后,输入 exit命令来退出这个容器)
假设此时ID为e228edb01160的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。

docker commit -m="update" -a="third" e228edb01160 third/centos:v2

各个参数说明:
• -m:提交的描述信息
• -a:指定镜像作者
• e218edb10161:容器ID
• third/centos:v2:指定要创建的目标镜像名

设置镜像标签:

docker tag 860c279d2fec third/centos:dav

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
镜像导入导出:
save命令

docker save [options] images [images...] 

示例 :
docker save -o nginx.tar nginx:v1 或 docker save > nginx.tar nginx:v1
其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:v1是源镜像名(name:tag)
load命令

docker load [options] 

示例
docker load -i nginx.tar 或 docker load < nginx.tar
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
export命令

docker export [options] container 

示例
docker export -o nginx-one.tar nginx-one
其中-o表示输出到文件,nginx-one.tar为目标文件,nginx-one是源容器名(name)
import命令

docker import [options] file|URL|- [REPOSITORY[:TAG]] 

示例
docker import nginx-one.tar nginx:v2 或
cat nginx-one.tar | docker import - nginx:v2

查看当前运行的容器:

 docker ps

-a 查看所有的容器, 包括停止的:
-l :查看最新创建的容器,只列出最后创建的
-n=2:-n=x选项,会列出最后创建的x个容器

CONTAINER ID:容器的唯一表示ID。
IMAGE:创建容器时使用的镜像。
COMMAND:容器最后运行的命令。
CREATED:创建容器的时间。
STATUS:容器状态。
PORTS:对外开放的端口。
NAMES:容器名。可以和容器ID一样唯一标识容器,同一台宿主机上不允许有同名容器存在,否则会冲突。

启动一个容器:
docker run 启动一个容器并执行命令(容器是本机host的一个进程,如果进程没有后续操作,那么状态将是exited)

交互型容器:运行在前台,容器中使用exit命令或者调用docker stop、docker kill命令,容器停止

创建一个名称为mycentos的container,并执行/bin/bash:
docker run -i -t -–name=mycentos centos /bin/bash

•	i:打开容器的标准输入。
•	t:告诉docker为容器建立一个命令行终端。
•	name:指定容器名称,可以不填(随机),建议根据具体使用功能命名,便于管理。
•	centos:告诉我们使用哪个 镜像来启动容器。
•	/bin/bash:告诉docker要在容器里面执行此命令

后台型容器:运行在后台,创建后与终端无关,只有调用docker stop、docker kill命令才能使容器停止。

docker run -–name=mycentos -d centos /bin/bash -c ”while true;do echo hello;sleep 1;done”

d:使用-d参数,使容器在后台运行。
c: 通过-c可以调整容器的CPU优先级。默认情况下,所有的容器拥有相同的CPU优先级和CPU调度周期,但你可以通过Docker来通知内核给予某个或某几个容器更多的CPU计算周期。比如,我们使用-c或者–cpu-shares =0启动了C0、C1、C2三个容器,使用-c/–cpu-shares=512启动了C3容器。这时,C0、C1、C2可以100%的使用CPU资源(1024),但C3只能使用50%的CPU资源(512)。如果这个主机的操作系统是时序调度类型的,每个CPU时间片是100微秒,那么C0、C1、C2将完全使用掉这100微秒,而C3只能使用50微秒。
-c后的命令是循环,从而保持容器的运行。

启动容器:

 docker start mycentos

–restart(自动重启):默认情况下容器是不重启的,–restart标志会检查容器的退出码来决定容器是否重启容器。
• --restart=always:不管容器的返回码是什么,都会重启容器。
• --restart=on-failure:5:当容器的返回值是非0时才会重启容器。5是可选的重启次数。

关闭容器:

 docker stop mycentos 

杀死所有正在运行的容器

docker kill $(docker ps -a -q)

删除容器:

docker rm mycentos 

上面的操作都可以使用容器的唯一标识(容器名称或者容器id)
-f:force强制删除

删除所有已经停止的容器

docker rm $(docker ps -a -q)

docker exec表示在一个运行的container中执行命令:
例:

docker exec -it 292cf95a7853 /ls
docker exec -it 292cf95a7853 /bin/bash

nsenter命令也可以完全进入到container中:
如果没有这个命令需要进行安装:
yum install util-linux
1、nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID:
docker inspect -f {{.State.Pid}} 292cf95a7853
27515
2、使用nsenter连接:
[root@docker ~]# nsenter --target 27515 --net --ipc --pid --mount --uts
[root@292cf95a7853 /]# ls
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
关于什么是nsenter请参考如下文章:
https://github.com/jpetazzo/nsenter

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值