一、帮助命令

docker version
docker info
# 重要
docker --help

可以使用docker COMMAND --help 查看某个命令具体如何使用。

二、镜像命令

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

各个选项说明:
  REPOSITORY:表示镜像的仓库源
  TAG:镜像的标签
  IMAGE ID:镜像ID
  CREATED:镜像创建时间
  SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

#列出本地所有的镜像(含中间映像层)
docker images -a # 只显示镜像ID
docker images -q # 显示镜像的摘要信息
docker images --digests # 显示完整的镜像信息
docker images --no-trunc

2. docker search 某个XXX镜像名字

注:从镜像仓库 https://hub.docker.com 搜索

# docker search [OPTIONS] 镜像名字

# 显示完整的镜像描述
docker search --no-trunc tomcat # 较为重要:列出收藏数不小于指定值的镜像。
docker search -s 30 tomcat # 只列出 automated build类型的镜像
docker search --automated tomcat

3. docker pull 某个XXX镜像名字

下载镜像

docker pull 镜像名字[:TAG]

如果不加TAG,默认拉取的是镜像名字:latest(即最新版本)

4. docker rmi 某个XXX镜像名字ID

删除镜像

(1) 删除单个

  docker rmi -f 镜像ID

注:不加:TAG,默认删除的是:latest

(2) 删除多个

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

(3) 删除全部

  docker rmi -f $(docker images -qa)

三、容器命令

有镜像才能常见容器,拉取镜像测试:docker pull centos

1. 新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# OPTIONS说明(常用):有些是一个减号,有些是两个减号
# --name="容器新名字": 为容器指定一个名称;
# -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
# -i:以交互模式运行容器,通常与 -t 同时使用;
# -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# -P: 随机端口映射;
# -p: 指定端口映射,有以下四种格式
# ip:hostPort:containerPort
# ip::containerPort
# hostPort:containerPort
# containerPort

启动交互式容器:

“root@1b7d3abdedd8”说明已进入到容器ID为1b7d3abdedd8的一个终端。

较为完整的 docker run 选项:

     --add-host list                  添加自定义主机到IP映射(主机:IP)
-a, --attach list 连接到stdin、stdout或stderr
--blkio-weight uint16 块IO(相对权重),介于10到1000之间,或0到禁用(默认为0)
--blkio-weight-device list 块IO权重(相对设备权重)(默认值[])
--cap-add list 添加Linux功能
--cap-drop list 放弃Linux功能
--cgroup-parent string 容器的可选父cgroup
--cidfile string 将容器id写入文件
--cpu-period int 限制CPU CFS(完全公平调度程序)周期
--cpu-quota int 限制CPU CFS(完全公平调度程序)配额
--cpu-rt-period int 限制CPU实时周期(微秒)
--cpu-rt-runtime int 限制CPU实时运行时间(微秒)
-c, --cpu-shares int CPU共享(相对权重)
--cpus decimal CPU数量
--cpuset-cpus string 允许执行的CPU(-、、)
--cpuset-mems string 允许执行的微机电系统(-、、)
-d, --detach 在后台运行容器并打印容器ID
--detach-keys string 重写用于分离容器的键序列
--device list 将主机设备添加到容器
--device-cgroup-rule list 将规则添加到cgroup allowed devices列表
--device-read-bps list 限制设备的读取速率(字节/秒)(默认为[])
--device-read-iops list 限制设备的读取速率(IO/秒)(默认值[])
--device-write-bps list 限制对设备的写入速率(字节/秒)(默认值[])
--device-write-iops list 限制设备的写入速率(IO/秒)(默认值[])
--disable-content-trust 跳过图像验证(默认为true)
--dns list 设置自定义DNS服务器
--dns-option list 设置DNS选项
--dns-search list 设置自定义DNS搜索域
--domainname string 容器NIS域名
--entrypoint string 覆盖图像的默认入口点
-e, --env list 设置环境变量
--env-file list 读取环境变量文件
--expose list 公开一个或一系列端口
--gpus gpu-request 要添加到容器的GPU设备(“all”用于传递所有GPU)
--group-add list 添加要加入的其他组
--health-cmd string 运行以检查运行状况的命令
--health-interval duration 运行检查之间的时间(m s s m h)(默认为0s)
--health-retries int 需要连续失败才能报告不正常
--health-start-period duration 开始运行状况重试倒计时之前容器初始化的开始时间
(m s s m h)(默认为0)
--health-timeout duration 允许一个检查运行的最大时间(ms s m m h)(默认值0)
--help 打印使用
-h, --hostname string 容器主机名
--init 在转发信号和获取进程的容器中运行init
-i, --interactive 即使没有连接,也保持stdin打开
--ip string IPv4地址(例如172.30.100.)
--ip6 string IPv6地址(例如,:db8::)
--ipc string 要使用的IPC模式
--isolation string 集装箱隔离技术
--kernel-memory bytes 内核内存限制
-l, --label list 在容器上设置元数据
--label-file list 读取以行分隔的标签文件
--link list 将链接添加到另一个容器
--link-local-ip list 容器IPv4/IPv6链路本地地址
--log-driver string 容器的日志驱动程序
--log-opt list 日志驱动程序选项
--mac-address string 容器MAC地址(例如92:d0:c6:0a::)
-m, --memory bytes 记忆极限
--memory-reservation bytes 存储器软限制
--memory-swap bytes 交换限制等于内存加交换:'-1'以启用无限制交换
--memory-swappiness int 调整容器内存交换(0到100)(默认-)
--mount mount 将文件系统装载附加到容器
--name string 为容器指定名称
--network network 将容器连接到网络
--network-alias list 为容器添加网络范围的别名
--no-healthcheck 禁用任何容器指定的运行状况检查
--oom-kill-disable 禁用OOM杀手
--oom-score-adj int 调整主机的OOM首选项(-1000到1000)
--pid string 要使用的PID命名空间
--pids-limit int 调整容器PIDS限制(设置-1表示无限制)
--privileged 授予此容器扩展权限
-p, --publish list 将容器的端口发布到主机
-P, --publish-all 将所有公开的端口发布到随机端口
--read-only 将容器的根文件系统装载为只读
--restart string 重新启动策略以在容器退出时应用(默认为“否”)
--rm 容器退出时自动拆卸
--runtime string 用于此容器的运行时
--security-opt list 安全选项
--shm-size bytes /dev/shm的大小
--sig-proxy 代理接收到进程的信号(默认为true)
--stop-signal string 停止容器的信号(默认为“sigterm”)
--stop-timeout int 停止容器超时(秒)
--storage-opt list 容器的存储驱动程序选项
--sysctl map sysctl选项(默认映射[])
--tmpfs list 装入tmpfs目录
-t, --tty 分配一个伪tty
--ulimit ulimit ulimit选项(默认值[])
-u, --user string 用户名或uid(格式:<name uid>[:<group gid>])
--userns string 要使用的用户命名空间
--uts string 要使用的uts命名空间
-v, --volume list 绑定装入卷
--volume-driver string 容器的可选卷驱动程序
--volumes-from list 从指定容器装入卷
-w, --workdir string 容器内的工作目录

2. 列出当前所有正在运行的容器

docker ps [OPTIONS]
# OPTIONS说明(常用):
# -a :列出当前所有正在运行的容器+历史上运行过的。 eg: docker ps -a
# -l :显示最近创建的容器。 eg: docker ps -l
# -n:显示最近n个创建的容器。 eg: docker ps -n 3
# -q :静默模式,只显示容器编号。 eg: docker ps -q
# --no-trunc :不截断输出。 eg: docker ps --no-trunc

CONTAINER ID:容器ID,如上面启动交互式容器的那一个字符串

IMAGE:镜像ID

CREATED:创建时间

STATUS:状态,Up表示正在运行,Exited表示已停止退出

PORTS:映射端口

NAMES:容器名字,可以自己指定

3. 退出容器

# 两种退出方式
# 第一种:容器停止退出,在容器终端输入exit
# 第二种:容器不停止退出,在容器终端按Ctrl+P+Q

第二种退出方式:

4. 启动容器

# docker start 容器ID或者容器名
docker start 1b7d3abdedd8

原因:docker服务启动时定义的自定义链DOCKER由于某种原因被清掉,重启docker服务即可重新生成自定义链DOCKER。

# 重启docker服务后再启动容器
systemctl restart docker
docker start 1b7d3abdedd8

5. 重启容器

# docker restart 容器ID或者容器名
docker restart 1b7d3abdedd8

6. 停止容器

# docker stop 容器ID或者容器名
docker stop 1b7d3abdedd8

7. 强制停止容器

# docker kill 容器ID或者容器名
docker kill 1b7d3abdedd8

8. 删除已停止的容器

# docker rm 容器ID
docker rm 1b7d3abdedd8 # 强制删除
docker rm -f 1b7d3abdedd8 # 一次性删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

9. 启动守护式容器

docker run -d 容器名

问题:docker ps -a 进行查看, 会发现容器已经退出

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

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

这是docker的机制问题,容器后台启动后,会立即自杀,因为他觉得他没事可做了。

所以,我们只要不让容器自动退出就行。

# 以后台模式运行centos:docker run -d centos
# /bin/bash -c "while true;do echo hello zzyy;sleep 2;done" 循环打印
# eg:docker run -d tomcat /bin/bash -c "while true;do echo hello linhw;sleep 2;done"
docker run -d centos /bin/bash -c "while true;do echo hello linhw;sleep 2;done"

10. 查看容器日志

# docker logs -f -t --tail 容器ID
# 选项说明
# -t 是加入时间戳
# -f 跟随最新的日志打印
# --tail 数字 显示最后多少条
docker logs -f -t --tail 3 1b652326460e

11. 查看容器内运行的进程

docker top 容器ID

12. 查看容器内部细节

docker inspect 容器ID

13. 进入正在运行的容器并以命令行交互

# 第一种:docker exec -it 容器ID bashShell
# 进入容器:docker exec -it 1b652326460e
# 执行命令: ls -l /tmp/,这种不会进入容器终端命令行
docker exec -it 1b652326460e ls -l /tmp/ # 会进入到容器终端命令行
docker exec -it 1b652326460e /bin/bash
# 第二种:docker attach 容器ID
docker attach 1b652326460e

两者的差别:

  • attach 直接进入容器启动命令的终端,不会启动新的进程
  • exec 是在容器中打开新的终端,并且可以启动新的进程

14. 从容器内拷贝文件到主机上

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

15. 从主机上拷贝到容器内

#docker cp 本地文件路径 容器ID:容器内路径
docker cp /var/fdfs/01.jpg e06f2fd36ee4:/var/fdfs/

四、命令总结

attach    # 当前 shell 下 attach 连接指定运行镜像
build # 通过 Dockerfile 定制镜像
commit # 提交当前容器为新的镜像
cp #从容器中拷贝指定文件或者目录到宿主机中
create # 创建一个新的容器,同 run,但不启动容器
diff # 查看 docker 容器变化
events # 从 docker 服务获取容器实时事件
exec # 在已存在的容器上运行命令
export # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history # 展示一个镜像形成历史
images # 列出系统当前镜像
import # 从tar包中的内容创建一个新的文件系统映像[对应export]
info # 显示系统相关信息
inspect # 查看容器详细信息
kill # kill 指定 docker 容器
load # 从一个 tar 包中加载一个镜像[对应 save]
login # 注册或者登陆一个 docker 源服务器
logout # 从当前 Docker registry 退出
logs # 输出当前容器日志信息
port # 查看映射端口对应的容器内部源端口
pause # 暂停容器
ps # 列出容器列表
pull # 从docker镜像源服务器拉取指定镜像或者库镜像
push # 推送指定镜像或者库镜像至docker源服务器
restart # 重启运行的容器
rm # 移除一个或者多个容器
rmi # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run # 创建一个新的容器并运行一个命令
save # 保存一个镜像为一个 tar 包[对应 load]
search # 在 docker hub 中搜索镜像
start # 启动容器
stop # 停止容器
tag # 给源中镜像打标签
top # 查看容器中运行的进程信息
unpause # 取消暂停容器
version # 查看 docker 版本号
wait # 截取容器停止时的退出状态值

Docker常用命令(五)的更多相关文章

  1. docker常用命令、镜像命令、容器命令、数据卷,使用dockerFile创建镜像,dockefile的语法规则。

    一.docker常用命令? 1. 常用帮助命令 1.1 docker的信息以及版本号 /* docker info 查看docker的信息 images2 docker本身就是一个镜像. docker ...

  2. 关于Docker 常用命令

    Docker 常用命令 分类列一下常用的CLI命令 仓库相关 search/ pull / push / login etc. 例:docker pull ubuntu 从仓库下载ubuntuimag ...

  3. 【Docker】(3)---linux部署Docker、Docker常用命令

    linux部署Docker.Docker常用命令 本次部署Linux版本:CentOS 7.4 64位. 说明: 因为Docker是基于Linux 64bit的 所以Docker要求64位的系统且内核 ...

  4. Docker常用命令(二)

    Docker常用命令 查看Docker所有正在运行的容器 docker ps 查看Docker已退出的容器 docker ps -a 查看Docker所有镜像 docker images 删除镜像 删 ...

  5. Docker应用二:docker常用命令介绍

     Docker常用命令使用介绍 docker中常用的命令: 1.docker search image_name:搜查镜像 2.docker pull image_name:从镜像库中拉去镜像 3.d ...

  6. Docker常用命令汇总,和常用操作举例

    Docker命令 docker 常用命令如下 管理命令: container 管理容器 image 管理镜像 network 管理网络 node 管理Swarm节点 plugin 管理插件 secre ...

  7. 1021 docker常用命令和Jenkins搭建

    docker常用命令 1.镜像管理 docker pull (镜像名) # 默认拉取最新版本的镜像 docker pull (镜像名:版本号) #拉取指定版本的镜像 docker push (镜像名) ...

  8. Docker 常用命令——镜像

    Docker 常用命令 帮助命令 docker version    --版本信息 docker info       --详细信息 docker --help     --帮助 镜像命令 1.doc ...

  9. docker 常用 命令

    http://os.51cto.com/art/201409/451117.htm 2.1 在测试机启动容器,安装ssh docker run -i -t ubuntu /bin/bash #此方式运 ...

  10. Docker 常用命令总结

    Docker 常用命令总结   回到顶部 镜像相关 搜索 docker search *image_name* 下载 docker pull *image_name* 查看 docker images ...

随机推荐

  1. 为什么用时序电路实现CPU

    时序电路 我们带着如下疑问来看时序电路: 1.为什么CPU要用时序电路,时序电路与普通逻辑电路有什么区别. 2.触发器.锁存器以及时钟脉冲对时序电路的作用是什么,它们是如何工作的. 带着这两个问题,我 ...

  2. vue 使用key唯一令牌解决表单值混乱

    vue在渲染元素时,出于效率考虑,会尽可能地复用已有元素的而非重新渲染,如果你不希望这样可以使用Vue中提供的key属性,它可以让你决定是否要复用元素,key值必须是唯一的 代码: <!doct ...

  3. 关于 Noip的考纲

    关于 \(\text{Noip}\) 的考纲 先放一张图 : 此图包含了 \(\text{Noip}\) 自开始到结束 的所有真题的考察知识点 算法分类标准主要来自于 \(\text{Luogu}\) ...

  4. Luogu P5022 旅行

    开始写复赛题了 先放张图纪念我惨烈的卡常之路 不说了,简直悲伤 题目链接 思路么..不想写了 Code //不要在意四十行超级加速,卡常用的 #include<bits/stdc++.h> ...

  5. VBA实战 - 一个简单的 httplib

    概要 VBA 的应用场景基本都还是在单机应用, 随着 Web 应用的风靡, 以及浏览器越来越强大, 单机类的应用逐渐没落. 虽然 Web 应用越来越多, 功能和体验也越来越好, 但是 Excel 依然 ...

  6. Python连载19-装饰器

    一.检视一个函数相同的另一种方法 利用属性:函数._name def hello(): print("我是一个测试程序") f = hello print(f.__name__) ...

  7. 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇

    本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<三>弱网优化>,感谢原作者的无私分享. 一.前言 网络优化解决的核心问题有三个 ...

  8. Composer 的安装

    最近在家休息了两个月,本来打算看看书,结果和朋友做了个小项目.项目也差不多接近尾声了,就准备找工作了,朋友推荐我去他们公司做事,不过是使用 PHP 进行开发了.我这一年来使用 Java 进行开发,今后 ...

  9. 计算机基础 ---- 编码(er)

    1.字符集与编码 字符集:字符组成的集合,汉字,字母,符号被收录到标准的字符集合 编码:规定每个字符使用一个字节还是多个字节存储,那些字节来存储的规定 术语:字符编码(character encodi ...

  10. redis命令之 ----SortedSed(有序集合)

    ZADD ZADD key score member [[score member] [score member] ...] 将一个或多个 member 元素及其 score 值加入到有序集 key  ...