Docker基础使用

镜像操作

搜索镜像
这种方法只能用于官方镜像库
搜索基于 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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 1 docker安装 CentOS下安装Docker 注意: CentOS7 要求系统为X64,内核版本3.10以...
    无为无味无心阅读 273评论 0 1
  • Docker基础使用 概念 Docker Images:镜像,用于创建Docker容器的模板。Docker Con...
    xbo阅读 292评论 0 0
  • 引导:容器有仓库、镜像和容器的概念,顾名思义,仓库就是存储镜像的地方,而容器是根据镜像来创建的。 1.镜像操作 d...
    运维之美阅读 437评论 0 1
  • 常用命令 关键字: 从公网拉取一个镜像docker pull images_name 查看已有的docker镜像d...
    小强唐阅读 243评论 0 0
  • 常用命令 关键字: 从公网拉取一个镜像docker pull images_name 查看已有的docker镜像d...
    Pts阅读 237评论 0 1