docker常用命令

Docker Engine是一种开源容器化技术,用于构建和容器化您的应用程序。Docker Engine通过以下方式充当客户端-服务器应用程序:

  1. 具有长时间运行的守护进程的服务器dockerd。
  2. API,用于指定程序可以用来与Docker守护程序进行对话和指示的接口。
  3. 命令行界面(CLI)客户端docker。

CLI使用Docker API通过脚本或直接CLI命令控制或与Docker守护程序进行交互。许多其他Docker应用程序都使用基础API和CLI。守护程序创建和管理Docker对象,例如映像,容器,网络和卷。

docker常用命令

中文版

英文版

实例:

帮助命令:

查看 docker 版本信息:

$ docker version

查看 docker 当前容器信息:

$ docker info

帮助信息:

$ docker –help

镜像命令:

查看当前主机存在的镜像:

$ docker images

列出本地所有镜像(含中间映像层):

$ docker images -a

只显示镜像ID:

$ docker images -q

只列出所有镜像的ID:

$docker images -qa

显示镜像的摘要信息:

$ docker images –digests

显示完整的镜像信息:

$ docker images –digests –no-trunc

搜索镜像

$ docker search [关键词]

搜索点赞大于30的镜像

$ docker search -s 30 [关键词]

下载镜像/拉取镜像:

$ docker pull [镜像名称][:版本号/lasest]

删除一个镜像

$ docker rmi [镜像名称][:版本号/lasest]

强制删除一个镜像

$ docker rmi -f [镜像名称][:版本号/lasest]

删除多个镜像

$ docker rmi-f [镜像名称1][:版本号/lasest] [镜像名称2][:版本号/lasest] [镜像名称N][:版本号/lasest]

删除本地全部镜像

$ docker rmi -f $(docker images -q)

$ docker rmi -f $(docker images -qa)

清除Docker缓存文件(下载/构建镜像时会有缓存):

$ docker system prune –volumes

容器命令:

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

OPTIONS:

–name=”容器新名称”:为容器指定一个名称;

-d:后台运行容器,并返回容器ID,也即启动守护式容器;

-i:以交互模式运行容器,通常与-t同时使用;

-t:为容器重新分配一个伪输入终端,通常与-i同时使用;

-P:随机商品映射;

-p:指定端口映射,有以下四种格式:

ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

containerPort

新建并启动一个交互性的容器:

$ docker run -it [镜像ID]

为新建的容器起一个别名:

$ docker run -it –name [容器别名] [镜像ID]

列出当前所有正在运行的容器:

$ docker ps

OPTIONS:

-a:列出所有正在运行和运行过的容器

-l:列出最近创建的容器

-n:显示最近创建的n个容器

-q:静默模式,只显示窗口编号

–no-trunc:不截断输出

列出所有正在运行和运行过的容器

$ docker ps -a

列出最近一个创建(打开的)的容器:

$ docker ps -l

列出最近8个创建(打开的)的容器:

$ docker ps -l -n 8

显示最近创建的n个容器:

$ docker ps -n 2

静默模式,只显示窗口编号:

$ docker ps -ql

退出出容器:

$ exit

退出容器,但容器继续运行:

Ctrl+P+Q

关闭所有正在运行的容器

软停:

$ docker stop [容器ID]

硬停(相当于直接断电):

$ docker kill [容器ID]

进入一个已运行容器的控制台:

 

在宿主机直接操作 docker 实例:

 

把容器内的数据拷贝到宿主机:

 

启动容器,前台运行:

 

启动容器,后台运行:

 

提交容器副本使之成为一个新镜像。当拉取的远程镜像自己修改过,而且准备以后一直使用自己修改后的镜像去部署项目,那么就使用到这个命令了。

$ sudo docker commit -a=”[作者]” -m=”[描述]” [一个正在运行着的容器ID] [新容器副本]:[自定义版本号]

删除所有容器/删除全部容器:

在在Windows系统中,cmd窗口下使用命令(docker rm $(docker ps -aq) )时,碰到个问题:

unknown shorthand flag: ‘a’ in -a

但是,如果单独使用 docker ps -aq ,这是没有问题的。

后来,无意间使用了一下PowerShell 窗口,成功执行了删除全部容器的命令,不知所以然……

$ sudo docker rm $(sudo docker ps -aq)

 

Docker数据卷容器:

数据共享和持久化保存,挂载,宿主机与容器的数据接口。

相当于U盘,也可以理解为是U盘插到电脑上,这样就可以数据共享传送

实现方法:1.直接使用命令添加,2.通过DockerFile文件添加。

使用命令添加数据卷:

$ sudo docker run -it -v [宿主机绝对路径]:[容器内绝对路径] [镜像名称]

查看数据是否挂载成功,以JSON格式输出

$ sudo docker inspect [ID]

上面信息有删减。

容器卷带权限,禁止容器内修改共享文件,在对接时加上“冒号ro”,容器只读

$ sudo docker run -it -v /myDataApi:/dataApi:ro rocket.chat

数据卷容器:

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

可以理解为数据U盘上挂载数据U盘。

实例一:

启动父容器 dc01:

dc02 继承 dc01:

$ dudo docker -it –name dc02 –volumes-from dc01 mrdede/centos

dc03 继承 dc01:

$ dudo docker -it –name dc03 –volumes-from dc01 mrdede/centos

说明(试验结果):

  1. 因为dc01中存在数据卷 /dataVolumeContainer,所以 dc02 dc03 继承后,也存在数据卷 /dataVolumeContainer。
  2. 无论在 dc01 / dc02 / dc03 哪个容器添加文件,都会实现在其它容器中同步共享。
  3. 当删除 dc01 这个父容器后,dc02 / dc03 数据卷中的文件依然存在,并且也能达到 dc02 / dc03数据卷的共享。
  4. 假如再添加容器 dc04,继承dc03,则 dc02 / dc03 / dc04 容器的数据卷依然共享。
  5. 假如删除dc03,则dc02 和dc04容器的数据卷依然共享。

结论:

只要是源于同一祖先的继承,无论是继承了祖先,还是继承了祖先的某一后代,即便是出现了断代(如dc04继承了dc03,但后来dc03被删除或关闭),它们的数据卷都是共享的。

容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

通过DockerFile文件添加数据卷:

Dockerfile 命令分组:

BUILD BOTH RUN
FROM WORKDIR CMD
MAINTAINER USER ENV
COPY EXPOSE
ADD VOLUME
RUN ENTRYPOINT
ONBUILD
.dockerignore

DockerFile实例一:

文件DockerFile

进入上面DockerFile文件所在目录,执行如下命令(带命令空间的镜像名称mrdede/centos,注意命令最后有一个点“.”):

$ sudo docker build -f ./DockerFile -t mrdede/centos .

注:

如果Docker使用命令挂载主机目录Docker访问出现cannot open directory .: Permission denied 报错,

解决办法:在挂载目录后多加一个 –privileged=true 参数即可。

如:

$ sudo docker run -it -v [宿主机绝对路径]:[容器内绝对路径] –privileged=true [镜像名称]

DockerFile实例二:

文件DockerFile2

终端执行命令:

 

注一:

在执行上面命令后,

报错 – “docker build” requires exactly 1 argument.:

原因:是因为少输入了最后那一个点“.”。

解决办法:加上最后那个点就好了。

注二:

当前执行构建时,可能会因为未知的错误被中断,

我所说的未知并非真正的未知,

只是因为第一次执行会报错中断,

第二次执行就正常构建成功了。

所以,大家在构建不成功时,就多跑两遍命令试试。

 

创建并进入容器:

> docker run -it mycentos:1.3

退出到宿主机,查看mycentos:1.3镜像

> docker images mycentos:1.3

用返回的镜像ID,查看镜像的变更历史:

> docker history [镜像ID]

 

 

 

 

 

承接各种网站开发与修改、爬虫、数据采集分析、小程序等任务

Html+Css+JS+PHP+Nodejs+Python

专治网站各种不服

一起探讨,互相学习,共同进步!有事儿您说话。

This entry was posted in Docker and tagged by 织梦先生. Bookmark the permalink.