美文网首页
Docker基础使用

Docker基础使用

作者: hsyman | 来源:发表于2020-12-16 11:40 被阅读0次

镜像操作

搜索镜像
这种方法只能用于官方镜像库
搜索基于 centos 操作系统的镜像
docker search centos

按星级搜索镜像:
查找 star 数至少为 100 的镜像,默认不加 s 选项找出所有相关 ubuntu 镜像:
docker search ubuntu -f stars=100

拉取镜像
docker pull centos

查看本地镜像
docker image list

查看镜像详情
docker image inspect 镜像id
images子命令选项
-a --all=true 列出所有(包括临时文件)镜像文件,默认为否
--digests=true|false 列出镜像的数字摘要值,默认为否
-f --filter=[] 过滤列出的镜像,如dangling=true只显示没有被使用的镜像;也可以指定带有特殊标注的镜像等
--format="TEMPLATE" 控制输出格式,如.ID代表ID信息,Repository代表仓库信息
--no-trunc=true|false 对输出结果中太长的部分是否进行截断,如镜像的ID,默认为true
-q, --quiet=true|false 仅输出ID信息,默认为否

使用tag命令添加镜像标签
为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任意添加标签。
docker tag centos:centos7 mycentos:latest

使用history命令查看镜像历史
镜像文件由多个层组成,可以使用history子命令,该命令将列出各层的创建信息。
docker history f00
过长的命令会被自动截断,可以使用--no-trunc选项来输出完整命令

删除镜像
删除一个或多个,多个之间用空格隔开,可以使用镜像名称或id
docker rmi daocloud.io/library/mysql
强制删除:--force
如果镜像正在被使用中可以使用--force强制删除
docker rmi docker.io/ubuntu:latest --force
删除所有镜像
docker rmi $(docker images -q)

只查看所有镜像的id
docker images -q

查看镜像制作的过程
相当于dockfile
docker history daocloud.io/ubuntu

容器操作

创建新容器但不启动
docker create -it daocloud.io/library/centos:5 /bin/bash

创建并运行一个新Docker容器
同一个镜像可以启动多个容器,每次执行run子命令都会运行一个全新的容器
docker run -it --restart=always centos /bin/bash
如果执行成功,说明CentOS容器已经被启动,并且应该已经得到了bash提示符。
-i 捕获标准输入输出
-t 分配一个终端或控制台
--restart=always 容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭
--rm 默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为可以通过查看日志等方式来确定最终状态。另一方面,也可以保存容器所产生的数据。但是仅仅需要短暂的运行一个容器,并且这些数据不需要保存,可能就希望Docker能在容器结束时自动清理其所产生的数据。这个时候就需要--rm参数了。注意:--rm 和 -d不能共用

断开与容器的连接,并且关闭容器
容器内部执行如下命令
exit
只想断开和容器的连接而不关闭容器
快捷键:ctrl+p+q

查看容器
只查看运行状态的容器
docker ps

docker ps -a
-a 查看所有容器

只查看所有容器id
docker ps -a -q

列出最近一次启动的容器
docker ps -l

启动容器
docker start name

关闭容器
docker stop name
docker kill name 强制终止容器

杀死所有running状态的容器
docker kill $(docker ps -q)

stop和kill的区别:
docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出。
当然,容器内程序可以捕获该信号并自行处理,例如可以选择忽略。
而docker kill则是给容器的进程发送SIGKILL信号,该信号将会使容器必然退出。

删除容器
docker rm 容器id或名称
要删除一个运行中的容器,添加 -f 参数

根据格式删除所有容器
docker rm $(docker ps -qf status=exited)

重启容器
docker restart name

暂停容器
pause 暂停容器内的所有进程
通过docker stats可以观察到此时的资源使用情况是固定不变的,通过docker logs -f也观察不到日志的进一步输出。

恢复容器
docker start infallible_ramanujan
这里的名字是状态里面NAMES列列出的名字,这种方式同样会让容器运行在后台

让容器运行在后台
如果在docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。
此时所有I/O数据只能通过网络资源或者共享卷组来进行交互。
因为容器不再监听你执行docker run的这个终端命令行窗口。
但可以通过执行docker attach来重新附着到该容器的回话中。
注意,容器运行在后台模式下,是不能使用--rm选项的
docker run -d IMAGE[:TAG]

docker logs 容器ID 打印该容器的输出

rename 修改容器名
docker rename 容器ID 新容器名

stats 动态显示容器的资源消耗情况,包括:CPU、内存、网络I/O
docker stats 容器ID

port 输出容器端口与宿主机端口的映射情况
docker port 容器ID

连接容器

方法1.attacc
docker attach 容器id
前提是容器创建时必须指定了交互shell

方法2.exec
通过exec命令可以创建两种任务:后台型任务和交互型任务
交互型任务:
docker exec -it 容器id /bin/bash
后台型任务
docker exec 容器id touch /testfile

监控容器的运行
可以使用logstopeventswait这些子命令
logs:
使用logs命令查看守护式容器
可以通过使用docker logs命令来查看容器的运行日志,其中--tail选项可以指定查看最后几条日志,而-t选项则可以对日志条目附加时间戳。使用-f选项可以跟踪日志的输出,直到手动停止

top:
显示一个运行的容器里面的进程信息
docker top birdben/ubuntu:v1

events:
实时输出Docker服务器端的事件,包括容器的创建,启动,关闭等
docker start loving_meninsky

wait:
捕捉容器停止时的退出码
执行此命令后,该命令会"hang"在当前终端,直到容器停止,此时,会打印出容器的退出码
docker wait 01d8aa //不同终端操作

diff:
查看容器内发生改变的文件
docker diff 容器ID

宿主机和容器之间相互COPY文件
cp的用法如下:

Usage:    docker cp [OPTIONS] CONTAINER:PATH LOCALPATH

如:容器mysql中/usr/local/bin/存在docker-entrypoint.sh文件,可如下方式copy到宿主机
docker cp mysql:/usr/local/bin/docker-entrypoint.sh /root/
修改完毕后,将该文件重新copy回容器
docker cp /root/docker-entrypoint.sh mysql:/usr/local/bin/

查看容器详细信息

用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等

目标:
查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。

可以使用镜像id的前面部分,不需要完整的id
docker inspect 90

[
    {
        "Id": "90ae508bd33aab472dfc4db635ef8a9c2d880cb89fed212882a91f5aa436e7fb",
        "Created": "2020-04-30T07:41:56.834127061Z",
        "Path": "nginx",
        "Args": [
            "-g",
   .....
]

例如:
容器里在安装ip或ifconfig命令之前,查看网卡IP显示容器IP地址和端口号,如果输出是空的说明没有配置IP地址(不同的Docker容器可以通过此IP地址互相访问)
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器ID

列出所有绑定的端口:
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' 容器ID

找出特殊的端口映射
比如找出容器里22端口所映射的docker本机的端口
docker inspect --format='{{(index (index .NetworkSettings.Ports "22/tcp") 0).HostPort}}' 容器ID

相关文章

  • docker学习

    docker是什么 docker的使用优点 docker的基础使用 docker => docker //输出do...

  • Docker基础使用

    Docker基础使用 概念 Docker Images:镜像,用于创建Docker容器的模板。Docker Con...

  • Docker 下Mysql的基础使用

    Docker 下Mysql的基础使用 从Docker Hub拉取mysqlsudo docker pull mys...

  • Docker的基础使用

    Docker的基础使用 获取镜像 获取镜像的命令时使用docker pulldocker pull [option...

  • Docker基础与实战,看这一篇就够了

    docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基...

  • docker常用命令

    Docker基础 这篇基础文章是方便用户在使用cSphere平台之前,了解docker基础知识。 针对已经有一定的...

  • docker搭建lnmp环境

    1 docker基础 1.1 docker的安装 docker的安装非常简单,我们可以直接使用centos系统中的...

  • Docker入门操作记录

    一 Docker安装步骤解析 1.1 基础命令 1.1.1 Docker安装前置任务 #使用uname -r ...

  • 一小时Docker教程

    Docker基础 这篇基础文章是方便用户在使用cSphere平台之前,了解docker基础知识。针对已经有一定的L...

  • rabbitmq : 通过docker安装rabbitmq

    准备 docker的基本使用方法,请参见: docker基础 下载rabbitmq镜像 注意 rabbitmq最...

网友评论

      本文标题:Docker基础使用

      本文链接:https://www.haomeiwen.com/subject/jdengktx.html