docker命令详解

Docker基本命令

  • docker ps

docker ps命令会列出所有运行中的容器。这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用下面这个命令。

docker ps -a 

 

  • docker images

docker images命令会列出了所有顶层top-level镜像。实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层top-level镜像,并且每一个顶层镜像下面都隐藏了多个镜像层
 

docker images -a
 该命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。
  • docker stop <container-id>

docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。

  • docker kill <container-id>

docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。

  • docker pause <container-id>

docker stop和docker kill命令会发送UNIX的信号给运行中的进程,docker pause命令则不一样,它利用了cgroups的特性将运行中的进程空间暂停。

  • docker rm <container-id>

该命令会移除构成容器的可读写层。注意,这个命令只能对非运行状态容器执行。

  • doccker rmi <image-id>

docker rmi命令会移除构成镜像的一个只读层。你只能够使用docker rmi来移除最顶层top level layer(也可以说是镜像),你也可以使用-f参数来强制删除中间的只读层。

  • docker commit <container-id>

该命令将容器的可读性转换为了一个只读层,这样就把一个容器转换成了不可变的镜像。

  • docker build

构建

  • docker exec <running-container-id>

该命令会在运行中的容器执行一个新的进程

  • docker inspect <container-id> or <image-id>

docker inspect命令会提取出容器或者镜像最顶层的元数据。

  • docker save <image-id>

该命令会创建一个镜像的压缩文件,这个文件能够在;另外一个主机的docker上使用。和export命令不同,这个命令为每一个层都保存了他们的元数据。这个命令只能对镜像生效。

  • docker export <container-id>

该命令会创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容

  • docker history <image-id>

这个命令递归的输出指定镜像的历史镜像。

  • 删除所有终止的容器

docker rm $(docker ps -a -q)

docker基本命令

    1. 查看docker信息
# 查看版本
docker version

#显示docker系统信息
docker info
  • 2.对image的操作
# 检索image
docker search image_name

# 下载image
docker pull image_name

# 列出镜像列表
# -a 展示所有image; -q 仅展示id, 
docker images

# 删除一个或多个镜像
# -f 强制,
docker rmi image_nmae

# 显示一个镜像的历史
docker history image_nmae


启动容器

OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

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

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

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

# 在容器中运行echo命令,输出hello word
docker run image_name echo "hello word"

# 交互式进入容器中
docker run -i -t image_name /bin/bash

# 在容器中安装新的程序
docker run image_name yum install -y app_name

Note: 在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

查看容器

1. 最常见的用法

$ docker ps

显示当前正在运行的容器。

在 PORTS 一列,如果暴露的端口是连续的,还会被合并在一起,例如一个容器暴露了3个 TCP 端口:100,101,102,则会显示为 100-102/tcp。

2. 显示所有状态的容器

$ docker ps -a

容器的状态共有 7 种:created|restarting|running|removing|paused|exited|dead。

3. 显示最后被创建的 n 个容器

$ docker ps -n 3

注意,这里不限状态。

4. 显示最后被创建的容器

$ docker ps -l

相当于 docker ps -n 1。

5. 显示完整输出

$ docker ps --no-trunc

即不会截断输出。该选项有点长,其中 trunc 算是 truncate 的缩写。

6. 只显示容器 ID

$ docker ps -q

清理容器时非常好用,filter 过滤显示一节有具体实例。

7. 显示容器文件大小

$ docker ps -s

该命令很实用,可以获得 2 个数值:一个是容器真实增加的大小,一个是整个容器的虚拟大小。


8 -f
1. 选项后跟的都是键值对 key=value (可不带引号),如果有多个过滤条件,就多次使用 filter 选项。例如:

docker ps --filter id=a1b2c3 --filter name=bingohuang

2. 相同条件之间的关系是或,不同条件之间的关系是与。例如:

docker ps --filter name=bingo --filter name=huang --filter status=running

以上过滤条件会找出 name 包含 bingo 或 huang 并且 status 为 running 的容器。

3. id 和 name,支持正则表达式,使用起来非常灵活。例如:

docker ps --filter name=^/bingohuang$

精确匹配 name 为 bingohuang 的容器。注意,容器实际名称,开头是有一个正斜线 / ,可用 docker inspect 一看便知。

docker ps --filter name=.*bingohuang.*

匹配 name 包含 bingohuang 的容器,和 --filter name=bingohuang 一个效果。

最后, 举一个复杂点的例子,用于清理名称包含 bingohuang,且状态为 exited 或 dead 的容器:

docker rm $(docker ps -q --filter name=.*bingohuang.* --filter status=exited --filter status=dead2>/dev/null)

Format 格式化显示

如果想自定义显示容器字段,可以用格式化选项 --format 。
1. 当使用了 --format 选项,那么 ps 命令只会输出 template 中指定的内容:

$ docker ps --format "{{.ID}}: {{.Command}}"

a87ecb4f327c: /bin/sh -c #(nop) MA

01946d9d34d8: /bin/sh -c #(nop) MA

c1d3b0166030: /bin/sh -c yum -y up

41d50ecd2f57:/bin/sh -c #(nop) MA

2. 如果想带上表格列头,需要再 template 中加上 table 指令:

保存对容器的修改

  • 当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。
#  -a  作者信息, -m 提交的信息
docker commit ID new_image_name

Note:image相当于类,container相当于实例,不过可以动态给实例安装新软件,然后把这个container用commit命令固化成一个image。

对容器的操作(注意是容器,不是镜像)

# 删除所有容器
docker rm `docker ps -a -q`

# 删除镜像,注意,需要先删除容器,并且删除前需要保证容器时停止的,然后才能删除镜像.
docker rmi image_id




#删除单个容器;- f 强制;-l, 删除指定的链接,而不是底层容器;-v 删除与容器关联的卷
docker rm Name/ID

# 停止、启动、杀死一个容器
docker stop Name/ID
docker start Name/ID
docker kill Name/ID

# 从一个容器中获取日志
# -f ,-t 展示时间戳

# 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的, D 删除的 ,C 被改变的
docker diff Name/ID

# 显示一个运行的容器里面的进程信息
docker top Name/ID

# 从容器里面拷贝文件、目录到本地一个路径
docker restart Name/ID

# 附加到一个运行的容器上面
#--detach-keys string  覆盖用于分离容器的键序列
#--no-stdin            没有附加STDIN
#--sig-proxy           代理所有接收到的信号到进程(默认为true)


保存和加载镜像

  • 当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。
# 保存镜像到一个tar包;-o filename  写入到这个文件。
docker save image_name -o file_path

# 加载一个tar包格式的镜像; -i --input="" read from a tar archive file
docker load -i file_path

# 机器a
docker save image_name > /home/save.tar

# 使用scp将save.tar拷到机器b上
docker load < /home/save.tar



8.登录registry server


# 登陆registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username  
$docker login  
登录成功后会在用户目录下的.docker目录中有一个config.json文件,里面保存了用户的信息.

9. 发布image

docker push new_image_name

10. 根据Dockerfile构建出一个容器

      --add-host list           添加自定义主机到ip映射(主机:ip)
      --build-arg list          设置构建时变量
      --cache-from strings      将图像视为缓存源
      --cgroup-parent string    可选的容器父cgroup
      --compress                使用gzip压缩构建上下文
      --cpu-period int          限制CPU CFS(完全公平调度程序)的周期
      --cpu-quota int           限制CPU CFS(完全公平调度程序)配额
  -c, --cpu-shares int          CPU份额(相对权重)
      --cpuset-cpus string      允许执行的cpu (0- 3,0,1)
      --cpuset-mems string      允许执行的MEMs (0- 3,0,1)
      --disable-content-trust   跳过图像验证(默认为true)
  -f, --file string             Dockerfile的名称(默认为‘PATH/Dockerfile’)
      --force-rm                总是移除中间容器
      --iidfile string          将图像ID写入文件
      --isolation string        容器隔离技术
      --label list              为图像设置元数据
  -m, --memory bytes            内存限制
      --memory-swap bytes       交换限制等于内存加上交换:'-1'以启用无限交换
      --network string          在构建期间为运行指令设置网络模式(默认“默认”)
      --no-cache                在构建映像时不使用缓存
      --pull                    总是尝试拉出图像的新版本
  -q, --quiet                   成功时禁止生成输出和打印图像ID
      --rm                      成功构建后删除中间容器(默认为true)
      --security-opt strings    安全选项
      --shm-size bytes          /dev/shm大小
  -t, --tag list                名称和可选的“Name:tag”格式的标记
      --target string           设置要构建的目标构建阶段。
      --ulimit ulimit           Ulimit选项(默认[])
      
      
docker build -t image_name Dockerfile_path

为镜像打印标记

dcoker tag server:latest myname/server:lastest
or
docker tag d583c3ac45fd myname/server:latest

# https://blog.csdn.net/yangshangwei/article/details/52799675



最后欢迎大家批评指正,您的建议就是我前进的动力。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值