(二)Docker常用命令

1 帮助命令

  • docker help
    查看命令的帮助信息

    语法:docker help [OPTIONS]

    [OPTIONS]参数说明:命令的名称

    示例:
    在这里插入图片描述


2 docker信息查看

  • docker version
    显示 Docker 版本信息

    语法:docker version

    示例:
    在这里插入图片描述


  • docker info
    显示 Docker 系统信息,包括镜像和容器数

    语法:docker info

    示例:
    在这里插入图片描述

3、镜像仓库相关

3.1 查找镜像

  • docker search

    从Docker Hub查找镜像

    语法:docker search [OPTIONS] 镜像名包含的字符串

    [OPTIONS]参数说明:

    • -f <过滤条件>: 列出收藏数不小于指定值的镜像,例如查找所有镜像名包含 tomcat,并且收藏数大于 10 的镜像:docker search -f stars=10 tomcat
    • - -no-trunc : 显示完整的镜像描述
    • - -automated : 只列出 automated build类型的镜像;

    示例:
    在这里插入图片描述

    命令返回结果说明:
    NAME: 镜像仓库源的名称
    DESCRIPTION: 镜像的描述
    OFFICIAL: 是否 docker 官方发布 OK 代表是官方镜像
    stars: 类似 Github 里面的 star,表示点赞、喜欢的意思
    AUTOMATED: 自动构建


3.2 拉取镜像

  • docker pull

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

    语法:docker pull [OPTIONS] 镜像名字[:TAG]

    [OPTIONS]参数说明:
    使用时很少带参数,一般只需要指定镜像名称和TAG(版本号)

    • -a : 拉取所有 tagged 镜像
    • - -disable-content-trust : 忽略镜像的校验,默认开启

    示例:
    在这里插入图片描述

3.3 登录/登出镜像库

  • docker login、logout

登陆/退出登录到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

语法:docker login [OPTIONS] [SERVER]

[OPTIONS]参数说明:

  • -u : 登陆的用户名
  • -p : 登陆的密码

示例登录阿里云的个人镜像容器:

docker login -u 用户名 -p 密码
docker login --username=四个赖子来油 registry.cn-hangzhou.aliyuncs.com

docker logout 登出

在这里插入图片描述
阿里云镜像容器配置密码:
在这里插入图片描述
在这里插入图片描述


3.4 上传本地镜像到仓库

  • docker push

    使用login登陆到镜像仓库,将本地的镜像上传到镜像仓库

    语法:docker push [OPTIONS] NAME[:TAG]

    参数说明:- -disable-content-trust : 忽略镜像的校验,默认开启

    示例:
    先使用tag命令标记本地镜像,然后push到自己的阿里云仓库
    在这里插入图片描述

使用如下命令将my-hello-world镜像push到我们自己的阿里云镜像仓库:
docker tag my-hello-world registry.cn-hangzhou.aliyuncs.com/yanlei_aliyun/hub.study.com:1.0
docker push registry.cn-hangzhou.aliyuncs.com/yanlei_aliyun/hub.study.com:1.0

命令格式:
$ docker login --username=四个赖子来油 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] RegistryHost/userName/仓库名称:[镜像版本号]
$ docker push RegistryHost/userName/仓库名称:[镜像版本号]
在这里插入图片描述

再进入到阿里云容器,最开始看到镜像id是一长串字符串,还有点不太懂,本以为应该是my-hello-world,后来才发现我最开始理解成一个仓库是存放很多个不同的镜像了。实际上我们应该在同一个仓库中存储同一个镜像的不同版本。所以我们在设置仓库名称的时候,就应该将名称设置为镜像的名称。
在这里插入图片描述
在这里插入图片描述


4、本地镜像管理

4.1 查看本地镜像

  • docker images
    列出本地镜像

    语法:docker images [OPTIONS]

    参数说明:

    • -a : 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
    • - -digests : 显示镜像的摘要信息;
    • -f : 显示满足条件的镜像;
    • - -format : 指定返回值的模板文件;
    • - -no-trunc : 显示完整的镜像信息;
    • -q : 只显示镜像ID。

    示例:
    在这里插入图片描述


4.2 删除本地镜像

  • docker rmi
    删除本地一个或多少镜像

    语法:docker rmi [OPTIONS] IMAGE [IMAGE…]

    参数说明:

    • -f : 强制删除;
    • - -no-prune : 不移除该镜像的过程镜像,默认移除;

    示例:

    • 删除单个 docker rmi -f 镜像ID
    • 删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG
    • 删除全部 docker rmi -f $(docker images -qa)
      在这里插入图片描述

4.3 标记本地镜像

  • docker tag
    标记本地镜像。有点类似虚拟机的快照,使用当前镜像,生成一个不同版本的镜像文件

    语法:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

    参数说明:REGISTRYHOST和 USERNAME参考docker push中push到阿里云仓库

    示例:
    在这里插入图片描述

4.4 使用dockerfile构建镜像

  • docker build
    使用 Dockerfile 创建镜像。

    语法:docker build [OPTIONS] PATH | URL | -
    PATH | URL | - 在使用远程dockerfile时使用

    参数说明:
    -f :指定要使用的Dockerfile路径;
    –tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
    -m :设置内存最大值;
    –build-arg=[] :设置镜像创建时的变量;
    –cpu-shares :设置 cpu 使用权重;
    –cpu-period :限制 CPU CFS周期;
    –cpu-quota :限制 CPU CFS配额;
    –cpuset-cpus :指定使用的CPU id;
    –cpuset-mems :指定使用的内存 id;
    –disable-content-trust :忽略校验,默认开启;
    –force-rm :设置镜像过程中删除中间容器;
    –isolation :使用容器隔离技术;
    –label=[] :设置镜像使用的元数据;
    –memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
    –no-cache :创建镜像的过程不使用缓存;
    –pull :尝试去更新镜像的新版本;
    –quiet, -q :安静模式,成功后只输出镜像 ID;
    –rm :设置镜像成功后删除中间容器;
    –shm-size :设置/dev/shm的大小,默认值是64M;
    –ulimit :Ulimit配置。
    –squash :将 Dockerfile 中所有的操作压缩为一层。
    –network: 默认 default。在构建期间设置RUN指令的网络模式

    示例: 使用本地dockerfile创建镜像 docker build -f ./dockerfile-volume_test -t my-centos .
    最后有一个点,表示当前文件所处的上下文环境的目录在这里插入图片描述
    在这里插入图片描述


4.5 镜像的构建历史

  • docker history
    查看指定镜像的创建历史

    语法:docker history [OPTIONS] IMAGE

    参数说明:

    • -H : 以可读的格式打印镜像大小和日期,默认为true;
    • –no-trunc : 显示完整的提交记录;
    • -q : 仅列出提交记录ID。

    示例:在这里插入图片描述


4.6 将镜像打包为文件

  • docker save
    将指定镜像保存成 tar 归档文件

    语法:docker save [OPTIONS] IMAGE [IMAGE…]

    参数说明:-o : 输出到的文件。

    示例:将镜像 redis:3.2.7 生成 redis.tar docker save -o /tmp/redis.tar redis:3.2.7
    在这里插入图片描述


4.7 导入使用 docker save 命令打包的镜像

  • docker load
    导入使用 docker save命令打包的镜像

    语法:docker load [OPTIONS]

    参数说明:

    • –input , -i : 指定导入的文件,代替 STDIN。
    • –quiet , -q : 精简输出信息。

    示例:docker load -i /tmp/hw.tar在这里插入图片描述


4.8 将运行镜像所产生的容器打包

  • docker export

    将文件系统(也就是运行镜像所产生的容器)作为一个tar归档文件导出到STDOUT

    语法:docker export [OPTIONS] CONTAINER

    参数说明:-o : 将输入内容写到文件

    示例:

在容器的/tmp/yyyL目录下创建了一个文件:
在这里插入图片描述
将id为9c5c6000931e的容器保存为tar文件:docker export -o ./docker-tar/my-centos-vim.tar 9c5c6000931e
在这里插入图片描述


4.9 将docker export打包的容器tar生成镜像

  • docker import
    从归档文件中创建镜像

    语法:docker import [OPTIONS] file [REPOSITORY[:TAG]]

    参数说明:

    • -c:应用docker 指令创建镜像;
    • -m : 提交时的说明文字;

    示例:
    使用命令导入my-centos-vim.tar(在通过容器生成该打包文件时,在/tmp/yyyL下创建了一个yl.txt文件):docker import my-centos-vim.tar my-centos-vim-import:1.0
    在这里插入图片描述
    运行导入的容器:如果使用docker run -it my-centos-vim-import:1.0运行则会报如下错误:

[root@localhost docker-tar]# docker run -it my-centos-vim-import:1.0
docker: Error response from daemon: No command specified.
See 'docker run --help'.

需要在最后添加一个command命令docker run -it my-centos-vim-import:1.0 /bin/bash

在这里插入图片描述
因为方便学习,使用的实际还是一个centos,所以使用/bin/bash也可以运行,在实际工作中,如果要正确的运行,需要通过查询原容器的command命令得到。
在这里插入图片描述


5、容器的创建、运行、启动暂停

5.1 创建容器

  • docker create
    创建容器但不启动

    语法:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]

    参数说明:

    示例:
    在这里插入图片描述


5.2 创建并运行容器

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

    语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

    参数说明:
    –name=“nginx-lb”: 为容器指定一个名称;
    -d: 后台运行容器,并返回容器ID;
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -P: 随机端口映射,容器内部端口随机映射到主机的端口
    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
    –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
    –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
    -h “mars”: 指定容器的hostname;
    -e username=“ritchie”: 设置环境变量;
    –env-file=[]: 从指定文件读入环境变量;
    –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
    -m :设置容器使用内存最大值;
    –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
    –link=[]: 添加链接到另一个容器;
    –expose=[]: 开放一个端口或一组端口;
    –volume , -v: 绑定一个卷

    示例:
    (1)docker run -d 若容器没有运行中的前台进程,容器会自动关闭。
    例如在运行后执行脚本一直打印“centos run …”,则不会使得容器结束: docker run -d centos:7 /bin/sh -c "while true;do echo centos run ...;sleep 2;done"在这里插入图片描述

(2)启动tomcat
以前台方法启动:docker run -it --name="tomcat" -p 8888:8080 tomcat:8.5.32docker run -it centos:7 /bin/bash
以后台方法启动:docker run -d --name="tomcat" -p 8888:8080 tomcat:8.5.32
注意:最新版的tomcat没有webapps目录,访问会报404.建议学习演示为了方便,使用8.5.32版本
在这里插入图片描述
通过宿主机访问
若访问不通,对于CentOS7,可以关闭防火墙systemctl stop firewalld
在这里插入图片描述

进入tomcat容器内部:docker exec -it dfc628d98a0e /bin/bash
注意,我这边尝试,只能使用exec命令进入,attach无法进入。在这里插入图片描述


5.3 启动已经停止的容器

  • docker start
    启动已经停止的容器

语法:docker start [OPTIONS] CONTAINER [CONTAINER…]

参数说明:

示例:
在这里插入图片描述


5.4 停止运行中的容器

  • docker stop
    停止运行中的容器

    语法:docker stop [OPTIONS] CONTAINER [CONTAINER…]

    参数说明:

    示例:
    在这里插入图片描述


5.5 重启容器

  • docker restart
    重启容器

    语法:docker restart [OPTIONS] CONTAINER [CONTAINER…]

    参数说明:

    示例:
    在这里插入图片描述


5.5 杀掉运行的容器

  • docker kill
    杀掉一个运行中的容器

    语法:docker kill [OPTIONS] CONTAINER [CONTAINER…]

    参数说明:
    -s :向容器发送一个信号

    示例:
    在这里插入图片描述


5.6 查看容器的进程

  • docker top
    与普通宿主机的命令基本一致,使用docker top命令可以查看容器内的cpu和内存使用情况

    语法:docker top CONTAINER

    示例:
    在这里插入图片描述


5.7 删除容器

  • docker rm
    删除容器

    语法:docker rm [OPTIONS] CONTAINER [CONTAINER…]

    参数说明:
    -f :通过 SIGKILL 信号强制删除一个运行中的容器。
    -l :移除容器间的网络连接,而非容器本身。
    -v :删除与容器关联的卷。

    示例:
    强制删除容器 db01、db02:docker rm -f db01 db02

移除容器 nginx01 对容器 db01 的连接,连接名 db:docker rm -l db

删除容器 nginx01, 并删除容器挂载的数据卷:docker rm -v nginx01

删除所有已经停止的容器:docker rm $(docker ps -a -q)


5.8 暂停容器中所有的进程

  • docker pause
    暂停容器中所有的进程

    语法:docker pause CONTAINER [CONTAINER…]

    参数说明:

    示例:启动tomcat容器,然后暂停容器的进程,此时是无法访问tomcat的默认页面。
    在这里插入图片描述
    在这里插入图片描述


5.9 恢复容器中所有的进程

  • docker unpause
    暂停容器中所有的进程

    语法:docker unpause CONTAINER [CONTAINER…]

    参数说明:

    示例:恢复使用使用docker pause暂停了进程的容器
    在这里插入图片描述


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

  • docker commit
    从容器创建一个新的镜像

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

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

示例: docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

对删除config目录后的tomcat容器打包,生成镜像
在这里插入图片描述
打包容器:docker commit -m="将tomcat的config目录删掉后重新生成镜像" -a="YL" dfc628d98a0e my-tomcat:v1.0
在这里插入图片描述

使用完整的tomcat镜像和刚刚删除了config目录后打包的镜像分别创建容器实例,访问结果如下:
在这里插入图片描述


5.11 从容器中退出

1、exit停止容器并退出
在这里插入图片描述
2、ctrl+P+Q 在不关闭容器的情况下退出
在这里插入图片描述

6、容器相关操作

6.1 查看容器

  • docker ps
    查看有哪些容器

    语法:docker ps [OPTIONS]

    参数说明:
    -a :显示所有的容器,包括未运行的。
    -f :根据条件过滤显示的内容。
    –format :指定返回值的模板文件。
    -l :显示最近创建的容器。
    -n :列出最近创建的n个容器。
    –no-trunc :不截断输出。
    -q :静默模式,只显示容器编号。
    -s :显示总的文件大小。

    示例:

    在这里插入图片描述


6.2 查看容器的内部细节

  • docker inspect
    获取容器/镜像的元数据

    语法:docker inspect [OPTIONS] NAME|ID [NAME|ID…]

    参数说明:
    -f :指定返回值的模板文件
    -s :显示总的文件大小
    –type :为指定类型返回JSON

    示例:
    在这里插入图片描述


6.3 连接到正在运行中的容器

  • docker attach
    连接到正在运行中的容器

    语法:docker attach [OPTIONS] CONTAINER

    参数说明:

    示例:
    在这里插入图片描述


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

  • docker exec
    在运行的容器中执行命令

    语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

    参数说明:
    -d :分离模式: 在后台运行
    -i :即使没有附加也保持STDIN 打开
    -t :分配一个伪终端

    示例:
    (1) docker exec -t 6746ea0be680 ls -l /tmp/
    在这里插入图片描述
    (2)docker exec -it 6746ea0be680 /bin/bash 可以实现和docker attach相同的功能
    在这里插入图片描述


6.5 实时监听docker的事件操作

  • docker events
    会实时监听docker的事件然后输出日志信息

    示例:
    开了两个shell窗口,一个窗口执行docker events后会阻塞,然后开始监听docker的事件。当在另一个窗口执行容器的启动和暂停操作后,就会打印相应的操作日志。
    在这里插入图片描述


6.6 获取容器的日志

  • docker logs
    获取容器的日志

    语法:docker logs [OPTIONS] CONTAINER

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

    示例:
    在这里插入图片描述


6. 7 阻塞运行的容器

  • docker wait
    阻塞运行直到容器停止,然后打印出它的退出的状态码。

    语法:docker wait [OPTIONS] CONTAINER [CONTAINER…]

状态码描述
0表示正常退出
非 0表示异常退出(退出状态码采用 chroot 标准)
125Docker 守护进程本身的错误
126容器启动后,要执行的默认命令无法调用
127容器启动后,要执行的默认命令不存在
137表明容器收到了 SIGKILL 信号,进程被杀掉,对应kill -9
139表明容器收到了 SIGSEGV 信号,无效的内存引用,对应kill -11
143表明容器收到了 SIGTERM 信号,终端关闭,对应kill -15

示例: 使用docker wait a67a513066e9监听容器退出。然后另开窗口执行stop。
在这里插入图片描述


6.8 查看容器的端口映射

  • docker port
    列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口

    语法:docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]

    参数说明:
    PRIVATE_PORT:指定查询的容器内部端口
    PROTO:协议的类型(tcp、udp)

    示例:
    在这里插入图片描述


6.9 查看容器内文件的增删改

  • docker diff
    将该容器与创建该容器的镜像进行比较,查看容器内文件的增删改

    语法:docker diff [OPTIONS] CONTAINER

该命令可以追踪容器内文件的以下三种变化

符号描述
A创建了文件或目录
D删除了文件或目录
C修改了文件或目录

示例:


7、容器与宿主机之间的数据拷贝

  • docker cp

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

    语法:
    从容器拷贝到主机:docker cp [OPTIONS] CONTAINER:容器内路径 宿主机路径
    从主机到容器拷贝:docker cp [OPTIONS] 宿主机路径 CONTAINER:容器内路径

    参数说明:
    -L :保持源目标中的链接

    示例:
    (1) docker cp 6746ea0be680:/tmp/docker.txt ./ : 从容器中复制文件到宿主机
    在这里插入图片描述
    (2)docker cp ./docker-szj.txt 6746ea0be680:/tmp/ 从宿主机中复制文件到容器在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值