- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Docker学习之Container容器的具体使用由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
容器是 docker 又一核心概念.
简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用.
关于容器的操作主要有:
启动容器 。
有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态( stopped )的容器重新启动。 因为 docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器.
新建并启动 。
所需要的命令主要为 docker run 。
这跟在本地直接执行 /bin/echo 'hello world' 几乎感觉不出任何区别.
下面的命令则启动一个 bash 终端,允许用户进行交互,如
1
|
docker run -t -i ubuntu:18.04
/bin/bash
|
其中, -t 选项让docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开.
那么当我们用docker run命令来创建并启动容器的时候,会发生哪些事儿呢?
所以当我们通过bash进入终端的时候,其实就是进入另一个系统.
启动已终止容器 。
可以利用 docker container start 命令,直接将一个已经终止的容器启动运行.
容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。可以在伪终端中利用 ps 或 top 来查看进程信息.
可见,容器中仅运行了指定的 bash 应用。这种特点使得 docker 对资源的利用率极高,是货真价实的轻量级虚拟化.
后台运行 。
更多的时候,我们会在后台运行容器,这时可以加上-d参数来实现。下面是每个1秒打印一次hello world.
1
|
docker run ubuntu:18.04
/bin/sh
-c
"while true; do echo hello world;sleep 1;done"
|
如果使用了 -d 参数运行容器,则就是在后台进行运行
注: 容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关。使用 -d 参数启动后会返回一个唯一的 id,也可以通过 docker container ls命令来查看容器信息.
要获取容器的输出信息,可以通过 docker container logs 命令.
docker container logs [container id or names] hello world hello world hello world . . . 。
终止容器 。
可以使用 docker container stop或者docker stop 容器id 来终止一个运行中的容器。此外,当 docker 容器中指定的应用终结时,容器也自动终止.
终止状态的容器可以用 docker container ls -a 命令看到。例如:
处于终止状态的容器,可以通过 docker container start 命令来重新启动.
此外, docker container restart 命令会将一个运行态的容器终止,然后再重新启动它.
进入容器 。
在使用 -d 参数时,容器启动后会进入后台.
某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,原因会在下面说明.
attach 命令 。
注意: 如果从这个 stdin 中 exit,会导致容器的停止.
exec 命令 。
docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数.
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 linux 命令提示符,但命令执行结果仍然可以返回.
当 -i -t 参数一起使用时,则可以看到我们熟悉的 linux 命令提示符.
如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用docker exec 的原因.
导出和导入容器 。
导出容器 。
如果要导出本地某个容器,可以使用 docker export 命令.
这样将导出容器快照到本地文件.
导入容器 。
可以使用 docker import 从容器快照文件中再导入为镜像,例如
1
|
cat
ubuntu.
tar
| docker
import
-
test
/ubuntu
:v1.0
|
删除容器 。
可以使用 docker container rm或者docker rm 容器id 来删除一个处于终止状态的容器。例如
注:删除容器删除需要stop容器 。
清理所有处于终止状态的容器 。
用 docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量太多要一个个删除可能会很麻烦,用下面的命令可以清理掉所有处于终止状态的容器.
1
|
$ docker container prune
|
这个操作比较危险,慎用。以上就是关于docker容器的常见操作了.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://segmentfault.com/a/1190000019528094 。
最后此篇关于Docker学习之Container容器的具体使用的文章就讲到这里了,如果你想了解更多关于Docker学习之Container容器的具体使用的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在使用以下dockerfile: FROM ubuntu:14.04 MAINTAINER xxx xxx # SSH RUN apt-get update && apt-get install
我运行了docker-compose build celery,(经过数小时的尝试,我的连接不良)成功了。 app Dockerfile的前80%是相同的,但不会重复使用缓存。从我可以浏览的内容来看,
我可以使用以下命令成功创建 Docker 注册表 v2 服务:docker service create 然后我使用 docker Push 将一些图像推送到该服务。 当我通过 curl localh
我正在尝试使用 gitlab 构建 CI,我从 docker 的 docker 镜像开始,我的前端存储库没有任何问题,但现在使用相同的 gitlab-ci 配置文件,我有此守护程序错误。 这是构建的输
用例: 我们在 Jenkins 中有几个“发布作业”build 和 push 应用程序的 Docker 镜像到 docker registry,更新各种文件中的项目版本,最后将发布标签推送到相应的 G
当我尝试构建我的 docker 文件时,docker 返回以下错误: [+] Building 0.0s (1/2)
docker-in-docker 的作者在此博客中建议不要将此图像用于 CI 目的: jpetazzo/Using Docker-in-Docker for your CI or testing en
我创建了一个 Dockerfile 来在 Docker 中运行 Docker: FROM ubuntu:16.04 RUN apt-get update && \ apt-get in
我尝试为 Docker 镜像定位一个特定标签。我怎样才能在命令行上做到这一点?我想避免下载所有图像,然后删除不需要的图像。 在 Ubuntu 官方版本中,https://registry.hub.do
我正在尝试在docker中运行docker。唯一的目的是实验性的,我绝不尝试实现任何功能,我只想检查docker从另一个docker运行时的性能。 我通过Mac上的boot2docker启动docke
docker-compose.yml version: "3" services: daggr: image: "docker.pvt.com/test/daggr:stable"
我有一个非常具体的开发环境用例。在一些代码中,我启动了一个容器来抓取页面并检索在容器中运行的服务(Gitlab)的 token 。 现在,我希望 Dockerize 运行它的代码。具体来说,类似: o
之前已经问过这个问题,但我不确定当时是否可以使用docker-compose文件完成docker堆栈部署。 由于最新版本支持使用compose将服务部署到堆栈,因此,我无法理解dab文件的值。 我检查
我在一次采访中被问到这个问题,但无法回答。也没有找到任何相关信息。 最佳答案 正如 Docker 文档中所述,Docker 注册表是: [...] a hosted service containin
有没有一种方法可以将具有给定扩展名的所有文件复制到Docker中的主机?就像是 docker cp container_name:path/to/file/in/docker/*.png path/o
我的日志驱动程序设置为journald。使用日志记录驱动程序时,daemon.json文件中的日志级别配置会影响日志吗?使用docker logs 时仅会影响容器日志? 例如,docker和journ
我最近开始使用Docker + Celery。我还共享了full sample codes for this example on github,以下是其中的一些代码段,以帮助解释我的观点。 就上下文
运行docker build .命令后,尝试提交构建的镜像,但收到以下错误 Step 12 : CMD activator run ---> Using cache ---> efc82ff1ca
我们有docker-compose.yml,其中包含Kafka,zookeeper和schema registry的配置 当我们启动docker compose时,出现以下错误 docker-comp
我是Docker的新手。是否可以在Docker Hub外部建立Docker基本镜像存储库?假设将它们存储在您的云中,而不是拥有DH帐户?谢谢。 最佳答案 您可以根据需要托管自己的注册表。可以在Depl
我是一名优秀的程序员,十分优秀!