docker命令大全 笔记

  • 1、容器生命周期管理
    • 1.1、run
    • 1.2、create
    • 1.3、exec
    • 1.4、start/stop/restart
    • 1.5、pause/unpause
    • 1.6、kill
    • 1.7、rm
  • 2、容器操作
    • 2.1、ps
    • 2.2、inspect
    • 2.3、top
    • 2.4、attach
    • 2.5、event
    • 2.6、logs
    • 2.7、wait
    • 2.8、export
    • 2.9、port
  • 3、容器rootfs命令
    • 3.1、commit
    • 3.2、cp
    • 3.3、diff命令
  • 4、镜像仓库
    • 4.1、login/logout
    • 4.2、push
    • 4.3、pull
    • 4.4、search
  • 5、本地镜像管理
    • 5.1、images
    • 5.2、tag
    • 5.3、rmi
    • 5.4、build
    • 5.5、history
    • 5.6、save
    • 5.7、load
    • 5.8、import
  • 6、查看信息
    • 6.1、info
    • 6.2、version

记录一些自己经常会用到的docker命令,方便自己忘了的时候回来翻阅。

1、容器生命周期管理

1.1、run

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

参数:

  • d: 后台运行容器,并返回容器ID;
  • e username=“ritchie”: 设置环境变量;
  • i: 以交互模式运行容器,通常与 -t 同时使用;
  • P: 随机端口映射,容器内部端口随机映射到主机的端口
  • p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • name=“nginx-lb”: 为容器指定一个名称;
  • expose=[]: 开放一个端口或一组端口;
  • volume , -v: 绑定一个卷

样例:

  • 使用docker镜像mysql以后台模式启动一个容器,将容器的3307端口映射到主机的3307端口,主机的目录 /data 映射到容器的 /data,初始密码为root,容器命名为mysql。
docker run --name mysql -p 3307:3307 -v /data:/data -d -e MYSQL_ROOT_PASSWORD=root mysql:latest

1.2、create

docker create :创建一个新的容器但不启动它,语法同 docker run。

样例:

  • 使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob
docker create  --name mysql  mysql:latest

1.3、exec

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

参数:

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

样例:

  • 在容器 mysql 中开启一个交互模式的终端:
docker exec -it  mysql /bin/bash
  • 也可以通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。
docker ps -a

1.4、start/stop/restart

  • docker start :启动一个或多个已经被停止的容器
  • docker stop :停止一个运行中的容器
  • docker restart :重启容器

样例:

  • 启动已被停止的容器mysql
docker start mysql
  • 停止运行中的容器mysql
docker stop mysql
  • 重启容器mysql
docker restart mysql

1.5、pause/unpause

docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。

样例:

  • 暂停数据库容器 mysql 提供服务。
docker pause mysql
  • 恢复数据库容器 mysql 提供服务。
docker unpause mysql

1.6、kill

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

参数:

  • s :向容器发送一个信号

样例:

  • 杀掉运行中的容器mysql
docker kill -s KILL mysql

1.7、rm

docker rm :删除一个或多个容器。

参数:

  • f :通过 SIGKILL 信号强制删除一个运行中的容器。

  • l :移除容器间的网络连接,而非容器本身。

  • v :删除与容器关联的卷。

样例:

  • 强制删除容器mysql,并删除容器挂载的数据卷,
docker rm -f -v mysql

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

2、容器操作

2.1、ps

docker ps : 列出容器

参数:

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

列出所有在运行的容器信息。

 docker ps


输出详情介绍:

  • CONTAINER ID: 容器 ID。
  • IMAGE: 使用的镜像。
  • COMMAND: 启动容器时运行的命令。
  • CREATED: 容器的创建时间。
  • STATUS: 容器状态。状态有7种:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
  • NAMES: 自动分配的容器名称。

列出最近创建的2个容器信息。

docker ps -n 2


列出所有创建的容器ID。

docker ps -a -q

2.2、inspect

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

参数:

  • f :指定返回值的模板文件。
  • s :显示总的文件大小。
  • type :为指定类型返回JSON。

样例

  • 获取镜像mysql:latest的元信息。
docker inspect mysql:latest

  • 获取正在运行的容器mymysql的 IP。
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql

2.3、top

docker top:查看容器中运行的进程信息,支持 ps 命令参数。容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。

样例

  • 查看容器mysql的进程信息。
docker top mysql

2.4、attach

docker attach :连接到正在运行中的容器。要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。这不是我们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是可以带上–sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。

样例
容器mysql将访问日志指到标准输出,连接到容器查看访问信息。

docker attach --sig-proxy=false mysql

2.5、event

docker events : 从服务器获取实时事件

参数:

  • f :根据条件过滤事件;

  • since :从指定的时间戳后显示所有事件;

  • until :流水时间显示到指定的时间为止;

样例:

显示mysql镜像中2022年6月13日后的所有事件。

docker events -f image='mysql:latest' --since='2022-06-13'

2.6、logs

docker logs : 获取容器的日志

参数:

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

样例:

  • 持续输出容器mysql的日志,始终显示最后10行。
docker logs --tail=10 -f mysql

2.7、wait

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

docker wait mysql

2.8、export

docker export : 将文件系统作为一个tar归档文件导出到STDOUT。

参数:

  • o : 将输入内容写到文件。

样例:

  • 将name为mysql的容器按日期保存为tar文件。
docker export -o mysql-`date +%Y%m%d`.tar mysql

2.9、port

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

样例:
查看容器mysql的端口映射情况。

docker port mysql

3、容器rootfs命令

3.1、commit

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

参数:

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

样例:

  • 将容器4a47c082e672保存为新的镜像,并添加提交人信息和说明信息。
docker commit -a "know_something" -m "a new image of mysql"  4a47c082e672 mysql:latest

3.2、cp

docker cp :用于容器与主机之间的数据拷贝。

  • 将主机C:/Users/Admin/mysql/data目录拷贝到容器4a47c082e672 的/data目录下。
docker cp C:/Users/Admin/mysql/data 4a47c082e672:/data/
  • 将主机C:/Users/Admin/mysql/data目录拷贝到容器4a47c082e672 中,目录重命名为data。
docker cp C:/Users/Admin/mysql/data 4a47c082e672:/data
  • 将容器4a47c082e672 的/data目录拷贝到主机的C:/Users/Admin/mysql/目录中。
docker cp  4a47c082e672:/data C:/Users/Admin/mysql/tmp/

3.3、diff命令

docker diff : 查看容器里文件结构。

样例:

  • 查看容器mysql的文件结构。
docker diff mysql

4、镜像仓库

4.1、login/logout

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

参数:

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

样例
登陆到Docker Hub,账号密码可以自己去官网注册一个:https://hub.docker.com/

docker login -u 用户名 -p 密码

docker logout

4.2、push

docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库,即4.1的login要先执行。

参数:

  • disable-content-trust :忽略镜像的校验,默认开启

样例
上传本地镜像mysql:latest到镜像仓库中。

docker push mysql:latest

有点奇怪,居然要打标签才会上传成功,图中的用户名是自己注册的dockerhub的用户名。

4.3、pull

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

参数:

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

样例:

  • 从Docker Hub下载mysql最新版镜像。
docker pull mysql

第一次下载的时候很慢,500多M等了几分钟,下载之后,同样的pull指令,docker不会再下载一遍,而是更新。

4.4、search

docker search : 从Docker Hub查找镜像

参数:

  • automated :只列出 automated build类型的镜像;
  • no-trunc :显示完整的镜像描述;
  • f <过滤条件>:列出收藏数不小于指定值的镜像。

样例:

  • 从 Docker Hub 查找所有镜像名包含mysql,并且收藏数大于 10 的镜像
docker search -f stars=10 mysql


图中的参数说明:

  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。
  • OFFICIAL: 是否 docker 官方发布
  • AUTOMATED: 自动构建。

5、本地镜像管理

5.1、images

docker images : 列出本地镜像。

参数:

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

样例:

  • 查看本地镜像列表。
docker images

  • 列出本地镜像中REPOSITORY为mysql的镜像列表。
docker images mysql

5.2、tag

docker tag : 标记本地镜像,将其归入某一仓库。

样例:

  • 将镜像 mysql:latest 标记为 tag/mysql:v1 镜像。
docker tag mysql:latest tag/mysql:v1

5.3、rmi

docker rmi : 删除本地一个或多个镜像。

参数:

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

样例:

  • 强制删除本地镜像tag/mysql:v1。
docker rmi -f tag/mysql:v1

5.4、build

docker build 命令用于使用 Dockerfile 创建镜像。

参数:

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

样例:

  • 使用当前目录的 Dockerfile 创建镜像,标签为mysql:5.7。
    Dockerfile的内容
FROM hub.c.163.com/library/mysql
RUN echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf
RUN service mysql restart
EXPOSE 3306
docker build -t mysql:latest .

  • 通过 -f Dockerfile 文件的位置:
docker build -f /path/to/a/Dockerfile .

5.5、history

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

参数:

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

样例:

  • 查看本地镜像mysql/v1的创建历史。
docker history mysql:v1

5.6、save

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

参数:

  • o :输出的文件。

样例

  • 将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
docker save -o mysql_v1.tar mysql:v1

5.7、load

docker load : 导入使用 docker save 命令导出的镜像。

参数:

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

样例:

  • 导入镜像:
docker load --input fedora.tar
docker images

5.8、import

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

参数:

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

样例:

  • 从镜像文件mysql_v1.tar创建镜像,命名为mysql:v2
docker import mysql_v1.tar mysql:v2

6、查看信息

6.1、info

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

实例

  • 查看docker系统信息。
docker info

6.2、version

ocker version :显示 Docker 版本信息。

参数:

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

样例:

  • 显示 Docker 版本信息。
docker version

  • 输出 docker server 的版本信息。
docker version -f {{.Server.Version}}

docker命令大全 随笔日记相关推荐

  1. docker命令大全英文版在线手册

    docker命令大全英文版在线手册 attach Attach local standard input, output, and error streams to a running contain ...

  2. docker命令大全(新手必备)

    文章目录 一.命令图谱 二.基本命令 三.镜像命令 `docker images` `docker pull` `docker rmi` `docker run` `docker build` 构建时 ...

  3. docker命令大全以及常用写法举例

    内容来自公众号赫连小伍,转载请注明出处 login:登录到远程仓库 search:从远程仓库搜索镜像 push:把本地镜像推送到远程仓库 pull:从远程仓库拉取或更新镜像 images:显示所有镜像 ...

  4. 风清扬自学日记(2)——docker命令大全

    容器生命周期管理命令 run 创建一个新的容器. # 使用docker镜像nginx:latest以后台模式启动一个容器,# 并将容器命名为mynginx. docker run --name myn ...

  5. Docker(四):Docker 命令大全

    容器生命周期管理 docker run :创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: -a ...

  6. docker命令大全

    1. 查看docker信息(version.info) # 查看docker版本   $docker version   # 显示docker系统的信息   $docker info   2.对ima ...

  7. docker 命令大全

    目录 基础命令 搜索镜像 下拉镜像 显示镜像列表 删除未使用镜像 修改tag 删除镜像 启动容器 查看容器 进入容器 退出容器 暂停容器 删除容器 重启重启 关闭容器a: docker stop a启 ...

  8. 吊打面试官系列之:进阶必会Docker命令大全,怎么跟我想象的不一样,简直太easy了。

    Docker必会操作命令 1.引言 2.基本命令 3. 镜像命令 3.1 基本操作 3.1.1 查看本地镜像 3.1.2 下载镜像 3.1.3 删除non镜像 3.1.4 制作镜像 3.2 拉取最新镜 ...

  9. docker下载安装,命令大全

    Docker 官网                        Github Docker 源码 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2 ...

最新文章

  1. Tensorrt一些优化技术介绍
  2. 自由自在公司休闲食品让生活进入“休闲时代“
  3. 在geth客户端调用已部署的智能合约
  4. 通过迭代(非递归)及递归将单链表逆序
  5. TurboMail邮件系统实用技巧十四:如何知道对方已经读信
  6. Bash shell 学习笔记六
  7. vue.js中mock本地json数据
  8. 好文推荐 | 从数据的属性看数据资产
  9. 软考网络管理员学习笔记7之第七章网络管理技术
  10. iOS:位置相关(18-03-09更)
  11. 错误:invalid_client没有应用程序名称
  12. opencv美颜磨皮
  13. cocos2d-基本概念(5)-Effects 效果
  14. cmd链接php mysql数据库_php连接mysql数据库_cmd连接mysql数据库 - MySQL最新手册教程 - php中文网手册...
  15. java ipv6 转换_Java中Ipv4与Ipv6的转换
  16. RNA甲基化修饰m6A检测热门技术—MeRIP-seq
  17. VS2019的C++项目如何查看源文件(.h,.cc.cpp等)所在的工程
  18. 开源)Java生成二维码分享海报
  19. 史上最全Android版本号信息:)_我是亲民_新浪博客
  20. 电位计,电子尺0-5欧姆或0-50欧姆转换成电流电压0-10MA/0-10V转换器,隔离器

热门文章

  1. @ConfigrationProperties + @EnableConfigrationProperties
  2. 判断一句话是否中文或者英文
  3. 技术突破!国产操作系统麒麟加强版发布
  4. Corel VideoStudio会声会影2020免费版+汉化包+序列号PC端电脑下载
  5. CCS8.0和XDS100V3仿真器连接目标板失败的解决办法
  6. 大量的if!=null_获得大量精彩游戏,并支持伟大事业!
  7. Magento热销产品Luxe_Bestsellers使用教程
  8. 董付国老师python教学——学习笔记(一)
  9. ARM与嵌入式Linux的入门建议
  10. 集合类框架的常用类比