一、运行容器

1、基于镜像新建一个容器并启动

docker run -it  --rm -d -p : tomcat:8.0
-i:交互式操作
-t:终端
-rm:容器退出后随之将其删除,可以避免浪费空间
-p :端口映射
-d :容器在后台运行

指明了 -d 运行镜像,会返回容器的 id;如果不指明 -d 运行镜像,会打印出 catalina.out 的 日志,在 [crtl +c] 后,容器即停止运行。

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

-- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
-- 利用镜像创建并启动一个容器
-- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
-- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
-- 从地址池配置一个 ip 地址给容器
-- 执行用户指定的应用程序
-- 执行完毕后容器被终止检查本地是否存在指定的镜像,不存在就从公有仓库下载
-- 利用镜像创建并启动一个容器
-- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
-- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
-- 从地址池配置一个 ip 地址给容器
-- 执行用户指定的应用程序
-- 执行完毕后容器被终止

2、启动一个终止状态(stopped)的容器

docker container start [CONTAINER ID]
docker start $(docker ps -aq) --备注:启动所有 docker 容器

二、操作容器

1、查看容器列表

#列出运行中的容器
docker ps
docker container ls
#列出所有容器(包含终止状态)
docker ps -a
docker container ls -a
#查看具体容器的信息
docker inspect [container ID or NAMES]

#查看容器的使用资源状况
  docker stats [container ID or NAMES]

2、查看容器日志

docker logs [OPTIONS] [container ID or NAMES]
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后(2018-07-23 00:00:00)的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

3、进入容器

docker exec -it [CONTAINER ID] bash

进入容器后输入 exit 或者 [crtl + c] 即可退出容器。

三、终止容器

1、直接删除容器

#删除终止状态的容器
docker rm [CONTAINER ID]
#删除所有处于终止状态的容器
docker container prune
#删除未被使用的数据卷
docker volume prune
#删除运行中的容器
docker rm -f [CONTAINER ID] #批量停止所有的容器
docker stop $(docker ps -a -q)
#批量删除所有的容器
docker rm $(docker ps -a -q)

2、终止容器进程,容器进入终止状态(stopped)

docker container stop [CONTAINER ID]

四、容器的导出和导入

1、容器的导出

#这样将导出容器快照到本地文件
docker export [CONTAINER ID] > [tar file]

2、容器的导入

#从容器快照文件中再导入为镜像
cat [tar file] | docker import - [name:tag]

docker import 来导入一个容器快照到本地镜像库时,将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),既然这样,那么 docker export 是不是可以考虑作为入侵时的现场保护呢?

参考资料:《Docker — 从入门到实践》

Docker 系列三(容器管理).的更多相关文章

  1. Docker背后的容器管理——Libcontainer深度解析

    Libcontainer 是Docker中用于容器管理的包,它基于Go语言实现,通过管理namespaces.cgroups.capabilities以及文件系统来进行容器控制.你可以使用Libcon ...

  2. Docker系列三:Docker容器管理

    Docker容器管理 1. 单一容器管理 1) 容器的启动 $ docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis: ...

  3. Docker系列02: 容器生命周期管理 镜像&容器

    A) Docker信息1. 查看docker运行状态 systemctl status docker docker.service - Docker Application Container Eng ...

  4. Docker系列01—容器的发展历程---Docker的生态圈

    本文收录在容器技术学习系列文章总目录 Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker ...

  5. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  6. Docker系列(三)常用命令

    命令说明 docker pull 格式: docke pull [OPTIONS] NAME[:TAG] 作用:下载名称为 name 的镜像 例子: sudo docker pull dl.docke ...

  7. Docker进阶之五:容器管理

    容器管理 一.创建容器常用选项 docker container --help 指令 描述 资源限制指令 -i, --interactive 交互式 -m,--memory 容器可以使用的最大内存量 ...

  8. Docker镜像和容器管理(二)

    Docker安装 Docker镜像管理 https://hub.docker.com/ 是公共的一个Docker镜像仓库,类似GitHub一样,上面有非常多的开源项目镜像. 可以直接在命令行搜索镜像 ...

  9. Docker 镜像与容器管理

    镜像与容器简介 Docker的大部分操作都围绕着它的三大核心概念:镜像.容器.仓库而展开.因此,准确把握这三大核心概念对于掌握Docker技术尤为重要,在docker中,我们重点关注的就是镜像和容器了 ...

  10. Docker 与 Podman 容器管理的比较

    翻译自 Paul Ferrill 2020年9月1日的文章<Compare Docker vs. Podman for container management> [1] Docker 和 ...

随机推荐

  1. 手工检测SQL注入漏洞

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...

  2. 【详记MySql问题大全集】一、安装MySql

    最近公司要从SqlServer转到MySql,期间在安装环境和数据迁移的过程中,遇到了一些不大不小问题,比如怎么重置密码.怎么设置大小写敏感等等. 这些问题都比较细比较杂,这边解决完可能过几天就忘了, ...

  3. 使用本地缓存快还是使用redis缓存好?

    使用本地缓存快还是使用redis缓存好? Redis早已家喻户晓,其性能自不必多说. 但是总有些时候,我们想把性能再提升一点,想着redis是个远程服务,性能也许不够,于是想用本地缓存试试!想法是不错 ...

  4. C#退出窗体的总结方法

    一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.En ...

  5. 如何使用 GDB

    前期准备 启动GDB方法 设置运行参数 查看源码 断点break 使用 运行程序 查看运行时数据 查看内存数据 分割窗口 问题汇总 参考文献 GDB, The GNU Project debugger ...

  6. Anaconda下载地址

    Anaconda installer archive:地址1: https://repo.continuum.io/archive/地址2:https://mirrors.tuna.tsinghua. ...

  7. constructor属性解析

    JavaScript中constructor属性一直不是很清楚,今日终于弄清了其中缘由,下面举例说明. 首先是一个典型的JavaScript实例声明: function Person(){ this. ...

  8. Redis主从同步原理-PSYNC【转】

    Reids复制数据主要有2种场景: 1. 从服务器从来第一次和当前主服务器连接,即初次复制 2. 从服务器断线后重新和之前连接的主服务器恢复连接,即断线后重复制   对于初次复制来说使用SYNC命令进 ...

  9. CentOS安装使用.netcore极简教程(免费提供学习服务器)

    本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用. 仅针对CentOS,其它Linux系统类似,命令环节稍加调整: 需 ...

  10. nginx中root和alias的区别

    nginx中root和alias的区别