参考官网:https://docs.docker.com/engine/reference/commandline/cli/

帮助启动类命令

启动docker: systemctl start docker

停止docker: systemctl stop docker

重启docker: systemctl restart docker

查看docker状态: systemctl status docker

设置开机启动: systemctl enable docker

查看docker概要信息: docker info

查看docker总体帮助文档: docker --help

查看docker总体帮助文档: docker --help

镜像命令

docker images 列出本地主机上的镜像

docker images

OPTIONS说明:

-a :列出本地所有的镜像(含历史映像层)

-q :只显示镜像ID。

各个表头参数说明:

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签版本号 不指定显示最新的(latest)一个版本号

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

docker search 查找某个镜像

从远程仓库搜索某个镜像

OPTIONS说明:

–limit : 只列出N个镜像,默认25个

如:docker search --limit 5 redis

各个表头参数说明:

docker pul下载镜像

docker pull redis

没有指定tag默认下载最新版,等价于

docker pull redis:latest

docker system df 查看镜像/容器/数据卷所占的空间

docker system df

docker rmi删除镜像

删除单个镜像

docker rmi -f 镜像ID

若使用docker rmi 镜像ID 提示该镜像被容器ef9abec1f025 使用,无法被删除

添加–force 或-f 表示强制删除该镜像

删除多个镜像

docker rmi -f 镜像名1 镜像名2

删除全部镜像

docker rmi -f $(docker images -qa)

将docker images -qa 传递给 docker rmi -f 命令

docker images -qa表示获取全部镜像ID

容器命令

docker pull 下载镜像

有镜像才能创建容器,这是根本前提

docker pull centos

docker pull ubuntu

centos(大约200M)占用内存比ubuntu(大约73M)大, 这里使用ubuntu镜像,

docker run 新建+启动容器( 交互式操作)

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

OPTIONS说明(常用):

注意有些是一个减号,有些是两个减号

–name=“容器新名字” 为容器指定一个名称;

-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

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

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

也即启动交互式容器(前台有伪终端,等待交互);

-P: 随机端口映射,大写P

-p: 指定端口映射,小写p

docker run -it ubuntu /bin/bash

参数说明:

-i: 交互式操作。

-t: 终端。

-it:以交互模式启动一个容器,

ubuntu : ubuntu 镜像。

/bin/bash:表示在容器内部打开bash终端,用户可以在终端上执行命令和查看容器内部文件系统。放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入 exit:

启动守护式容器(后台运行)

在大部分的场景下,我们希望 docker 的服务是在后台运行的,

我们可以过 -d 指定容器的后台运行模式。

docker run -d ubuntu

使用docker ps -a 进行查看, 会发现容器已经退出

很重要的要说明的一点: Docker容器如果想要在后台运行,就必须有一个前台进程.

容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,

我们配置启动服务只需要启动响应的service即可。例如service nginx start

但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,

这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.

所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,

常见就是交互式操作模式,表示我还有交互操作,别中断

以redis为例后台运行

docker run -d redis

前台交互式启动

以redis为例

docker run -it redis

对于redis、mysql这些应用,我们一般采用后台守护式启动

docker ps 列出当前所有正在运行的容器

docker ps [OPTIONS]

OPTIONS说明(常用):

-a :列出当前所有正在运行的容器+历史上运行过的

-l :显示最近创建的容器。

-n:显示最近n个创建的容器。

-q :静默模式,只显示容器编号。

exit/ctrl+p+q 退出容器

1 exit

run启动容器,exit退出,容器停止

2 ctrl+p+q

run启动容器,ctrl+p+q退出,容器不停止

docker start 启动已停止运行的容器

docker start 93ec18a9b1b6

docker restart 重启容器

docker restart 93ec18a9b1b6

docker stop 停止容器

docker stop 93ec18a9b1b6

docker kill 强制停止容器

docker kill 2f48b8d19c03

docker rm 删除已停止的容器

启动的容器不允许删除,先停止容器,再进行删除

或者强制删除

docker rm -f 4ac88c73b274

一次性删除多个容器实例

  1. 将docker ps -a -q返回的结果传递给docker rmi -f 命令

    docker rm -f $(docker ps -a -q)

  2. 将docker ps -a -q 作为参数xargs 执行命令

    docker ps -a -q | xargs docker rm

其它

docker logs查看容器日志

docker logs 0335b4a3cbae

docker top查看容器内运行的进程

docker top 0335b4a3cbae

docker inspect查看容器内部细节

docker inspect命令用于查看Docker对象的详细信息。它可以查看容器、镜像、网络等各种对象的详细信息,包括配置、状态、网络等方面的信息。

[root@dongguo ~]# docker inspect 0335b4a3cbae
[{"Id": "0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77","Created": "2023-06-23T21:00:17.885426188Z","Path": "docker-entrypoint.sh","Args": ["redis-server"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 15258,"ExitCode": 0,"Error": "","StartedAt": "2023-06-23T21:00:18.045267761Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631","ResolvConfPath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/resolv.conf","HostnamePath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/hostname","HostsPath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/hosts","LogPath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77-json.log","Name": "/festive_ride","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {"Binds": null,"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "default","PortBindings": {},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"ConsoleSize": [34,131],"CapAdd": null,"CapDrop": null,"CgroupnsMode": "host","Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "private","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": null,"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "runc","Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": [],"BlkioDeviceWriteBps": [],"BlkioDeviceReadIOps": [],"BlkioDeviceWriteIOps": [],"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DeviceRequests": null,"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": false,"PidsLimit": null,"Ulimits": null,"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71-init/diff:/var/lib/docker/overlay2/0cb171a5403987a76a8cf3a670b85f01fd6b4b3e3605c4452fdb07fe52e77b9c/diff:/var/lib/docker/overlay2/441e4c82f35c47524d53beaf146cc3b22abf42d59ec31f9687cc586b7dfd051c/diff:/var/lib/docker/overlay2/7a5e7e57e9aba2dcfd758fc0866e9af6dbb3111327544069e6be9d539f970ec3/diff:/var/lib/docker/overlay2/1db4ca7e11010350ad63f9f302f037911ab42e12247946e0610bae41292d40e6/diff:/var/lib/docker/overlay2/23cfa44bd9728c6ea5686c0136196b3328520705d7078a7aa75be3b8401521e3/diff:/var/lib/docker/overlay2/929c534593b838115d695073b935dc877e1c371009ea4274f14b593022f95195/diff","MergedDir": "/var/lib/docker/overlay2/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71/merged","UpperDir": "/var/lib/docker/overlay2/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71/diff","WorkDir": "/var/lib/docker/overlay2/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71/work"},"Name": "overlay2"},"Mounts": [{"Type": "volume","Name": "a564bb56e5f355f39526203c2d0c2ccc9ad7cdb3eec883fd73c5b2f3d36f87ac","Source": "/var/lib/docker/volumes/a564bb56e5f355f39526203c2d0c2ccc9ad7cdb3eec883fd73c5b2f3d36f87ac/_data","Destination": "/data","Driver": "local","Mode": "","RW": true,"Propagation": ""}],"Config": {"Hostname": "0335b4a3cbae","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"6379/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.12","REDIS_VERSION=6.2.6","REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz","REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"],"Cmd": ["redis-server"],"Image": "redis","Volumes": {"/data": {}},"WorkingDir": "/data","Entrypoint": ["docker-entrypoint.sh"],"OnBuild": null,"Labels": {}},"NetworkSettings": {"Bridge": "","SandboxID": "eb1f015b5514625fd0f01ba5d92a4dfe66a9275b85c89f487976675b02134276","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {"6379/tcp": null},"SandboxKey": "/var/run/docker/netns/eb1f015b5514","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "1f6670fa68e2627489a004f8cb78c367ddb260b6e8fd379f25a3fc4c070c4775","Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:11:00:02","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "f3d2dc5a51080f517a978680b82469bb72ee261900f9ab0665d58ea1a28b95d8","EndpointID": "1f6670fa68e2627489a004f8cb78c367ddb260b6e8fd379f25a3fc4c070c4775","Gateway": "172.17.0.1","IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:02","DriverOpts": null}}}}
]

docker exec进入正在运行的容器

以命令行交互

docker exec -it aaa14efee277 /bin/bash

1.运行ubuntu

开启一个新的会话,进入Ubuntu容器

docker attach进入正在运行的容器

ocker attach aaa14efee277

区别

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

用exit退出,不会导致容器的停止。

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

用exit退出,会导致容器的停止。

推荐使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。

docker cp 从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径

将/下的a.txt拷贝到/tmp目录下

docker cp aaa14efee277:/a.txt /tmp/a.txt

导入和导出容器

export

导出容器的内容留作为一个tar归档文件

import

从tar包中的内容创建一个新的文件系统再导入为镜像

cat /tmp/abc.tar | docker import - dongguo/ubuntu:latest

Docker常见命令(以备不时之需)相关推荐

  1. docker pull的镜像放在哪里_Docker 安装ELK及Docker常见命令

    最近搭建基于Spring Cloud的微服务框架,日志系统当然最佳选择就是ELK.看着MAC 那紧巴巴的配置,又不想热情退去而留下一堆软件,果断选择Docker安装来节省那可怜的资源.当然这只是鹏哥的 ...

  2. Docker学习,Docker常见命令

    Docker常见命令: 启动docker service docker start 镜像命令: docker version     ----查看docker版本 docker info       ...

  3. Docker常见命令---简易教程

    容器相关操作 docker create # 创建一个容器但是不启动它 docker run # 创建并启动一个容器 docker stop # 停止容器运行,发送信号SIGTERM docker s ...

  4. docker教程_2 docker常见命令

    https://gitee.com/fakerlove/docker 文章目录 2. 入门常用命令 2.1 docker的帮助命令 2.2 docker的镜像命令 查看镜像 搜索镜像 下载镜像 删除镜 ...

  5. Docker 常见命令

    重新加载配置文件 systemctl daemon-reload重启docker service docker restart docker ps // 查看所有正在运行容器docker stop c ...

  6. docker 常见命令学习

    获取镜像 docker pull ubuntu 启动容器 docker run -it ubuntu /bin/bash [ i 交互式操作 t 终端] 后台运行容器 docker run -itd ...

  7. Docker原理及常见命令

    文章目录 一.docker简介 1.Docker namespace 2.Docker CGroups 3.Docker UnionFS 4.AUFS 5.Docker 镜像分层机制 一.Docker ...

  8. 容器虚拟化技术Docker(一)简介、安装、常见命令、数据卷、安装常规软件

    容器虚拟化技术Docker(一)简介.安装.常见命令.数据卷.安装常规软件 1.Docker简介 1.简介 Docker的主要目标是"Build,Ship and Run Any App,A ...

  9. docker 20安装教程及常见命令详解

    本文笔记学习来自B站狂神说 视频链接: https://www.bilibili.com/video/BV1og4y1q7M4?p=14 docker安装 先卸载系统之前的老版本docker sudo ...

最新文章

  1. 封装时间转换工具类_推荐一款封装各种Util工具类,这款神仙级框架你值得拥有!...
  2. 这年头,机器翻译都会通过文字脑补画面了 | NAACL 2021
  3. Git分支合并:Merge、Rebase的选择
  4. 谭浩强课后题之----输入一行字符,统计英文字母,数字以及空格数量
  5. 分享:Android程序员,必备精品网站大汇总
  6. ACM-ICPC中博弈论的一些小小总结
  7. Logstash配置语法及相关命令
  8. React Native开发指南-在原生和React Native间通信
  9. Docker和Kubernetes如何让DevOps更具效力
  10. 茶颜只有“霸蛮”,没有悦色
  11. C++头文件中定义全局变量在多次引用时出现变量多次定义符号冲突的解决办法...
  12. SAP License:AM-资产冻结与停用
  13. 瞬时极性法对正负反馈的判断方法_何为反馈?如何判断?统统告诉你
  14. Windows Phone 7 处理休眠和墓碑的恢复
  15. 洛谷 P1725 简单DP单调队列优化
  16. 直播预告 | 全场景音视频技术解析
  17. eLife:一个开源、高性能的自动睡眠分期工具
  18. 自动控制原理学习笔记(五)
  19. java获取行政区划编码(省市区县居委5级)
  20. 计算机绘图中有六种方法绘圆,绘图用品和制图方法

热门文章

  1. python——爬虫(豆瓣top250)
  2. visio如何去掉泳道左边的分隔符
  3. 【服务器数据恢复】raid5崩溃导致lvm信息和VXFS文件系统损坏的数据恢复案例
  4. 【信息学】【2018.02】噪声环境下基于时频域信号模型的语音去混响
  5. 巡逻保安───导航守卫
  6. 龙芯新款处理器发布;Citrix 产品曝“惊天漏洞”,影响全球 8 万家公司; AMD发布年度5大里程碑 ……...
  7. matlab滑块怎么插入,求助 Matlab关于滑块的一些问题
  8. 数学之美 - Python视角下的Peter de Jong吸引子
  9. 【TA100】图形 2.6伽马(Gamma)校正
  10. bzoj1778: [Usaco2010 Hol]Dotp 驱逐猪猡(概率DP+高斯消元)