目录

一.查看容器列表

可以使用命令docker container ls查看容器信息,默认情况下只能查看到当前处于启动状态的容器。如果需要查看所有容器信息,需要使用-a参数,如:docker container ls -a

还可以使用命令docker inspect可以查看指定容器的详细信息:docker inspect <container id>

二.启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(Exited)的容器重新启动。

1.基于镜像新建并启动容器

命令:docker run

例如:

$ docker run -it ubuntu:16.04 /bin/bash
Unable to find image 'ubuntu:16.04' locally
16.04: Pulling from library/ubuntu
7e6591854262: Pulling fs layer
089d60cb4e0a: Pulling fs layer
9c461696bc09: Download complete
45085432511a: Waiting
16.04: Pulling from library/ubuntu
7e6591854262: Pull complete
089d60cb4e0a: Pull complete
9c461696bc09: Pull complete
45085432511a: Pull complete
Digest: sha256:6aa6090ee9c1a525cbad1bb6c2ec9278914db754a3a3c5dc9e7d8daa5ee40dce
Status: Downloaded newer image for ubuntu:16.04
root@c421520d8484:/#

上述操作从一个标签为16.04的ubuntu镜像新建并启动了一个容器实例,同时在容器中启动了一个bash终端。

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

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

2.启动已终止容器

可以利用docker container start命令,直接将一个已经终止的容器启动运行。

命令:docker container start

例如:

$ docker start c421520d8484
c421520d8484

上述操作启动了一个id为c421520d8484的已经停止的容器。

三.终止容器

可以使用docker container stop来终止一个运行中的容器。

$ docker stop c421520d8484
c421520d8484

此外,当Docker容器中指定的应用终结时,容器也自动终止。例如对于只启动了一个终端的容器,用户通过exit命令或Ctrl+D来退出终端时,所创建的容器立刻终止。

四.重启容器

使用docker container restart命令会将一个运行态的容器终止,然后再重新启动它。

五.后台运行容器

更多的时候,需要让Docker在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加-d参数来实现。

$ docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

注: 容器是否会长久运行,是和docker run指定的命令有关,和-d参数无关。

需要区分容器"在后台运行"和"长久运行"这2个概念的区别:

  • 后台运行: Docker容器本身只是一个进程,那么这个进程在前台运行和在后台运行与其他进程没有区别,通过"-d"参数控制;
  • 长久运行: 长久运行是指Docker容器中运行的程序是否为长期运行的,如:Tomcat、Nginx这样的服务进程都是长久运行的,而bash、echo这样的程序就是执行一次就结束的,不是长久运行的。但是需要注意的是:在Docker中运行的程序(不论长久运行与否)都是在前台运行的。

六.获取容器输出信息

要获取容器的输出信息,可以通过docker container logs命令。

如:

$ docker container logs c421520d8484

或者

$ docker container logs -f c421520d8484

七.进入容器

在使用-d参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,需要使用docker attach命令或docker exec命令,推荐使用docker exec命令。

原因:使用attach命令进入容器,退出时会导致容器终止;而使用exec命令进入容器,退出时不会导致容器终止。

# 使用attach命令进入容器,退出时会导致容器终止
$ docker attach <container id> # 使用exec命令进入容器,退出时不会导致容器终止
$ docker exec -it <container id> bash

八.导出和导入容器

1.可以使用docker export命令导出容器快照到本地文件,格式: docker export [选项] CONTAINER

$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a386ed46adbe ubuntu:16.04 "/bin/bash" 8 minutes ago Up 8 minutes tender_joliot
d4ba59c159a3 nginx:v3 "nginx -g 'daemon of…" 5 hours ago Up 5 hours 0.0.0.0:82->80/tcp web3
afb890786e0d nginx:v2 "nginx -g 'daemon of…" 6 hours ago Up 6 hours 0.0.0.0:81->80/tcp web2
7849b575df3d nginx "nginx -g 'daemon of…" 6 hours ago Up 6 hours 0.0.0.0:80->80/tcp webserver # 导出容器快照为本地文件
$ docker export a386ed46adbe > ubuntu.tar

2.可以使用docker import从容器快照文件中再导入为镜像,格式:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

$ cat ubuntu.tar | docker import - test/ubuntu:v1.0
sha256:e1d815eee91a11506af4239bde3305e5bcca9f5b9ce0c8eddd7d4e2f2bf80f17
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
test/ubuntu v1.0 e1d815eee91a 28 seconds ago 85.9MB
nginx v3 f8411fc0b25c 5 hours ago 109MB
nginx v2 87e23809f4d8 6 hours ago 109MB
nginx latest ae513a47849c 2 days ago 109MB
ubuntu 16.04 0b1edfbffd27 5 days ago 113MB
tomcat latest 33e02377a00f 3 weeks ago 554MB
hello-world latest e38bc07ac18e 3 weeks ago 1.85kB

此外,也可以通过指定URL或者某个目录来导入,如:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

注:

用户既可以使用docker load来导入镜像存储文件到本地镜像库,也可以使用docker import来导入一个容器快照到本地镜像库。

这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

九.删除容器

1.可以使用docker container rm来删除一个处于终止状态的容器,如:

$ docker container rm 25af9f20d6a2

2.如果要删除一个运行中的容器,可以添加-f参数。Docker会发送SIGKILL信号给容器。

$ docker container rm -f d4ba59c159a3

3.使用命令docker container prune清理掉所有处于终止状态的容器。

$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
04c3079ec43a68e80dbf602935d17c75062e36ede0fadad1e8022d37b93bb97d
a48335a0bbf1afd1d6ae81bf6028852a0e57f2c48fdfa86b0ede343195ec97d6
3a9ff5d11acddddccfc4f23447eb4a731d3ae22b605f48ac7f3c4bfba789cb72
c8b00c9a2beb30934c6747bb32ae5d610eb00e630c6ef993de18cc54b646b35c
97b7f9d496edc2087001b47b6959a39c772c10ed72fedcb6bea0e22404a11e0d
73a8fd203031a15ae1db17cd8e816dc0859535f93010f4848961e76ba7471252
ae723bca424cd694cc9f8a1ebd7f958dd7b674c55922a9e84fe36f9e2c6e8b49
ffb07022d5f8f993fa42b33ae6ea7b5ae199f68ea41c6c0739be367cea376beb Total reclaimed space: 76.96kB

Docker实践之04-操作容器的更多相关文章

  1. docker 实践三:操作容器

    在学习了 docker 镜像的内容后,我们在来看 docker 的另一个核心点:容器. 注:环境为 CentOS7,docker 19.03 docker 的容器是镜像的一个运行实例.docker 镜 ...

  2. docker 实践二:操作镜像

    本篇我们来详细介绍 docker 镜像的操作. 注:环境为 CentOS7,docker 19.03 之前已经说过,容器是 docker 的核心概念之一,所以对应的就需要知道它的使用方法,接下来我们就 ...

  3. docker 基础之操作容器

    Docker子命令分类 Docker 环境信息 info .version 容器生命周期管理 Create.exec.kill.pause.restart.rm.run.start.stop.unpa ...

  4. Docker学习(四): 操作容器

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  5. 实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作

    Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3 ...

  6. Docker的镜像理解以及容器的备份、恢复和迁移操作

    Docker的镜像理解以及容器的备份.恢复和迁移操作 这篇文章主要介绍了Docker的镜像理解以及容器的备份.恢复和迁移操作,覆盖很多原理知识以及容器的重要操作步骤,极力推荐!需要的朋友可以参考下 D ...

  7. docker学习笔记2:容器操作

    一.列出主机上已经创建的容器 docker ps -a 二.创建交互式容器 命令: docker run -i -t ubuntu /bin/bash 其中-i -t 表示创建一个提供交互式shell ...

  8. Docker实践 - 安装Docker并在容器里运行tomcat

    安装Docker yum install docker 本文使用的系统是centos7,ubuntu使用以下命令 sudo apt-get update sudo apt-get install do ...

  9. Docker实践:python应用容器化

    一.前言 容器使用沙箱机制,互相隔离,优势在于让各个部署在容器的里的应用互不影响,独立运行,提供更高的安全性.本文主要介绍python应用(django)跑在docker容器里,编写dockerfil ...

随机推荐

  1. C#中的事件的订阅与发布

    认识发布者/订阅者模式 发布者定义一系列事件,并提供一个注册方法: 订阅者向发布者注册自己的事件处理逻辑,供一个可被回调的方法,也就是事件处理程序:当发布者的事件被触发的时候,订阅者将通过回调函数得到 ...

  2. 王天悦 201671030121 实验十四 团队项目评审&课程学习总结

    项目 内容 课程名称 2016级计算机科学与工程学院软件工程(西北师范大学) 作业要求 实验十四 团队项目评审&课程学习总结 课程学习目标 (1)掌握软件项目评审会流程,(2)反思总结课程学习 ...

  3. 项目Beta冲刺 用户试用报告

    课程: 软件工程1916|W(福州大学) 作业要求: 项目Beta冲刺 团队名称: 火鸡堂 作业目标: 火鸡堂 队员学号 队员姓名 博客地址 备注 221600111 彼术向 http://www.c ...

  4. js延迟加载的性能优化

    js的延迟加载有助于提高页面的加载速度,特别是竞价优化站是有一定的好处,今天来说说我是如何优化竞价站打开速度! 案例:http://yzmb.pengchenggroup.cn/ 动态创建DOM方式 ...

  5. JUnit 学习资料

    JUnit 学习资料 网址 JUnit 入门教程(极客学院) http://wiki.jikexueyuan.com/project/junit/ 官方网站 https://junit.org/jun ...

  6. 13、Python文件处理、os模块、json/pickle序列化模块

    一.字符编码 Python3中字符串默认为Unicode编码. str类型的数据可以编码成其他字符编码的格式,编码的结果为bytes类型. # coding:gbk x = '上' # 当程序执行时, ...

  7. The difference between Virtual DOM and DOM

    dom是结构化的文本信息的抽象,是结构化的文本信息在内存中的表示 是操作结构化文本信息的api. Follow: Follow React attacks us with the virtual DO ...

  8. EJS的个人总结

    什么是模板引擎? 用于Web开发的模板引擎是为了使用用户界面与业务数据(内容)分离而产生的,使用模板语法编写的模板代码通常放在具有特的格式的文档中,经过模板引擎编译之后就会生成一个标准的HTML文档. ...

  9. 68-Flutter中极光推送的使用

    1.申请极光账号和建立应用 极光推送的官方网址为:https://www.jiguang.cn/ 注册好后,进入'服务中心',然后再进入'开发者平台',点击创建应用. 这时候会出现新页面,让你填写“应 ...

  10. Python 检查代码占用内存 工具和模块

    只介绍简单的使用, 更多使用方法请查看官方文档 tracemalloc 官方文档 tracemalloc文档地址 使用 import tracemalloc tracemalloc.start() # ...