Docker学习之容器

容器是镜像的一个运行实例,它带有额外的可写文件层。如果说虚拟机是模拟运行的一整套操作系统以及跑在上面的应用。那么Docker容器就是一个或者一组应用以及必须的运行环境。

1.创建容器

A.新建容器:

使用docker create 命令来创建容器

使用docker create 创建的容器,处于停止状态。需要手动启动
docker start 3dbc62fc848f

B.新建并启动容器:

使用docker run命令基于镜像新建一个容器并启动。

执行命令:docker run ubuntu:latest /bin/echo ‘Hello, World!’

容器在执行完指定的命令之后,就停止了。

C.当使用Docker run来创建并启动容器时,docker在后台运行的标准操作包括:

1>检查本地是否存在指定镜像,不存在就从公共仓库下载
2>利用镜像创建并启动一个容器
3>分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
4>从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
5>从地址池配置一个IP地址给容器
6>执行用户给定的应用程序
7>执行完毕容器被终止

-t选项让Docker分配一个伪终端,-i则让容器的标准输入保持打开。

在创建的终端中可以使用linux命令来完成一些操作,使用exit命令可以退出当前容器。对于锁创建的bash应用,如果使用exit命令退出容器,这个容器也将自动变为终止状态,这是因为,对于docker来讲,当容器中
运行的应用退出之后,容器就没有必要再继续运行了。

守护状态运行:

添加-d参数,可以使启动的容器以后台守护进程的模式运行。使用 docker logs 命令, 查看docker容器的输出信息

2.终止容器:

A.使用docker stop 命令来完成对容器的终止

a.使用命令docker stop -t 通过-t参数来指定时间,即它会首先向容器发送SIGTERM信号,等待一段时间之后,如果没有指定-t的具体值,则默认是10秒,等待10秒之后,再发送SIGKILL信号给容器,此时容器将彻底终止。
b.也可以使用docker kill命令,直接发送SIGKILL信号来强行终止容器


使用docker ps -a -q命令,可以列出已经停止的容器

使用docker start命令,可以启动一个处于终止状态的容器

使用docker restart命令,则可以重新启动一个运行中的容器

3.进入容器

使用-d参数时,docker容器启动之后会以守护进程的方式在后台运行,此时,无法看到容器内的信息。如果要进入容器完成一些操作时,有三种方式可以进入容器:

A.使用命令 docker attach

docker attach 容器ID。使用docker attach 连接到容器,也是有一些不足的,当多个窗口同时attach到同一个容器时,所有窗口将同步显示,如此这般,当某个窗口因命令阻塞时,其他窗口将无法操作了。

B.使用命令 docker exec

docker exec 是docker 1.3版本起开始提供的一个docker 命令,

C.使用nsenter工具

安装nsenter,nsenter工具在util-linux包2.23版本后包含。可以以源码的方式安装

a.下载源码包:
    wget --no-check-certificate [https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz](https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz)
b.解压 tar -zxvf util-linux-2.24.tar.gz
c.进入util-linux-2.24解压后的目录,并执行./configure 进行源码编译
d.make nsenter && cp nsenter /usr/local/bin

nsenter安装完成之后,接下来就使用nsenter工具连接到容器,还需要找到容器的进程的PID,可以通过如下命令获取:

PID=$(docker insepct --format "{{ .State.Pid }}") 996 

nsenter --target $PID --mount --uts --ipc --net --pid

4.删除容器

-f 强制删除一个还处在运行状态的容器
-l只删除容器的连接,但是保留容器
-v删除容器挂载的数据卷

使用-f参数虽然可以强制删除运行中的容器,但是,执行删除之后依旧会遗留一些问题,因此,这种强制删除的方式并不推荐。

5.导入和导出容器

A.docker export


docker export 可以将一个指定的镜像导出到一个文件,而不管这个容器是否处于运行状态,docker export文件导出的只是一个快照,而不是镜像文件。

B.docker import

导出的文件,可以使用docker import命令导入成为镜像

文章目录
  1. 1. 1.创建容器
    1. 1.1. A.新建容器:
    2. 1.2. B.新建并启动容器:
    3. 1.3. C.当使用Docker run来创建并启动容器时,docker在后台运行的标准操作包括:
  2. 2. 2.终止容器:
    1. 2.1. A.使用docker stop 命令来完成对容器的终止
  3. 3. 3.进入容器
    1. 3.1. A.使用命令 docker attach
    2. 3.2. B.使用命令 docker exec
    3. 3.3. C.使用nsenter工具
  4. 4. 4.删除容器
  5. 5. 5.导入和导出容器
    1. 5.1. A.docker export
    2. 5.2. B.docker import
,