Docker02-容器管理

在安装好docker引擎之后,启动docker服务。安装参考官网帮助文档【https://docs.docker.com/docker-for-mac/install/】

查看docker是否正常启动

docker info

如果返回类似如下输出,则说明docker服务正常。

Containers: 9Running: 0Paused: 0Stopped: 9
Images: 146
Server Version: 17.09.0-ce
Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
......

运行容器

使用docker run命令运行容器:

docker run -t -i ubuntu /bin/bash

-i :保证容器中的STDIN是开启的,让容器可以接受标准输入的字符

-t :为容器分配一个伪TTY终端,在控制台回显输出。-t 和 -i通常是成对出现的,实现容器的交互式shell,可合并简写为-ti。

ubuntu:镜像名称。

/bin/bash: 容器中运行的命令。

容器运行起来后,控制台就进入了容器的shell了:

root@8afa8dfa1abf:/#

PS: 如果你本地没有ubuntu的lastest镜像,第一次运行时会从docker registry中拉取镜像,会等待一定的时间。

现在,你可以在容器中做各种操作,就像是在和一个真正的ubuntu系统交互一样。

比如,运行hostname命令,查看hosts文件, 查看容器中的进程等等。

root@8afa8dfa1abf:/# hostname
8afa8dfa1abfroot@8afa8dfa1abf:/# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  8afa8dfa1abfroot@8afa8dfa1abf:/# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  18240  3364 pts/0    Ss   13:59   0:00 /bin/bash
root        13  0.0  0.0  34424  2808 pts/0    R+   14:07   0:00 ps -aux

最后,输入exit退出容器中的bash,一旦bash程序退出后,此时容器会停止。可以使用docker ps -a查看:

➜  ~ docker ps -a
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS                      PORTS               NAMES
8afa8dfa1abf        ubuntu                                                "/bin/bash"              10 minutes ago      Exited (0) 6 seconds ago                        admiring_banach

每个容器都是有唯一的名字的,如果docker run命令没有指定容器的名字,会自动生成一个随机的名称,这可能不是你想要的,可以使用–name参数来指定容器的名称。

docker run -ti --name ubuntu-container ubuntu /bin/bash

启动容器

如果一个容器当前在停止状态,可以使用docker start来重新启动这个容器

docker start ff70c91ddd44

我们有三中方式来指定容器:容器的短ID,长ID,容器名。上面的命令使用的是短ID。

所以,上面的重启命令等价于:

➜  ~ docker start  ubuntu-container
ubuntu-container

PS:在以后的示例中,均用容器名的这种方式。

通过docker start命令启动的容器,会沿用docker run指定的参数,因此ubuntu-container会运行一个交互式shell,那么如何进到这个交互式的shell中呢?可以通过docker attach命令来重新附着容器的会话上

➜  ~ docker attach ubuntu-container
root@ff70c91ddd44:/#

PS: 输入完命令后,可能需要多按下回车才能进入。

守护式容器

除了运行交互式容器外,也可以运行守护式容器,这种容器会长期运行,适用于应用程序和服务,大多数时候我们运行的容器是守护式的。在运行容器时,通过-d来标识位守护式容器。

➜  ~ docker run --name daemon-container -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
3e94fd41798262678623e689eff3d9277814796812b96ba59e5a3ff4423e2cd1

容器中运行一个while循环,不断的输出hello world。

使用-d参数时,只会返回一个容器ID,不知道容器内部在干什么?怎么查看容器的日志输出?使用docker logs命令可获取容器内部的日志(标准输出、错误输出)

➜  ~ docker logs -f daemon-container
hello world
hello world
hello world
hello world
hello world

-f:监控日志,与tail -f类似。

如果想查看容器内运行的进程,可以使用docker top命令

➜  ~ docker top daemon-container
PID                 USER                TIME                COMMAND
8688                root                0:00                /bin/sh -c while true; do echo hello world; sleep 1; done
8982                root                0:00                sleep 1

统计信息

还可以使用docker stats命令显示容器的统计信息:

➜  ~ docker stats daemon-container
CONTAINER           CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
daemon-container    0.15%               604KiB / 2.934GiB   0.02%               1.43kB / 0B         32.8kB / 0B         2

容器中额外运行程序

如果想在一个运行中的容器中运行新的进程,可使用docker exec命令。

docker exec -d daemon-container touch /etc/new_config_file

这会以后台的方式在容器中创建一个新的文件。

我们可以使用交互式进入容器中:

➜  ~ docker exec -ti  daemon-container /bin/bash
root@3e94fd417982:/# ls /etc/new_config_file
/etc/new_config_file
root@3e94fd417982:/#

可以看到,上一个命令正常执行了。

停止容器

守护式容器需要通过docker stop命令来停止

➜  ~ docker stop daemon-container
daemon-container
➜  ~ docker ps -n 1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
3e94fd417982        ubuntu              "/bin/sh -c 'while..."   11 minutes ago      Exited (137) 35 seconds ago                       daemon-container

命令docker ps -n x可以查看最后x个容器,不管容器是否在运行中。

查看容器详细信息

如果想查看容器的细节信息,可以使用docker inspect命令

 docker inspect daemon-container

输出一大坨东西:包括名称、ID、命令、网络、配置等等。

"Id": "3e94fd41798262678623e689eff3d9277814796812b96ba59e5a3ff4423e2cd1","Created": "2019-10-15T14:27:01.0513945Z","Path": "/bin/sh","Args": ["-c","while true; do echo hello world; sleep 1; done"],.......

删除容器

如果容器没用了,使用docker rm命令删除

➜  ~ docker rm daemon-container
daemon-container

如果容器在运行中,docker rm 需要指定-f才能删除。

如果要删除所有容器,可以使用下面这个小技巧:

docker rm `docker ps -a -q`

Docker02-容器管理相关推荐

  1. 容器管理大战:Kubernetes vs.Docker Swarm与Amazon ECS

    Container Orchestration: 快速入门 自20世纪70年代以来,容器技术就已经出现,但直到2013年Docker首次亮相后才开始发挥作用.从那时起,容器已经流行起来:它们正在显著地 ...

  2. Docker容器管理总结

    Docker容器管理总结 一.Docker容器理解 1.Docker的核心概念 2.容器的运行状态 二.Dockerfile理解 三.容器使用及操作 1.进入容器空间内 2.后台运行容器 3.前台运行 ...

  3. Docker的容器管理

    Docker的容器管理 一.容器的创建 1.运行一个挂掉的容器 2.开启容器运行某个程序 3.运行一个存活的容器 4.自定义容器名称 二.查看容器的日志 1.实时监控某个容器日志 2.过滤某个容器日志 ...

  4. Anbox 实现分析 3:会话管理器与容器管理器的通信

    Anbox 通过一个可执行文件,实现多个不同的应该用逻辑.在启动 Anbox 可执行文件时,通过为它提供不同的命令行参数来确定具体执行哪个命令.Anbox 中这些不同的命令实例之间,整体的通信架构如下 ...

  5. 腾讯蓝鲸智云社区版V6.0.3携手容器管理平台正式发布!

    2020年11月,我们正式推出了蓝鲸智云社区版V6.0 Beta版,4款新产品的亮相 + 7款产品的重大更新.今天我们为大家带来了社区版V6.0.3正式版以及期待已久的容器管理平台(BCS),快来部署 ...

  6. 美团点评Docker容器管理平台

    本文是郑坤根据第14期美团点评技术沙龙"你不知道的美团云"演讲内容整理而成,已发表在<程序员>杂志2017年1月刊. 美团点评容器平台简介 本文介绍美团点评的Docke ...

  7. Docker持续集成与容器管理--系列教程

    一 Docker简介 Docker介绍 Docker架构 二 Docker安装 Ubuntu Docker 安装 CentOS Docker 安装 Windows Docker 安装 MacOS Do ...

  8. Docker容器管理

    创建容器命令格式: Usage: docker create [OPTIONS] IMAGE [COMMAND] [ARG...] Usage: docker run [OPTIONS] IMAGE ...

  9. spring的IOC原理,容器管理的bean类型、bean的生命周期

    1.什么是IOC (1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理 (2)使用 IOC 目的:为了耦合度降低 为什么IOC可以极大的降低耦合度? (1)原始版:一般我们想使 ...

  10. Kubernetes复杂吗?Cube-新的容器管理服务产品

    <介绍Calico eBPF数据平面:Linux内核网络.安全性和跟踪(Kubernetes.kube-proxy)> <在CentOS 7上安装使用Kubernetes:管理云平台 ...

最新文章

  1. 为什么我们使用Linux内核的(网络)协议栈?
  2. eclipse异常关闭,无法启动tomcat解决办法
  3. 作业 3 利用分支和循环结构解决问题
  4. 详解平衡二叉树(AVL),红黑树与平衡二叉树的区别
  5. java this()函数_Java经典面试题之(如何正确的使用this?)
  6. 【腾讯】结合蒸馏和多任务学习的召回模型
  7. 红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
  8. 如何保障科技产品供应链的安全?
  9. 老男孩Linux67期第一课
  10. 在网上看到SpiceWorks是一个免费但很强大的HELPDESK系统
  11. 中专计算机专业execl教案,信息技术excel教案
  12. 通过 jstack 与 jmap 分析一次线上故障
  13. 计算机网络抓包分析dns,DNS抓包分析详细教程
  14. magic2410支持大容量sdhc卡解决办法
  15. 身份证实名认证接口,实名认证API接口文档
  16. 一文读懂哈希算法SHA256
  17. [学习笔记]使用Vulcan L47网络测试仪仿真模拟TLSv1.2加密业务
  18. opencv-python 线稿素描提取
  19. vscode debug Attach mode
  20. 2021年宁波市建筑物轮廓及高度矢量数据

热门文章

  1. 【课程】01 遥感环境物理学
  2. java函数使用笔记(一)
  3. 21天以上的重复会形成习惯
  4. vue中图片引入问题以及实现openlayers地图标记
  5. AutoCAD 2021中文授权版
  6. 经颅磁刺激常用定位方法
  7. C# System.Diagnostics.Stopwatch 记录程序执行时间
  8. C#GPS坐标转百度地图坐标
  9. Teamcenter词汇表
  10. CRM软件哪个好?国内外6大顶级CRM软件盘点