一起来学docker系列:
一起学docker-可视化管理01-Portainer
一起学docker-可视化管理02-Rancher
一起学习docker01-docker简介和安装
一起学习docker02-Registry私有仓库
一起学习docker03-harbor私有仓库搭建
一起学习docker04-docker镜像
一起学习docker05-docker容器
一起学习docker06-docker网络
一、关于容器
容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
注意:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
二、容器的基本操作
要想启动容器,就要先获取镜像
1、搜索镜像
docker search hello
2、下载镜像
docker pull docker.io/hello-world
3、启动容器
docker run docker.io/hello-world
4、执行命令
docker run java /bin/echo "hello world"
这里跟本地执行/bin/echo 'Hello World'一样,执行完就退出了。
使用docker ps -a (这个命令可以查看启动过的所有容器)
三、进入容器
1、启动一个bash终端,可以和用户交互
docker run -t -i java /bin/sh
其中, -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,
-i 则让容器的标准输入保持打开。
注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)
在交互模式下,用户可以通过所创建的终端来输入命令.
当利用docker run来创建容器时,Docker 在后台运行的标准操作包括:
a.检查本地是否存在指定的镜像,不存在就从公有仓库下载
b.利用镜像创建并启动一个容器
c.分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
d.从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
e.从地址池配置一个 ip 地址给容器
f.执行用户指定的应用程序
g.执行完毕后容器被终止
容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。
可以在伪终端中利用ps或top来查看进程信息。
可见,容器中仅运行了指定的 bash 应用。这种特点使得 Docker 对资源的利用率极高,是货真价实的轻量级虚拟化。
2、docker exec
docker exec -it b2c8b54681c1 /bin/bash
3、docker attach 59cefbda83c2但是这个很坑,退出容器就停止了。所以用的也少。
这就是为什么推荐大家使用 docker exec 的原因。
更多参数说明请使用 docker exec --help 命令查看。
四、容器维护
启动容器,上面的docker run可以从镜像启动一个容器(属于新建)
我们启动一个已经存在的、停止的容器
docker start/stop/restart 容器di或容器名
docker start -i 容器id,交互模式进入容器
查看已经停止的容器
docker ps -a
1、启动容器
docker start 15feb316fa61
docker ps -a
2、停止容器
docker stop 15feb316fa61
3、启动直接进入容器
docker start -i 15feb316fa61
4、删除容器
docker rm 容器id或容器名
删除一个处于停止状态的容器,如果不是停止状态的,则加-f,就是docker rm -f
docker rm 1a606cbec84e
删除在启动中的容器
docker rm -f 15feb316fa61
自定义容器名
docker run 时,如果没有指定名称,则docker会自己生成一个名称,往往该名称是没什么意义的,可以自定义指明一个。
docker run --name 容器名,容器名是唯一的,如果已存在了,则会启动失败。
docker run --name hello docker.io/hello-world
五、容器的导入导出
1、导入容器快照
docker import myimage.tar import-test/myimage:v1.0
2、导出容器快照
docker export f393a847db63 >myimage.tar
此外,也可以通过指定 URL 或者某个目录来导入,例如
$sudo docker import http://example.com/exampleimage.tgz example/imagerepo
*注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来
导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息
(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文
件导入时可以重新指定标签等元数据信息。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态