Docker容器-容器操作

操作Docker容器

1、容器:
1.1、容器是Docker的另一个核心概念。简单来说,容器是镜像的一个实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态。
1.2、如果认为虚拟机是模拟运行的一整套操作系统(包括内核、应用运行态环境和其它系统环境)和跑在上面的应用。那么Docker容器就是独立运行的一个(或一组)应用。以及它们必须的运行环境。

2、创建容器:
2.1、使用docker [container] create 命令新创建一个容器;
2.1.1、基于centos 7.5.1804的镜像创建一个新容器

[email protected]:~$ sudo docker create -it centos:7.5.1804
[email protected]:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS          PORTS               NAMES
993f382831ef        centos:7.5.1804     "/bin/bash"         16 seconds ago      Created                             musing_hamilton

2.1.2、使用docker [container] create 命令新建的容器处于停止状态,可以使用docker [container] start 启动刚创建好的容器,这里基于容器的id号启动

[email protected]:~$ sudo docker start 993f382831ef
993f382831ef

查看已启动的容器
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
993f382831ef        centos:7.5.1804     "/bin/bash"         2 hours ago         Up 2 hours                              musing_hamilton

2.1.3、新建和启动容器一并操作了
用docker [container] run 创建并启动容器时,Docker在后台运行的标准操作包括:

1、检查本地是否存在指定的镜像,不存在就从Docker Hub仓库下载;
2、利用镜像创建一个容器,并启动该容器;
3、分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
4、从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去;
5、从网桥的地址池配置一个IP地址给容器;
6、执行用户指定的应用程序;
7、执行完毕后容器被自动终止;
指定一个bash终端启动,可以进行交互式操作。
[email protected]:~$ sudo docker run -it --name test1 centos:7.5.1804 /bin/bash
[[email protected] ~]# cd /usr/local/
[[email protected] local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[[email protected] local]# exit
exit

对于所创建的bash容器,当用户使用exit命令退出bash进程之后,容器也会自动退出,这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要了 

2.1.4、守护态运行
要让docker容器在后台以守护态形式运行。此时,可以通过添加-d选项来完成;

[email protected]:~$ sudo docker run --name centos -d centos:7.5.1804 /bin/bash -c "while true;do echo hello world; sleep 1;done"
b39568ae50aaeabda71288238ae7805e3894ad4b1c79930c669e2873a47c3f32

# 查看已运行容器信息:
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b39568ae50aa        centos:7.5.1804     "/bin/bash -c ‘while…"   2 minutes ago       Up 2 minutes                            centos

2.1.5、查看容器日志

docker [container] logs
        常用选项:
            -details:打印详细信息;
            -f, -follow: 持续保持输出;
            -since string: 输出从某个时间开始的日志;
            -tail string: 输出最近的若干日志
            -t, -timestamps: 显示时间戳信息;
            -until string: 输出某个时间之前的日志;

# 查看centos容器的信息:
[email protected]:~$ sudo docker logs centos
[email protected]:~$ sudo docker logs --details centos
[email protected]:~$ sudo docker logs -f centos

3、停止容器
3.1.1、暂停容器docker pause container

[email protected]:~$ sudo docker pause centos
centos
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED          STATUS                   PORTS               NAMES
b39568ae50aa        centos:7.5.1804     "/bin/bash -c ‘while…"   13 minutes ago      Up 13 minutes (Paused)                       centos

3.1.2、恢复容器使用docker unpause container

[email protected]:~$ sudo docker unpause centos
centos
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b39568ae50aa        centos:7.5.1804     "/bin/bash -c ‘while…"   15 minutes ago      Up 14 minutes                           centos

3.1.3、终止容器
使用docker container stop 终止运行中的容器、该命令首先向容器发送SIGTERM信号,等待一段超时后(默认为10s),再发送SIGKILL信号来终止容器;

[email protected]:~$ sudo docker stop centos
centos

停止完之后,如果是测试环境的话可以使用docker container prune 清除所有停止状态的容器。(注意,此操作还是小心为妙!)

[email protected]:~$ sudo docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
b39568ae50aaeabda71288238ae7805e3894ad4b1c79930c669e2873a47c3f32
ed66b56e02d0538571e6f72077ea2e46af675a405db25161fddd1455a8311a8b
aebfa755ad9d22084baa954df4b2fa2c685c2f1bdedc9fbfec865e03f6143b8c

Total reclaimed space: 48B
[email protected]:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

还可以直接强制停止容器、docker [container] kill 直接发送SIGKILL信号来强行终止容器;

[email protected]:~$ sudo docker kill centos
centos

容器被停止之后,这时有的测试环境的容器还需要再次用到需要给启动起来,就会用start来重新启动

[email protected]:~$ sudo docker start centos
centos
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
742109f79dc9        centos:7.5.1804     "/bin/sh"           2 minutes ago       Up 5 seconds                            centos

也可以使用restart来重启,它是先将一个运行的容器先停止,然后再重新启动起来;

[email protected]:~$ sudo docker restart centos
centos
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
742109f79dc9        centos:7.5.1804     "/bin/sh"           6 minutes ago       Up 22 seconds                           centos

4、进入容器内部
4.1.1、在运行一个容器时通常需要加上-d让它运行在后台,用户看不到容器中的信息,也无法进行操作,这时候要进入容器里进行操作就要使用exec或attach命令,这里只说exec命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Options:
    -d, --detach               Detached mode: run command in the background
     --detach-keys string   Override the key sequence for detaching a container
    -e, --env list             Set environment variables
    -i, --interactive          Keep STDIN open even if not attached
        --privileged           Give extended privileges to the command
    -t, --tty                  Allocate a pseudo-TTY
    -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
    -w, --workdir string       Working directory inside the container

# 进入centos容器里面,通过指定-it选项来保持标准输入打开,并分配一个伪终端,通过exec命令对容器执行操作是为常见的方式。
[email protected]:~$ sudo docker exec -it centos /bin/bash
[[email protected] /]# 

5、删除容器

docker [container] rm 删除容器
    Options:
        -f, --force     Force the removal of a running container (uses SIGKILL)
        -l, --link      Remove the specified link
        -v, --volumes   Remove the volumes associated with the container

示例:
[email protected]:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b25cf7e89f28        centos              "/bin/bash"         5 seconds ago       Exited (0) 3 seconds ago                       modest_agnesi
742109f79dc9        centos:7.5.1804     "/bin/sh"           23 minutes ago      Up 17 minutes                                  centos

# 使用rm删除的话,只能删除已经处于停止或退出状态的容器,已经在运行的容器删不掉的,如果要删除的需要加上-f选项
            [email protected]:~$ sudo docker rm b25cf7e89f28
            b25cf7e89f28

6、导入和导出容器
6.1.1、导出容器:

docker export [OPTIONS] CONTAINER
    Options:
        -o, --output string   Write to a file, instead of STDOUT

 可以通过-o选项指定导出的tar文件名,也可以直接通过重定向来实现。
 示例:
[email protected]:~$ sudo docker export -o centos-nginx.tar.gz centos
[email protected]:~$ ls
Desktop     Downloads         Music     Templates Pictures
centos-nginx.tar.gz          Dockerfile  examples.desktop
Documents   images            Public    Videos

6.1.2、导入容器
docker container import 导入变成镜像。

[email protected]:~$ sudo docker import centos-nginx.tar.gz  test/centos-nginx:v1.0
sha256:90bfdef73b8d3f1d868acd745c1555894ca3e185f27a8e49fd5252d4c23fa67f
[email protected]:~$ sudo docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
test/centos-nginx            v1.0                90bfdef73b8d        11 seconds ago      200MB

7、查看容器
7.1.1、查看容器详情
docker container inspect [options] CONTAINER [CONTAINER....]子命令

查看centos容器的具体信息,结果是以json格式返回
[email protected]:~$ sudo docker container inspect centos
[
    {
                        "Id": "742109f79dc9fc41cc4e4452b37be0f560021208a863192353899f58fbe2ca7c",
                        "Created": "2018-11-19T13:22:25.957033366Z",
                        "Path": "/bin/sh",
                        "Args": [],
                        "State": {
                            "Status": "running",
                            "Running": true,
                            "Paused": false,
                            "Restarting": false,
                            "OOMKilled": false,
                            "Dead": false,
                            "Pid": 5199,
                            "ExitCode": 0,
                            "Error": "",
                            "StartedAt": "2018-11-19T13:28:12.945203425Z",
                            "FinishedAt": "2018-11-19T13:28:12.180988774Z"
                        },
    }
         ..........
]

7.1.2、查看容器内进程
docker [container] top [options] CONTAINER [CONTAINER...]
类似于Linux中的top命令,会打印出容器内的进程信息,包括pid、用户、时间、命令等

# 查看centos容器内的进程信息:
[email protected]:~$ sudo docker top centos
UID            PID           PPID        C             STIME         TTY         TIME           CMD
root           5199          5177        0             21:28         pts/0       00:00:00       /bin/sh

7.1.3、查看统计信息
docker [container] stats [options] [CONTAINER..],可以显示CPU、内存、存储、网络等使用情况的统计信息

[email protected]:~$ sudo docker stats centos
CONTAINER ID        NAME                CPU %           MEM USAGE / LIMIT     MEM %           NET I/O             BLOCK I/O           PIDS
742109f79dc9        centos              0.00%           1.977MiB / 1.924GiB   0.10%           4.47kB / 0B         7.28MB / 0B         1

原文地址:http://blog.51cto.com/dklwj/2319090

时间: 2024-09-29 00:33:36

Docker容器-容器操作的相关文章

通过ssh方式登陆Docker容器的操作记录

前面几篇已经介绍了Docker基础环境的部署,下面介绍下通过ssh方式登陆Docker容器的操作记录 [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos7 7.3.1611 d5ebea14da54 2 weeks ago 311 MB <none> <none> d5c154b612c8 2 weeks ago 311 MB test latest ecefde07358

docker实战之centos6.5上安装、镜像、容器相关操作

学习docker前,理解以下几个概念有助于更好的使用docker.镜像,容器,仓库.镜像,就是一个操作系统环境,里面只有你需要的几个应用程序,如apache,mysql,php之类,只读模板.容器,从镜像创建的运行实例.可视为一个简易环境中和其中运行的应用.仓库,存放镜像的地方.学过git的同学可能更容易理解. 一.安装docker时,增加第三方源epel如果是centos7,下载并安装这个软件包#wget http://mirror.hust.edu.cn/epel/beta/7/x86_64

Docker基础-容器操作

1.创建容器 1.新建容器 可以使用docker create命令新建一个容器. [[email protected] ~]# docker create -it ubuntu:latest ffc9099be315f1b94876410c7d74dcd20e311e735e638080dd477534c063a6d6 [[email protected]-node1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

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:

005 docker的容器操作

一 . 概述 在前面的章节之中,我们可以从docker hub之中获取软件的镜像了,现在我们的主要任务就是 从镜像之中开启容器了. 总的来说,容器的启动要比docker 的敬相爱难过操作要麻烦一些,但是总体还是比较简单的. 二 . docker的容器操作 为了演示整个docker的容器操作,我们首先先下载一个tomcat算了,比较小,然后我们测试起来也比较方便. 细心的人已经看到了,我们下载一个tomcat竟然有120M,怎么比我们tomcat软件包大那么多呢? 其实,tomcat依赖了jdk,

Docker之容器常见操作

一.启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped ) 的容器重新启动.因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器. 新建并启动 例如,下面的命令输出一个 "Hello World",之后终止容器. $ docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world 这跟在本地直接执行 /bin/echo 'hello world' 几乎感

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

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

03 : docker - 容器常见操作

docker 容器常见操作 1: docker的容器管理命令详解: docker run -d -p 80:80 nginx:latestrun(创建并运行一个容器)-d 放在后台-p 端口映射-v 源地址(宿主机):目标地址(容器)nginx:latest docker镜像的名字,最后一个版本 运行一个centos,并进入容器终端: docker search centos 找到官方的centos镜像docker pull centosdocker run -it --name centos

docker安装 镜像和容器的操作

目录 1 docker 介绍 3 centos安装docker 2 容器和镜像 3 加速配置 4 镜像操作 5 容器操作 1 docker 介绍 # 1 虚拟化--->虚拟机,硬件虚拟化 # 2 docker:centos系统-->大约90m # 3 开源项目,诞生于2013---->17年以后-->两年多的时间 # 4 基于go语言实现的--->docker ce:免费的 docker ee:收费 # 5 轻量级的操作系统虚拟化解决方案 # 6 Docker 的基础是 Li