操作Docker容器
操作Docker容器
容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
启动容器:
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。因为Docker容器是在太轻量级了,很多时候用户都是随时删除和新创建容器。
新建并启动:主要命令为 docker run
docker run ubuntu:18.04 /bin/echo 'Hello world'
如果镜像存在就直接启动了,如果不存在就是自动从官方仓库拉取下载之后并启动,我本机是有这个镜像,直接就输出 Hello world 了。
下面的命令则启动一个bash终端,允许用户进行交互。
docker run -t -i ubuntu:18.04 /bin/bash
启动-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开。在交互模式下,可以通过所有创建的终端来输入命令。
当利用docker run 来创建容器时,Docker在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在制度的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个ip地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
启动已终止容器Docker container start (或者直接docker start)
停止和关闭是stop和restar
后台运行
更多时候,需要让docker在后台运行而不是直接把执行结果输出在当前宿主机下,通过-d参数实现。
例子:
不使用-d参数
docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world;sleep 1; done"
容器会把输出的结果(STDOUT)打印到宿主机上面,直接强制退出的话,容器就退出了。
如果使用-d的话
docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world;sleep 1; done"
9a615ec487e9dfd4d246d391fb804e786610a45239cda2e8687e43a70580566d
不会有输出,就直接输出容器的id,此时容器会在后台运行并不会把输出结果(STDOUT)打印到宿主机上面(输出结果可以用docker logs 查看)
使用-d 参数启动后会返回一个唯一的id,也可以通过docker container ls命令来查看容器信息。
进入容器
在使用-d参数时,容器启动后会进入后台。
某些时候需要进入容器进行操作,包括使用docker attach命令或者docker exec 命令,推荐使用exec,因为attach可能导致容器退出。
attach命令
docker run -dit ubuntu
docker container ls
docker attach 655bdc811cd8
此时已经进入了终端 exit,后容器就会直接停止,可以通过docker container ls再看下,发现退出了。
exec命令
-i -t 参数,docker exec 后边可以跟多个参数,这里是-i -t参数。(交互+伪终端)
exit退出后不会跟attach一样导致容器直接也退出了。
导出和导入容器
导出:docker export
例子:
docker container ls -a
docker export 0e172d70f90e > ubuntu.tar
那个红色的就是容器导出来的快照文件。
导入快照 docker import
cat ubuntu.tar | docker import - test/ubuntu:v1.0
也可以通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
ps:用户即可以使用docker load 来导入镜像存储文件到本地镜像库,也可以使用docker import来导入一个容器快照到本地镜像库。区别是容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也大。从容器快照文件导入是可以重新制定标签等元数据信息。
删除容器
Docker container rm删除终止状态的容器。如果是删除运行中的容器 可以添加-f,Docker会发送SIGKILL信号给容器。如果是一次性清理所有终止状态的容器可以直接
docker container prune
操作Docker容器相关推荐
- 操作 Docker 容器
操作 Docker 容器 容器是 Docker 又一核心概念. 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他 ...
- 为什么Kubernetes要引入pod的概念,而不直接操作Docker容器
首先我们要明确一个概念,Kubernetes并不是只支持Docker这一个容器运行时,通过我的另一篇文章什么是Kubernetes的CRI-容器运行时接口介绍的内容,我们知道Kubernetes通过C ...
- Docker容器虚拟化技术---Docker安装和操作1
一.Docker安装 Docker在主流的操作系统和云平台上都可以使用,包括Linux操作 系统(如Ubuntu.Debian.CentOS.Redhat等).MacOS操作系统和 Windows操作 ...
- 【云原生】Docker容器详细讲解
前言 大家好,本文是对 Docker 容器的详细讲解,讲解了如何启动容器.进入容器,以及操作容器的命令.希望对大家有所帮助~ 目录 前言 一.Docker 容器 - 操作 Docker 容器 1.启动 ...
- Docker:镜像操作和容器操作
镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...
- Docker selenium自动化 - 使用python操作docker,python运行、启用、停用和查询容器实例演示
Docker selenium 自动化 - 使用 Python 操作 docker 运行.启用.停用和查询容器实例演示 第一章:Python 操作 docker ① python 运行 docker ...
- Docker容器学习梳理--日常操作总结
使用Docker已有一段时间了,今天正好有空梳理下自己平时操作Docker时的一些命令和注意细节: Docker 命令帮助 $ sudo docker Commands:attach Attach t ...
- docker 容器保存为镜像_Docker容器和镜像操作
前言 Docker 容器和镜像操作,记录下来! 容器 创建一个新的容器(ubuntu)并启动 $ docker run -dit --name ubuntu ubuntu 在容器内执行命令(容器在后台 ...
- Docker容器的简单操作及应用部署
1.什么是虚拟化 虚拟化(Virtualization)是一种资源管理技术 ,虚拟化技术种类很多,例如:软件虚拟化.硬件虚拟化.内存虚拟化.网络虚拟化(vip).桌面虚拟化.服务虚拟化 ...
最新文章
- 【MATLAB】函数句柄
- Python 入门篇-最新版python3.7.2的安装。
- loadrunner通过使用libmysql.dll完成mysql的测试
- 为啥 Response.Write 后,View就不渲染了?
- php 单例模式有什么缺点_PHP的完整形式是什么?
- java基础 ArrayList集合基本方法演示
- Socket简单介绍(通过NSStream)
- JavaScript DOM操作总结
- python方法_详细解读Python中的__init__()方法
- 在嵌入式uClibc上移植valgrind
- java多线程join()方法原理详解
- 关于SQLyog的破解注册码
- python中gm11_python GM11
- MBR分区表详解(SD卡)
- SCI论文撰写——Conclusion
- 杭州考驾照-2017.4
- 获取Windows操作系统版本和位数
- 7种将字符串反转的 Java 方法
- 操作系统考研复习——第四章(文件管理)
- 对struct cred新理解
热门文章
- ES6简单总结(搭配简单的讲解和小案例)
- 30.IntellJ Idea 导入已存在的Maven项目
- Shuttle ESB实现消息推送
- Redis启动多端口,运行多实例(转)
- java读取XML文件的四种方式
- Java parallel control
- 【Unity技巧】制作一个简单的NPC
- keta-custom DWZ validationEng IE 下表单重复提交BUG原因及修复方法
- Nginx版本无缝升级
- [转]关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决...