请选择 进入手机版 | 继续访问电脑版

常用的Docker下令 及示例汇总分析

[复制链接]
查看160 | 回复21 | 2021-9-13 18:41:49 | 显示全部楼层 |阅读模式
目次

1、容器生命周期管理

(1)docker run

下令 阐明
    创建一个新的容器并运行一个下令
语法

  1. docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
复制代码

OPTIONS阐明 :

  1. -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  2. -d: 后台运行容器,并返回容器ID;
  3. -i: 以交互模式运行容器,通常与 -t 同时使用;
  4. -P: 随机端口映射,容器内部端口随机映射到主机的端口
  5. -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  6. -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  7. --name="nginx-lb": 为容器指定一个名称;
  8. --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  9. --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  10. -h "mars": 指定容器的hostname;
  11. -e username="ritchie": 设置环境变量;
  12. --env-file=[]: 从指定文件读入环境变量;
  13. --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
  14. -m :设置容器使用内存最大值;
  15. --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  16. --link=[]: 添加链接到另一个容器;
  17. --expose=[]: 开放一个端口或一组端口;
  18. --volume , -v: 绑定一个卷
复制代码

常用实例

使用 docker镜像fate:latest以后台模式启动一个容器,并将容器定名 为myfate。

  1. docker run --name myfate -d fate:latest
复制代码

使用 镜像fate:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。

  1. docker run -P -d fate:latest
复制代码

使用 镜像 fate:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目次 /data 映射到容器的 /data。

  1. docker run -p 80:80 -v /data:/data -d fate:latest
复制代码

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

  1. $ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
复制代码

使用 镜像fate:latest以交互模式启动一个容器,在容器内实行 /bin/bash下令 。

  1. wh@wh-pc:~$ docker run -it fate:latest /bin/bash
  2. root@b8573233d675:/#
复制代码

(2)start/stop/restart

下令 阐明 :
   

  1.  docker start
复制代码
:启动一个或多个已经被制止 的容器
   
  1.  docker stop
复制代码
:制止 一个运行中的容器
   
  1. docker restart
复制代码
:重启容器
使用 方法:
    启动已被制止 的容器myfate

  1. docker start myfate
复制代码

    制止 运行中的容器myfate

  1. docker stop myfate
复制代码

    重启容器myfate

  1. docker restart myfate
复制代码

(3)docker kill

下令 阐明
    杀掉一个运行中的容器。
实例
    杀掉运行中的容器myfate

  1. wh@wh-pc:~$ docker kill -s KILL myfate
复制代码

(4)docker rm

下令 阐明
    删除一个或多个容器
语法

  1. docker rm [OPTIONS] CONTAINER [CONTAINER…]
复制代码

OPTIONS阐明 :

  1. -f :通过 SIGKILL 信号强制删除一个运行中的容器。
  2. -l :移除容器间的网络连接,而非容器本身。
  3. -v :删除与容器关联的卷。
复制代码

常用实例

逼迫 删除容器 fate01、fate02:

  1. docker rm -f fate01 fate02
复制代码

移除容器 fate01 对容器 fate02 的毗连 ,毗连 名 db:

  1. docker rm -l db
复制代码

删除容器 fate, 并删除容器挂载的数据卷:

  1. docker rm -v fate
复制代码

删除全部 已经制止 的容器:

  1. docker rm $(docker ps -a -q)
复制代码

杀死全部 正在运行的容器

  1. docker kill $(docker ps -a -q)
复制代码

删除全部 已经制止 的容器

  1. docker rm $(docker ps -a -q)
复制代码

删除全部 未打 dangling 标签的镜像

  1. docker rmi $(docker images -q -f dangling=true)
复制代码

通过镜像的id来删除指定镜像

  1. docker rmi <image id>
复制代码

删除全部 镜像

  1. docker rmi $(docker images -q)
复制代码

(5)pause/unpause

下令 阐明

  1. docker pause
复制代码
:停息 容器中全部 的进程 。
  1. docker unpause
复制代码
:恢复容器中全部 的进程 。
语法

  1. docker pause CONTAINER [CONTAINER…]
  2. docker unpause CONTAINER [CONTAINER…]
复制代码

常用实例
停息 数据库容器fate提供服务。

  1. docker pause fate
复制代码

恢复数据库容器 fate 提供服务。

  1. docker unpause fate
复制代码

(6)create

下令 阐明

  1. docker create
复制代码
:创建一个新的容器但不启动它
用法同 docker run
语法

  1. docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
  2. 语法同 docker run
复制代码

常用实例
使用 docker镜像fate:latest创建一个容器,并将容器定名 为myfate

  1. wh@wh-pc:~$ docker create --name myfate fate:latest
复制代码

(7)docker exec

下令 阐明
在运行的容器中实行 下令
语法

  1. docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
复制代码

OPTIONS阐明 :

  1. -d
复制代码
:分离模式: 在后台运行
  1. -i
复制代码
:即使没有附加也保持STDIN 打开
  1. -t
复制代码
:分配一个伪终端
常用实例
在容器 myfate中以交互模式实行 容器内 /root/init.sh 脚本:

  1. wh@wh-pc:~$ docker exec -it myfate /bin/sh /root/runoob.sh
复制代码

在容器 fate 中开启一个交互模式的终端:

  1. wh@:~$ docker exec -i -t myfate /bin/bash
复制代码

也可以通过 docker ps -a 下令 查看已经在运行的容器,然后使用 容器 ID 进入容器。
查看已经在运行的容器 ID:

  1. # docker ps -a
  2. ...
  3. 9df70f9a0714 openjdk "/usercode/script.sh…"
  4. ...
复制代码

第一列的 9df70f9a0714 就是容器 ID。
通过 exec 下令 对指定的容器实行 bash:

  1. # docker exec -it 9df70f9a0714 /bin/bash
复制代码

(8)docker ps

下令 阐明
列出容器
语法

  1. docker ps [OPTIONS]
复制代码

OPTIONS阐明 :

  1. -a
复制代码
:表现 全部 的容器,包括未运行的。
  1. -f
复制代码
:根据条件过滤表现 的内容。
  1. –format
复制代码
:指定返回值的模板文件。
  1. -l
复制代码
:表现 迩来 创建的容器。
  1. -n
复制代码
:列出迩来 创建的n个容器。
  1. –no-trunc
复制代码
:不截断输出。
  1. -q
复制代码
:静默模式,只表现 容器编号。
  1. -s
复制代码
:表现 总的文件大小。
常用实例
列出全部 在运行的容器信息。

  1. wh@wh-pc:~$ docker ps
  2. CONTAINER ID IMAGE COMMAND ... PORTS NAMES
  3. 09b93464c2f7 fate:latest "fate -g 'daemon off" ... 80/tcp, 443/tcp myfate
  4. 96f7f14e99ab mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql
复制代码

输出详情先容 :

  1. CONTAINER ID
复制代码
: 容器 ID。
  1. IMAGE
复制代码
: 使用 的镜像。
  1. COMMAND
复制代码
: 启动容器时运行的下令 。
  1. CREATED
复制代码
: 容器的创建时间。
  1. STATUS
复制代码
: 容器状态。

状态有7种:

  1. created
复制代码
(已创建)

  1. restarting
复制代码
(重启中)

  1. running
复制代码
(运行中)

  1. removing
复制代码
(迁徙 中)

  1. paused
复制代码
(停息 )

  1. exited
复制代码
(制止 )

  1. dead
复制代码
(殒命 )

  1. PORTS
复制代码
: 容器的端口信息和使用 的毗连 范例 (tcp\udp)。
  1. NAMES
复制代码
: 自动 分配的容器名称。

列出迩来 创建的5个容器信息。

  1. wh@whpc:~$ docker ps -n 5
  2. CONTAINER ID IMAGE COMMAND CREATED
  3. 09b93464c2f7 fate:latest "fate -g 'daemon off" 2 days ago ...
  4. b8573233d675 fate:latest "/bin/bash" 2 days ago ...
  5. b1a0703e41e7 fate:latest "fate -g 'daemon off" 2 days ago ...
  6. f46fb1dec520 5c6e1090e771 "/bin/sh -c 'set -x \t" 2 days ago ...
  7. a63b4a5597de 860c279d2fec "bash" 2 days ago ..
复制代码

根据标签过滤

  1. $ docker run -d --name=test-nginx --label color=blue nginx
  2. $ docker ps --filter "label=color"
  3. $ docker ps --filter "label=color=blue"
复制代码

根据名称过滤

  1. $ docker ps --filter"name=test-nginx"
复制代码

根据状态过滤

  1. $ docker ps -a --filter 'exited=0'
  2. $ docker ps --filter status=running
  3. $ docker ps --filter status=paused
复制代码

根据镜像过滤

  1. #镜像名称
  2. $ docker ps --filter ancestor=nginx
  3. #镜像ID
  4. $ docker ps --filter ancestor=d0e008c6cf02
复制代码

根据启动次序 过滤

  1. $ docker ps -f before=9c3527ed70ce
  2. $ docker ps -f since=6e63f6ff38b0
复制代码

(9)docker inspect

下令 阐明
docker inspect : 获取容器/镜像的元数据。
语法

  1. docker inspect [OPTIONS] NAME|ID [NAME|ID…]
复制代码

OPTIONS阐明 :

  1. -f
复制代码
:指定返回值的模板文件。
  1. -s
复制代码
:表现 总的文件大小。
  1. –type
复制代码
:为指定范例 返回JSON。

常用实例
获取镜像fate:1.6的元信息。

  1. wh@wh-pc:~$ docker inspect fate:1.6
  2. [
  3. {
  4. "Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec",
  5. "RepoTags": [
  6. "fate:1.6"
  7. ],
  8. "RepoDigests": [],
  9. "Parent": "",
  10. "Comment": "",
  11. "Created": "2016-05-24T04:01:41.168371815Z",
  12. "Container": "e0924bc460ff97787f34610115e9363e6363b30b8efa406e28eb495ab199ca54",
  13. "ContainerConfig": {
  14. "Hostname": "b0cf605c7757",
  15. "Domainname": "",
  16. "User": "",
  17. "AttachStdin": false,
  18. "AttachStdout": false,
  19. "AttachStderr": false,
  20. "ExposedPorts": {
  21. "3306/tcp": {}
  22. },
  23. ...
复制代码

获取正在运行的容器mymysql的 IP。

  1. wh@wh-pc:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' myfate
  2. 192.17.0.3
复制代码

(10)top

下令 阐明
查看容器中运行的进程 信息,支持 ps 下令 参数。
常用实例

  1. wh@wh-pc:~/mysql$ docker top mysql
  2. UID PID PPID C STIME TTY TIME CMD
  3. 999 40347 40331 18 00:58 ? 00:00:02 mysqld
复制代码

以上就是常用的Docker下令 及示例汇总分析的详细 内容,更多关于Docker下令 及示例汇总的资料请关注脚本之家别的 干系 文章!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 东阿制造 | 2021-9-21 06:43:04 | 显示全部楼层
收藏了,改天让朋友看看!
回复

使用道具 举报

avatar 123457264 | 2021-9-21 07:34:34 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,他卖的服务器是永久的,我们的网站用 服务器都是在这家买的,你可以去试试。访问地址:http://fwq.mxswl.com
回复

使用道具 举报

avatar 毛当归搜 | 2021-9-23 09:35:18 | 显示全部楼层
最近精神病院在打折,admin楼主去看看吧?
回复

使用道具 举报

avatar 潘金麟 | 2021-9-23 10:25:58 | 显示全部楼层
帖子很有深度!
回复

使用道具 举报

avatar 都市夜归人PLA | 2021-9-28 02:24:35 | 显示全部楼层
有品位!
回复

使用道具 举报

avatar 哪吒2017 | 2021-9-29 19:38:58 | 显示全部楼层
支持楼上的!
回复

使用道具 举报

avatar 方的豆豆 | 2021-10-3 05:39:30 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,影视频道的网站所有电影和连续剧都可以免费看的。访问地址:http://tv.mxswl.com
回复

使用道具 举报

avatar 123457010 | 2021-10-3 11:30:37 | 显示全部楼层
我对admin楼主的敬仰犹如滔滔江水绵延不绝!
回复

使用道具 举报

avatar 都市夜归人PLA | 2021-10-3 12:20:02 | 显示全部楼层
admin楼主英明!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则