下面简单介绍下docker的一些命令操作(本人用的是基于linux内核的ubuntu系统)。
前言:在不了解该输入哪个命令时,可以输入docker --help获取全部命令信息,或者进一步筛选docker run --help获取run命令的信息:
(一)镜像的搜索 拉取与查看
这是docker的官方仓库,我们镜像一般是都是直接从上面拉取。
1.搜索
docker search [OPTIONS] TERM
命令含义:docker 表明是docker命令, search 命令的名称, OPTIONS 可选的参数(具体可以通过docker search --help查看), TERM 镜像名称(模糊匹配搜索)
比如搜索名字包含hello-world的镜像:
docker search hello-world
可看到所有包含hello-world名称的镜像,还可以通过添加[OPTIONS] 可选声明去筛选,这里不累述,具体看help。
2.拉取
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
命令含义:NAME:镜像名称,[:TAG|@DIGEST]:版本号,可选,默认为最新版本
比如拉取hello-world镜像:
docker pull hello-world
3.查看当前拥有的镜像
docker images
(二)容器的创建 查看 启动 进入以及停止
拉取镜像之后,我们就可以利用镜像创建容器了。
1.容器的创建
基于hello-world镜像创建一个容器
docker create hello-world
2.容器的查看
docker ps -a
这是查看所有的容器,其中STATUS代表容器的状态,Created表示创建,Up表示正运行,Exited表示停止。
其他命令:docker ps指查看正在运行的容器,docker ps -n 5指查看前面五个容器的信息,其他更多的查看容器命令可以求助help
假如需要查看容器详细信息,可通过如下命令查看:
docker inspect [NAME]/[CONTAINER ID]
3.容器的启动与进入
启动上面创建的容器
方式一:以容器id或者容器名启动
docker start [NAME]/[CONTAINER ID]
可以看到容器id为744c32992ca6的容器的status状态有Created变成了Exited,说明命令生效,已经启动过了。
方式二:前面的命令都基于先create一个容器再start启动,而run命令则为直接创建并启动一个容器,假如不存在该镜像,还会直接从仓库下载再创建启动:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
比如运行一个基于hello-world的镜像
docker run -it hello-world
命令意思为新创建并运行一个容器,可以看到输出内容Hello from Docker!
其中-i表示交互式,-t表示为创建的容器分配一个伪tty终端,一般两个一起用-it,还可以为容器指定需要执行的命令。
比如:docker run -it ubuntu /bin/bash
表示本地寻找Ubuntu镜像,若没有则从仓库下载,然后创建并启动一个基于Ubuntu镜像的容器,并且在容器里执行/bin/bash命令(即LINUX系统中执行SHELL命令的格式,还有其他一些格式如/bin/sh),所以我们能看到该容器的bash终端,用户且能与之交互,exit为退出并关闭该容器
方式三:以上的容器都是短暂式的启动,即启动完之后就停止,因此我们可以以daemon守护进程的方式启动
比如:docker run -d ubuntu /bin/sh -c "while true;do echo hello docker;sleep 1;done"
-d后台启动一个容器并间隔1秒不断输出hello docker信息
通过docker logs [NAME]/[CONTAINER ID] 可以查看到输出日志内容
container_id为容器id ,name为名,参数二选一
怎么进入运行中的容器呢?
两种方式:
1):docker attach [NAME]/[CONTAINER ID]
2):docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
假如我们需要进入交互式终端,需要传-it以及一个容器可执行命令,比如连接一个基于ubuntu镜像新创建的守护进程的容器,并进入交互式终端bash
容器必须处于运行中状态,不然报错
4.容器的重启和停止
重启命令:docker restart [NAME]/[CONTAINER ID]
container_id为容器id ,name为名,参数二选一
停止命令:docker stop[NAME]/[CONTAINER ID]
同上,参数二选一
或者强制停止,直接kill杀死
docker kill [NAME]/[CONTAINER ID]
(三)容器的删除
删除命令:docker rm [NAME]/[CONTAINER ID]
[NAME]/[CONTAINER ID]`可以为多个,空格隔开,前提是容器必须先停止运行才能执行删除
也可批量删除:
docker ps -a -q | xargs docker rm
-q表示根据CONTAINER ID批量删除
(四)镜像的删除
与容器的删除命令相似,前提是基于这个镜像的容器必须先删除,才能删除这个镜像
单个删除:docker rmi [NAME]/[IMAGE ID]
批量删除:docker ps -a -q | xargs docker rmi
-q表示根据IMAGE ID批量删除