【docker系列】二、docker基本命令

前言

这些是我在使用docker时整理的一些常见的命令,可能不太详细

一、镜像相关

1.1列出拉取的所有镜像

docker images

1.2删除镜像,容器要先停止

docker rmi 镜像id

1.3 save命令导出

docker save -o nginx.tar nginx:latest 或docker save nginx:latest > nginx.tar

其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)

1.4 load命令导入

docker load -i nginx.tar 或docker load < nginx.tar

其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

1.5 export命令导出

docker export -o nginx-test.tar nginx-test

其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)

1.6 import命令导入

docker import nginx-test.tar nginx:imp

cat nginx-test.tar | docker import - nginx:imp

1.7 save和export的区别

export命令导出的tar文件略小于save命令导出的

export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出

基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。

1.8 tag命令修改镜像名字

docker tag 镜像id 镜像名字:镜像版本

例如:

docker tag 529706353c34 nginx:latest

1.9 建议

可以依据具体使用场景来选择命令

若是只想备份images,使用save、load即可

若是在启动容器后,容器内容有变化,需要备份,则使用export、import

二、容器相关

2.1运行容器

docker run [Options] 镜像名称 [COMMAND] [ARG...]

Options

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

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

-P: 随机端口映射,容器内部端口随机映射到主机的高端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

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

--name nginx-lb: 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷,挂载目录,规则与端口映射相同,-v 宿主机目录:容器目录

--rm:容器退出时自动清理容器内部的文件系统。

2.2删除容器

docker rm 容器id

2.3 停止容器

docker stop 容器id

2.4 重启容器

docker restart 容器id

2.5 查看正在运行的容器

docker ps

查看容器的详细命令

docker ps -a --no-trunc

2.6 查看所有容器(包括未运行的)

docker ps -a

2.7 查看容器运行日志

docker logs [Options] 容器名称/容器id

Options:

    --details        显示更多的信息

    -f, --follow         跟踪实时日志

    --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)

    --tail string    从日志末尾显示多少行日志, 默认是all

    -t, --timestamps     显示时间戳

--until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

例子:

查看指定时间后的日志,只显示最后100行:

docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:

docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:

docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

查看某时间段日志:

$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

2.8 在运行的容器中执行命令

docker exec [Options] 容器ID /bin/bash

Options:

-d : 分离模式: 在后台运行

-i :  即使没有附加也保持STDIN 打开

-t : 分配一个伪终端

例子:

在容器名称 my-nginx 中开启一个交互模式的终端

docker exec -it my-nginx /bin/bash

三、容器和镜像

3.1获取容器/镜像的元数据

docker inspect [OPTIONS] NAME|ID

Options:

-f :指定返回值的模板文件。

-s :显示总的文件大小。

--type :为指定类型返回JSON。

写在最后的话

有些命令是学习的时候老师教的,有些命令是复制其他博客的,然后汇集了这一堆docker命令。

猜你喜欢

转载自blog.csdn.net/WayneLee0809/article/details/112799454