【环境搭建】Docker容器相关操作(创建、启动、停止、后台运行、导入导出、删除等)

1 Docker容器相关命令

1.1 容器的创建

  1. 容器是独立运行的一个或一组应用以及他们的运行环境。猪油有两种创建方式:
  2. 方式一:基于镜像新建容器并启动,例如使用命令:docker run docker.io/mysql:latest cal其中docker.io/mysql是镜像名,latest为tag。
  3. 方式二(常用):通过指定参数,启动一个bash交互终端:
    docker run [OPTIONS] IMAGE [COMMAND] [ARG…],其中IMAGE为镜像名,主要参数解释如下,详细参数可以查看《菜鸟教程》的相关解释。
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -t::为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    • –name=“MySQL”: 为容器指定一个名称;
  4. 本节内容以上述mysql为例,使用命令创建容器:docker run -i -t docker.io/mysql /bin/bash,如下图箭头所指即为新创建的容器。
    在这里插入图片描述
  5. 当我们使用docker run命令来创建启动容器是,docker在后台运行的标准操作包括:
    1. 检查本地是否存在指定的镜像,不存在则从公有仓库下载;
    2. 使用镜像创建并启动容器;
    3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层;
    4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
    5. 从地址池分配一个IP地址给容器;
    6. 执行用户指定的应用程序;
    7. 执行完毕后容器将被终止。

1.2 容器的中止与启动

  1. 将处于运行状态的容器中止:可使用docker stop 容器ID命令。
  2. 将处于终止状态的容器重新启动,可以使用docker start 容器ID命令。其中start可以换为restart。

1.3 容器的后台运行

  1. 在从镜像创建启动容器时,添加参数-d表示容器要后台运行。此时容器位于后台运行,如果想要再次进行交互,需要适用命令调出。
  2. 方法一:使用docker自带的命令docker attench调出后台容器。但是该命令有时候使用不方便,因为他是同步的,如果有多个用户attach到一个容器,当一个窗口命令阻塞,其他窗口都无法执行,本节主要讲下一种方法。
  3. 方法二:使用nsenter命令工具,nsenter可以访问到另一个进程的名字空间。如果没有该包则需要使用命令安装util-linux2.23及更新版本。
  4. 为例连接到容器,需要知道容器的pid,可以使用docker inspect命令来拿到该ID:使用命令docker inspect 容器ID返回的是大量的信息,使用命令docker inspect -f {{ .State.pid }} 容器ID返回的是pid值。
  5. 获取pid后,就可以通过命令进入容器了:nesnter --target PID值 --mount --uts --ipc --net --pid,其中PID值需要根据上述获取到的实际修改,其余参数无需修改。

1.4 容器的导入导出

  1. 将容器导出成tar包作为容器快照,可以使用命令:docker export 容器ID > 压缩包
  2. 将tar包导入成容器,可以使用命令:cat 压缩包 | docker import - 镜像名+tag
  3. 与上述导入本地包同理,也可以导入网上的快照包:docker import http://xxxx.com/image_teat.tgz test/image_test

1.5 容器的查看及删除

  1. 容器的查看:docker -s -a,加上-a的参数,可以查看说有运行与暂停的容器。
  2. 使用stop命令并不能完全终止进程,仅是暂停,要完全删除容器应该使用命令:docker rm 容器ID
  3. 一条命令实现停用并删除容器:docker stop $(docker ps -aq) & docker rm $(docker ps -aq)。该命令也可以拆段使用,分别对应停止所有容器和删除所有容器。

2 nsenter工具的安装

  1. 使用命令进行联网下载安装包:wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz。可以根据网站中其他所需要版本更新网址信息,如果弹出证书过期,则在命令后加上相应参数。在这里插入图片描述
  2. 使用命令进行解包:tar -zxf util-linux-2.24.tar.gz
  3. 进入解压路径:cd util-linux-2.24/
  4. 使用命令进行配置:./configure -without-ncurses。配置过程出现以下错误,根据经验应该是缺少依赖包。
    在这里插入图片描述
  5. 此处将常用依赖包安装上:
yum -y install gcc
yum -y install libxml2
yum -y install libxml2-devel
yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
yum -y install sqlite-devel
  1. 安装后再次使用命令进行配置:./configure -without-ncurses
  2. 输入命令make进行编译。
  3. 将命令复制到系统识别的文件中去:cp nsenter /usr/local/bin/

3 总结

  1. 熟悉docker中镜像与容器的相关操作;
  2. 了解对后台运行的进行再次交互的方式;
  3. 为后续搭建渗透测试环境、靶场等打下基础。

4 参考文献

  1. nsenter介绍,安装及使用
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值