docker常用命令

一、帮助命令

version

查看Docker版本信息

docker version

info

查看Docker系统信息,包括镜像和容器数

docker info

--help

查看命令的帮助信息,和Linux的命令的帮助信息一样。

docker --help

二、镜像命令

images

列出本地镜像

docker iamges

docker后面还可以跟选项参数
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
# 输出选项说明
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

# 输出结果
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
redis                        latest              dcf9ec9265e0        8 days ago          98.2MB
mysql                        5.7                 1e4405fe1ea9        8 days ago          437MB
centos                       7                   5e35e350aded        2 weeks ago         203MB
hello-world                  latest              fce289e99eb9        11 months ago       1.84kB
delron/elasticsearch-ik      2.4.6-1.0           095b6487fb77        19 months ago       689MB

从Docker Hub查找所有对应镜像的信息, 并且还可以加入限制条件

docker search 某个镜像的名字
参数:
--automated: 只列出 automated build类型的镜像;
--no-trunc: 显示完整的镜像描述;
-s: 列出stars数不小于指定值的镜像。

pull

从镜像仓库中拉取或者更新指定镜像

docker pull [OPTIONS] NAME[:TAG]

tag不写默认拉取最新的镜像, 效果同python的pip不指定版本默认最新。

rmi

删除本地一个或多少镜像。使用可以指定镜像名字或者id

docker rmi [OPTIONS] IMAGE [IMAGE...]
参数:
	-f 强制删除

删除单个

docker rmi -f 镜像id

删除多个

docker rmi -f 镜像id1:tag id2:tag ...

删除全部

docker rmi -f $(docker images -aq)

build

命令用于使用 Dockerfile 创建镜像。

docker build [OPTIONS] PATH | URL | -

常用参数选项
-f :指定要使用的Dockerfile路径;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

三、容器命令

run

创建一个新的容器并运行一个命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
--name="容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
      ip:hostPort:containerPort
      ip::containerPort
      hostPort:containerPort
      containerPort

以交互式的方式启动容器

# 先拉取centos:7的镜像, 然后以交互式启动
[root@localhost ~]# docker run -it centos:7 
[root@3a3545a4f704 /]# pwd
/

以守护式方式启动容器

#使用镜像centos:7以后台模式启动一个容器
docker run -d centos:7

问题:然后docker ps -a 进行查看, 会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

ps

列出容器

docker ps [OPTIONS]

-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。

使用方式与docker images类似。

start/restart/stop

启动/重启/停止 一个或多个已经被停止的容器

三者的使用方式一样, 最后跟容器的id或名称

docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER...]

rm

删除一个或多个容器。

docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-v :删除与容器关联的卷。
一次性删除多个容器:
docker rm -f $(docker ps -aq)
或者
docker ps -aq | xargs docker rm

# 上面的可以跟多个容器的使用方式都可以类似操作

logs

获取容器的日志

docker logs [OPTIONS] CONTAINER

-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志

top

查看容器中运行的进程信息。

docker top [OPTIONS] CONTAINER

inspect

获取容器/镜像的元数据(内部细节), 默认返回的是格式化后的json格式的串。

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
[root@localhost ~]# docker inspect ef9d
[
    {
        "Id": "ef9d8ce5c46984839ed26639f4cd96feba07ebb3aab609e5b47333ced626ed54",
        "Created": "2019-12-01T09:36:07.557435626Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "/usr/local/etc/redis/redis.conf",
            "--appendonly",
            "yes"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
  ...

commit

从容器创建一个新的镜像。

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

logs

获取容器的日志

docker logs [OPTIONS] CONTAINER

exec/attach

进入正在运行的容器并以命令行交互

docker exec -it 容器id bashShell
docker attach 容器id

上述两者的区别

attach: 直接进入容器启动命令的终端,不会启动新的进程

exec: 是在容器中打开新的终端,并且可以启动新的进程

cp

用于容器与主机之间的数据拷贝。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

push

将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker push NAME[:TAG]
# 以阿里云作为远程仓库为例
$ sudo docker login --username=自己的账号名 registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/名称空间/仓库名称:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/名称空间/仓库名称:[镜像版本号]
原文地址:https://www.cnblogs.com/yscl/p/11968656.html