docker 实践三:操作容器

在学习了 docker 镜像的内容后,我们在来看 docker 的另一个核心点:容器。

注:环境为 CentOS7,docker 19.03

docker 的容器是镜像的一个运行实例。docker 镜像是只读文件,而容器则带有运行时的可读写层,而且容器中的应用进程处于运行状态。接下来我们就来学习 docker 容器的具体操作。

创建容器

创建容器相关的命令有 create、start、run、wait 和 logs。

新建容器

使用命令 docker [container] create 新建一个容器:

# docker create -it ubuntu:latest
63197c11dc16e893dc8bb032ebf92419032cc40d6dcb6f750a16e9e308d52584
# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                  PORTS                    NAMES
63197c11dc16        ubuntu:latest         "/bin/bash"              5 seconds ago       Created                                          hardcore_raman

docker create 命令对应的参数有很多,下面列出对应的选项:
create 命令与容器运行模式相关的选项


create 命令与容器环境和配置相关的选项

create 命令与容器资源限制和安全保护相关的选项



以及:

  • -l, --label=[]: 以键值对?式指定容器的标签信息;
  • --label-file=[]: 从?件中读取标签信息。

启动容器

使用该命令新建的容器处于停止状态,使用命令 docker [container] start启动容器,通过 docker [container] ps查看运行中的容器:

# docker start 63197c11dc16e893dc8bb032ebf92419032cc40d6dcb6f750a16e9e308d52584
63197c11dc16e893dc8bb032ebf92419032cc40d6dcb6f750a16e9e308d52584
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
63197c11dc16        ubuntu:latest       "/bin/bash"              About a minute ago   Up 3 seconds                                 hardcore_raman

我们还可以将新建和启动容器合起来,命令 docker [container] run 就是两个命令的组合:

# docker run ubuntu /bin/echo "Hello World"
Hello World
# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                     PORTS                    NAMES
5982bad8cf83        ubuntu                "/bin/echo 'Hello Wo…"   7 seconds ago       Exited (0) 6 seconds ago                            exciting_lalande

使用 run 命令实际上在后台包含了以下过程:

  • 检查本地是否存在指定的镜像, 不存在就从公有仓库下载;
  • 利?镜像创建?个容器, 并启动该容器;
  • 分配?个?件系统给容器, 并在只读的镜像层外?挂载?层可读写层;
  • 从宿主主机配置的?桥接?中桥接?个虚拟接?到容器中去;
  • 从?桥的地址池配置?个IP地址给容器;
  • 执??户指定的应?程序;
  • 执?完毕后容器被?动终?。

注:运行结束后容器就会停止。

还可以在创建时启动一个 bash 终端,这样就能和容器交互了:

# docker run -it ubuntu bash
[email protected]:/# 
  • -t:选项让Docker分配?个伪终端(pseudo-tty) 并绑定到容器的标准输?上,
  • -i:则让容器的标准输?保持打开。

退出容器

?户可以按 Ctrl+d 或输? exit 命令来退出容器,也可以使用命令 docker container wait CONTAINER[CONTAINER...] ?命令来等待容器退出, 并打印退出返回结果。

[email protected]:/# exit
exit

如果启动容器的出项错误,有以下错误代码:

  • 125: Docker daemon执?出错, 例如指定了不?持的Docker命令参数;
  • 126: 所指定命令?法执?, 例如权限出错;
  • 127: 容器内命令?法找到。

后台运行

如果需要让容器在后台以守护态(Daemonized) 形式运?,可以通过 -d 参数实现:

# docker run -itd ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done"
5352f3e531b2f451ec6b484a6d35d1fd064438fa3d3404691b80b98bbc6e7801

它会返回一个唯一的id值,使用 docker psdocker container ls 来查看容器信息:

# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
5352f3e531b2        ubuntu              "/bin/bash -c 'while…"   2 minutes ago       Up 2 minutes                                 lucid_albattani

查看容器输出

刚才通过 -d 让容器以后台方式运行,我们没有看到它的输出信息,可以使用命令docker [container] logs命令查看,该命令包含以下选项:

  • -details: 打印详细信息;
  • -f, -follow: 持续保持输出;
  • -since string: 输出从某个时间开始的?志;
  • -tail string: 输出最近的若??志;
  • -t, -timestamps: 显?时间戳信息;·-until string: 输出某个时间之前的?志。
# docker logs 5352f3e531b2
hello world

注:创建容器后会返回一个唯一的id,但一般我们截取字符前面的一部分,保证能认到这个容器就可以了。

停止容器

停止容器使用的子命令为 pause/unpause、stop、prune。

暂停容器

使用命令docker [container] pause CONTAINER[CONTAINER...]来暂停一个运行中的容器

# docker run --name test --rm -itd ubuntu bash
c1a52ffc5f662b2e60bcd98fe81157754cb251b22a624e8a6a32785905d5b93e
# docker pause c1a52ffc5
c1a52ffc5
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                    NAMES
c1a52ffc5f66        ubuntu              "bash"                   16 seconds ago      Up 16 seconds (Paused)                            test

出于 paused 状态的容器就可以使用 docker [container] unpause CONTAINER[CONTAINER...] 命令来恢复了。

注:启动时添加 --rm 选项时,在容器退出后会删除容器。

停止容器

使用命令docker [container] stop [-t|--time[=10]] [CONTAINER...]停止容器:

# docker stop 5352f3e531b2
5352f3e531b2

现在使用命令 docker container prune 会删除所有处于停止状态的容器。

除了 stop 外,使用命令docker [container] kill或在交互模式下通过命令exitCtrl+d都可以停止容器。

属于停止状态的容器,可以使用命令 docker [container] start 来启动,或者是命令 docker [container] restart 来先停止再启动。

原文地址:https://www.cnblogs.com/xingyys/p/11388050.html

时间: 2024-10-10 05:13:51

docker 实践三:操作容器的相关文章

Docker 系列三(容器管理).

一.运行容器 1.基于镜像新建一个容器并启动 docker run -it --rm -d -p 8888:8080 tomcat:8.0 -i:交互式操作 -t:终端 -rm:容器退出后随之将其删除,可以避免浪费空间 -p :端口映射 -d :容器在后台运行 指明了 -d 运行镜像,会返回容器的 id:如果不指明 -d 运行镜像,会打印出 catalina.out 的 日志,在 [crtl +c] 后,容器即停止运行. 当利用 docker run 来创建容器时,Docker 在后台运行的标准

Docker实践(三):数据持久化及共享

环境说明: 主机名 操作系统版本 IP地址 docker版本 ubuntu1604 Ubuntu 16.04.5 172.27.9.31 18.09.2 ubuntu安装详见:Ubuntu16.04.5以lvm方式安装全记录docker安装详见:Ubuntu16.04安装Docker?在Linux上运行的Docker有三种不同的方式将数据从 Docker Host挂载到 Docker 容器,并实现数据的读取和存储:volumes.bind mounts.tmpfs.??三者的区别在于数据存储在d

Docker实践7:容器与主机拷贝数据

在Docker实践2中使用-v参数将主机与容器中相关目录联系在一起(挂载),所以我们可以用这个通道将想要互相拷贝的数据放入其中,这样就可以用cp命令来复制文件了. 除了这个办法,我们还可以分别用不同的命令来拷贝数据. 从容器中像主机拷贝数据 docker提供了cp命令,用法如下: # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a77a72ac178c tutum/apache-php:latest "/run.

docker基础知识 -- 操作容器(二)

实验环境 CentOS 7.5 容器 容器是镜像的运行实例.不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层:同时,容器中的应用进程处于运行状态. 进入容器 可使用以下命令进入容器: attach命令 docker container attach [OPTIONS] CONTAINER [root@kvm ~]# docker container attach --help Usage: docker container attach [OPTIONS] CONTAINER A

docker 基础 之操作容器

启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动. 新建并启动,所需要的命令主要为 docker run.例如,下面的命令输出一个 “Hello World”,之后终止容器. $ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world 下面的命令则启动一个 bash 终端,允许用户进行交互. $ sudo docker run -t -i ubuntu:

docker 修改镜像和容器的存放路径(最新自己实践了第三种方法)

原文:docker 修改镜像和容器的存放路径(最新自己实践了第三种方法) docker info :查看docker的存储等相关信息. 将路径修改至挂载磁盘中 前提:磁盘已挂载成功 方法一: 1.停止docker 服务 service docker stop 2.备份数据到新的存放路径 cp -r /var/lib/docker/* /mnt/docker 3.备份 /var/lib/docker 路径 mv /var/lib/docker /var/lib/dockerbak} 4.创建软连接

【容器云】传统金融企业的 Docker 实践

基于 Docker 的容器云-Padis 目前市面上基于容器云的产品有很多,对于平安而言,则是基于 Docker 的 Padis 平台.所谓 Padis,全称是 PingAn Distribution --平安分布式平台.Padis 基于 Docker,实现了平安内部的一个分布式平台.它的实现采用了 Mesos+Marathon(下面简称MM) 框架,可以完成应用程序的快速创建.运行.快速缩容扩容以及故障自愈的功能:平台上实现了独立 IP,可以实现任何集群与外部的或者传统的 IP 的通讯:平台负

Docker入门实践(三) 基本操作

Docker安装完毕,我们就可以试着来运行一些命令了,看看docker可以干什么. (一) 创建一个容器 首先,让我们运行一个最简单的容器,hello-world.如果安装没有问题,并运行正确的话,应该会出现下面的结果: $ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world c04b14da8d14: Pull comp

虚拟化容器docker实践基础

本文根据docker的镜像.容器.仓库.数据.网络五个方面详细讲述了docker的基础内容,通过本文学系后将能完成docker的基础操作,为以后dockerfile 使用打下技术基础. docker核心概念--镜像.容器.仓库 1. 镜像 是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署. 2. docker容器 镜像类似于操作系统,而容器类似于虚拟机本身.它可以被启动.开始.停止.删除等操作,每个容器都是相互隔离的. 3. docker仓库 存放镜像的一个