美文网首页
docker 容器操作

docker 容器操作

作者: 凤落溪凰落地 | 来源:发表于2018-11-02 17:48 被阅读0次

容器是docker的另一个核心概念。简单的说,容器是镜像的一个运行实例。所不同的
是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,容器就是独立运行的一
个或一组应用以及它们所必需的运行环境,包括文件系统、系统类库、shell环境等。本节
将具体介绍围绕容器的重要操作,包括创建一个容器、启动容器、终止一个容器、进入容器
内执行操作、删除容器和通过导入导出容器来实现容器迁移等。

1、创建容器

1)新建容器
可以使用docker create命令新建一个容器,例如:

1.png
-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
-i让容器的标准输入保持打开(即交互式)
还可以使用--name给容器起个形象的名称

2)启动容器

使用docker create命令新建的容器处于停止状态,可以使用docker start命令来启动它。


2.png

3)新建并启动容器
可以直接新建并启动容器,所需命令主要为docker run,等价于先执行docker create命令,再执行docker start命令。下面的命令输出一个“Hello World”,之后终止容器。


3.png

这跟在本地直接执行 /bin/echo 'hello world' 几乎感觉不出任何区别.当利用docker run 来创建容器时,Docker 在后台运行的标准操作包括:

检查本地是否存在指定的镜像,不存在就从公有仓库下载

利用镜像创建并启动一个容器

分配一个文件系统,并在只读的镜像层外面挂载一层可读写层

从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去

从网桥的地址池配置一个IP地址给容器

执行用户指定的应用程序

执行完毕后容器被终止

下面的命令则启动一个 bash 终端,允许用户进行交互。


4.png

在交互模式下,用户可以通过所创建的终端来输入命令,例如


5.png

容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。可以在伪终端中利用ps或 top 来查看进程信息。


6.png

可见,容器中仅运行了指定的 bash 应用。这种特点使得 Docker 对资源的利用率极高,是货真价实的轻量级虚拟化。

如果这个时候我们正常退出,输入exit 或者Ctrl+d命令后,容器就自动处于退出(Exited)状态了。docker ps –a 查看容器处于Exit 状态。


7.png

也可以退出容器而不结束容器进程,输入 Ctrl-q + Ctrl-p , 就像先按 CTRL -p 然后CTRL –q 退出伪终端,而不结束容器。


8.png

发现退出容器了,但是容器依然在运行,可以随时进入容器:


9

4)守护态运行
更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,
可以通过添加 -d 参数来实现。例如下面的命令会在后台运行容器。

10.png
此时,如果要获取容器的输出信息,可以使用docker logs命令
11.png
容器启动后会返回一个唯一的 id,也可以通过docker ps命令来查看容器信息。
docker run -d运行一个新的容器,我们通过-d命令让他作为一个后台运行
centos:centos6是一个我们想要在内部运行命令的镜像
/bin/sh -c是我们想要在容器内部运行的命令
while true; do echo hello world; sleep 1; done这是一个简单的脚本,我们仅仅只是每秒打印一次 hello word 一直到我们结束它.
或者:
12.png
然后使用docker ps命令查看启动的容器:
13.png

常用容器操作命令:

docker stop d17f8988a49e停止一个容器
docker start d17f8988a49e 启动一个容器
docker restart d17f8988a49e 重启一个容器
docker inspect d17f8988a49e查看容器详细信息

可以使用inspect查看容器IP地址:

 docker inspect -f '{{.NetworkSettings.IPAddress}}'
d17f8988a49e  
1.png

还可以查看主机名


2.png
进入容器

在使用 -d 参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,有很多种方法,包括使用docker attach 命令或nsenter命令。
使用docker attach进入容器


1.png
2.png

1.docker attach 允许我们进入后台进程.

2.--sig-proxy=false不使用容器转发信号,允许我们使用 ctrl -c来退出,执行docker

ps查看在后台运行

但是使用 attach命令有时候并不方便。当多个窗口同时attach 到同一个容器的时候,所
有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

也可以执行docker exec进入运行的容器

docker exec -it 容器ID/名称 /bin/bash

以上命令返回一个命令界面,exec代表直接在容器中运行命令


3.png

使用nsenter进入容器
安装
nsenter工具在util-linux包2.23版本后包含。如果系统中util-linux包没有该命令,可以按照
下面的方法从源码安装

wget  https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz

tar util-linux-2.24.tar.gz

cd util-linux-2.24

 ./configure --without-ncurses && make nsenter

cp nsenter /usr/local/bin

nsenter可以访问另一个进程的名字空间。nsenter要正常工作需要有 root 权限
centos7使用的是util-linux-2.23,所以就直接使用系统提供的util-linux包了。


1.png

相关文章

  • Docker命令及实战

    常用Docker命令 docker容器信息 镜像操作 镜像搜索 镜像下载 删除镜像 容器操作 提示:对于容器的操作...

  • Docker 相关的命令

    docker 相关 一、 docker查看全部容器命令docker ps -a 容器相关操作docker crea...

  • Docker容器的操作命令

    前言 Docker 容器的操作命令,记录下来!?? 操作Docker容器 重新启动docker服务 查看 Dock...

  • docker命令

    镜像、容器基本操作 1、获取镜像docker pull 2、运行容器docker run docker run -...

  • Docker 容器&仓库

    Docker 容器 操作 Docker 容器 容器是 Docker 又一核心概念。 简单的说,容器是独立运行的一个...

  • docker 基本使用操作2

    今日份更新使用docker的操作 # 查看docker 容器的进程号 # 首先要启动docker 容器docker...

  • Docker之初顾茅庐(Docker基础命令)

    docker服务操作 开启、重启、关闭、查看Docker后台服务状态 docker管理操作 查看Docker容器的...

  • 使用第一个容器

    一、容器操作 Docker镜像、容器、及相关配置,都存放在/var/lib/docker目录下 创建容器 停止容器...

  • Docker笔记2 命令使用

    Docker常见命令 容器相关操作 docker create # 创建一个容器但是不启动它 docker run...

  • Docker基本命令

    镜像操作相关命令 容器操作相关命令 访问Docker仓库 Docker数据管理 端口映射与容器互联 Dockerf...

网友评论

      本文标题:docker 容器操作

      本文链接:https://www.haomeiwen.com/subject/qtvcxqtx.html