主导命令,容器管理

By admin in 美高梅手机版4858 on 2019年3月27日

一 、运转容器

① 、容器是 Docker 又一中坚概念。

简言之的说,容器是独自运作的几个或一组选拔,以及它们的运维态环境。对应的,虚拟机能够掌握为仿效
运作的一整套操作系统(提供了运营态环境和任何系统环境)和跑在上边包车型客车选用。

docker的主题命令

docker version :查看docker的版本号,包罗客户端、服务端、重视的Go等

[root@centos7 ~]# docker version
Client:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version: docker-1.8.2-10.el7.centos.x86_64
 Go version:   go1.4.2
 Git commit:   a01dc02/1.8.2
 Built:        
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version: 
 Go version:   go1.4.2
 Git commit:   a01dc02/1.8.2
 Built:        
 OS/Arch:      linux/amd64

docker info:查看系统(docker)层面音信,包罗管理的images,
containers数等

[root@centos7 ~]# docker info
Containers: 1
Images: 4
Storage Driver: devicemapper
 Pool Name: docker-8:3-36786088-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 2.059 GB
 Data Space Total: 107.4 GB
 Data Space Available: 12.93 GB
 Metadata Space Used: 1.765 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.146 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 1
Total Memory: 977.9 MiB
Name: centos7
ID: BUKD:MUW2:5X2D:G7BF:6Y7G:SKIH:LD6K:VUAC:3QA4:JY5C:S3DG:LFT2
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

search 搜索镜像

[root@centos7 ~]# docker search ubuntu12.10
INDEX       NAME                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/chug/ubuntu12.10x32         Ubuntu Quantal Quetzal 12.10 32bit  base i...   0                    
docker.io   docker.io/chug/ubuntu12.10x64         Ubuntu Quantal Quetzal 12.10 64bit  base i...   0                    
docker.io   docker.io/marcgibbons/ubuntu12.10                                                     0                    
docker.io   docker.io/mirolin/ubuntu12.10                                                         0                    
docker.io   docker.io/mirolin/ubuntu12.10_redis                                                   0         

pull 下载镜像

[root@centos7 ~]# docker pull ubuntu

run 使用镜像创制容器

[root@centos7 ~]# docker run ubuntu /bin/echo hello world

run 创设容器,并交互式的运维
那里会创设叁个新的容器。

[root@centos7 ~]# docker run -i -t ubuntu /bin/bash
root@c43c7d102baa:/# cat /etc/issue
Ubuntu 14.04.3 LTS \n \l
# -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开

当使用 docker run 来创立容器时,Docker 在后台运营的科班操作包含:

  • 检查本地是不是留存钦命的镜像,不存在就从国有仓库下载
  • 应用镜像创设并运行八个器皿
  • 分红2个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 主导命令,容器管理。从宿主主机配置的网桥接口中桥接二个虚拟接口到容器中去
  • 从地址池配置三个 ip 地址给容器
  • 推行用户钦命的应用程序
  • 执行完毕后容器被终止

run -d 守护态运营
越来越多的时候,供给让 Docker
容器在后台以守护态(Daemonized)情势运维。此时,可以通过添加 -d
参数来促成。
诸如上面的命令会在后台运转容器。

[root@centos7 ~]# docker run -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 1;done"

logs 查看容器的运作

上述个例子为指点。

[root@centos7 ~]# docker logs 4f34f95b6abc
hello world
hello world
hello world
hello world
hello world
hello world
hello world

ps 查看容器

[root@centos7 ~]# docker ps -h

Usage:  docker ps [OPTIONS]

List containers

  -a, --all=false       Show all containers (default shows just running)
  --before=             Show only container created before Id or Name
  -f, --filter=[]       Filter output based on conditions provided
  --format=             Pretty-print containers using a Go template
  --help=false          Print usage
  -l, --latest=false    Show the latest created container, include non-running
  -n=-1                 Show n last created containers, include non-running
  --no-trunc=false      Don't truncate output
  -q, --quiet=false     Only 
 numeric IDs
  -s, --size=false      Display total file sizes
  --since=              Show created since Id or Name, include non-running

attach 连接已经起步的器皿 / start -i 运转并再而三容器

[root@centos7 ~]# docker ps -a  #查看容器ID
[root@centos7 ~]# docker start <CONTAINER ID>   #启动容器
[root@centos7 ~]# docker attach <CONTAINER ID>  #连接容器,该容器必须是启动状态
或者
[root@centos7 ~]# docker start -i <CONTAINER ID>        #启动并连接容器

:不过利用 attach 命令有时候并不便宜。当四个窗口同时 attach
到同3个器皿的时候,全体窗口都会同步突显。当某些窗口因下令阻塞时,别的窗口也无能为力实施操作了。

commit 将容器的情事保存为镜像

[root@centos7 ~]# docker commit c43c7d102baa ubhttp
d47bbf8e50bace073de2b256b0360cfab029c11881f0d361fce7ae7464aa40ff
[root@centos7 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubhttp              latest              d47bbf8e50ba        54 seconds ago      248 MB
docker.io/ubuntu    latest              8693db7e8a00        7 days ago          187.9 MB
## 更为标准点的如下:
$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。

diff 命令查看容器内的文本变化

它能够列出容器内产生变化的文本和目录。那一个生成包蕴丰富(A-add)、删除(D-delete)、修改(C-change)

[root@centos7 ~]# docker diff c43c7d102baa

cp 命令拷贝文件

#从docker中往本地拷贝文件
[root@centos7 ~]# docker cp c43c7d102baa:/var/www/html/index.html /opt/   
[root@centos7 ~]# ls /opt/
index.html  rh
# 从本地往docker中拷贝文件
[root@centos7 ~]# docker cp aa c43c7d102baa:/var
[root@centos7 ~]# docker start -i c43c7d102baa
root@c43c7d102baa:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@c43c7d102baa:/# ls var/
aa  backups  cache  lib  local  lock  log  mail  opt  run  spool  tmp  www

inspect 收集有关容器和镜像的最底层消息

Docker inspect命令能够搜集有关容器和镜像的最底层新闻。这么些新闻包蕴:

  • 容器实例的IP地址
  • 端口绑定列表
  • 特定端口映射的探寻
  • 征集配置的详细音信

语法:

docker inspect container/image

kill 命令发送sigkill信号停止容器的主进度

语法:

docker kill [options] <container_id>

rmi 移除1个或四个镜像

docker rmi <image_id>
#注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器

wait 阻塞对点名容器的其余调用方法,直到容器甘休后脱离阻塞

docker wait <container_id>

tag 修改镜像的价签

[root@centos7 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              f59c7e5b1817        18 hours ago        192 MB
docker.io/ubuntu    latest              8693db7e8a00        7 days ago          187.9 MB
[root@centos7 ~]# docker tag f59c7e5b1817 zwx/ub_mv:127 
[root@centos7 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
zwx/ub_mv           127                 f59c7e5b1817        18 hours ago        192 MB
docker.io/ubuntu    latest              8693db7e8a00        7 days ago          187.9 MB

1. 简介

容器是从镜像创制的运行实例。它能够被运维、初叶、停止、删除。每种容器都以并行隔开分离的、保证安全的平台。

镜像是只读的,容器在运转的时候成立一层可写层用作最上层。

    一 、基于镜像新建1个器皿并运维

docker run -it  --rm -d -p 8888:8080 tomcat:8.0
  -i:交互式操作
  -t:终端
  -rm:容器退出后随之将其删除,可以避免浪费空间
  -p :端口映射
  -d :容器在后台运行

美高梅手机版4858 1

    指明了 -d 运转镜像,会回去容器的 id;即使不指明 -d
运维镜像,会打字与印刷出 catalina.out 的 日志,在 [crtl +c]
后,容器即结束运作。

    当使用 docker run 来成立容器时,Docker 在后台运维的专业操作包含:

— 检查本地是还是不是存在钦赐的镜像,不存在就从国有仓库下载
— 利用镜像创立并运营一个器皿
— 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
— 从宿主主机配置的网桥接口中桥接贰个虚构接口到容器中去
— 从地址池配置1个 ip 地址给容器

1.① 、运转容器

docker的导入导出操作

save 保存镜像为tar文件并发送到STDOUT:

[root@node2 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
zwx_ub              latest              f59c7e5b1817        7 seconds ago       192 MB
ubuntu              latest              8693db7e8a00        6 days ago          187.9 MB
[root@node2 ~]# docker save f59c7e5b1817 >zwx_ub.tar
# 我将zwx_ub这个镜像导出成tar包,并拷贝到centos7的测试机中导入,导入过程在下边。

load 从tar文件中载入镜像或仓库到STDIN:

[root@centos7 ~]# docker load -i zwx_ub.tar 
[root@centos7 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubhttp              latest              d47bbf8e50ba        About an hour ago   248 MB
<none>              <none>              f59c7e5b1817        16 hours ago        192 MB
docker.io/ubuntu    latest              8693db7e8a00        7 days ago          187.9 MB
[root@centos7 ~]# docker run -it f59c7e5b1817
root@e17558664f8d:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@e17558664f8d:/# ls /mnt/
zwx
# 可以看出,我导入zwx_ub这个镜像后,镜像ID并没有变化,我创建个容器并进入,发现打包前我创建的文件都在。

import 从本土文件系统导入二个镜像

例如,先下载了二个 ubuntu-14.04 的镜像,之后选拔以下命令导入
tar.gz的镜像能够在http://openvz.org/Download/template/precreated下载。

[root@centos7 ~]# cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:zwx
23997a971195cdd826f16a50573e480e1be1679729636178146425cdd46d1b52
[root@centos7 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              zwx                 23997a971195        28 seconds ago      214.9 MB

export 容器的导出

[root@centos7 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
16f568766019        ubuntu              "/bin/bash"         52 minutes ago      Up 45 minutes                           elegant_mcclintock
[root@centos7 ~]# docker export 16f568766019 >ubuntu.tar

import 容器的导入

能够将容器的tar文件再导入为镜像

$ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
test/ubuntu         v1.0                9d37a6082e97        About a minute ago   171.3 MB

别的,也能够通过点名 U大切诺基L 也许有些目录来导入,例如

$sudo docker import http://example.com/exampleimage.tgz example/imagerepo

:用户既能够运用 docker load
来导入镜像存款和储蓄文件到本地镜像库,也能够行使 docker import
来导入三个器皿快照到当地镜像库。那二者的界别在于容器快速照相文件将扬弃全体的历史记录和元数据音讯(即仅保留容器当时的快速照相状态),而镜像存款和储蓄文件将保存完整记录,容量也要大。其余,从容器快照文件导入时得以再一次钦定标签等元数据音讯。

2. 起步容器

运营容器有二种格局:

  • 依照镜像新建2个器皿并运行
  • 将在悬停情状(stopped)的器皿重新开动

— 执行用户钦定的应用程序

履行完结后容器被终止检查本地是或不是留存钦命的镜像,不存在就从国有仓库下载
— 利用镜像创制并运维二个容器
— 分配四个文件系统,并在只读的镜像层外面挂载一层可读写层
— 从宿主主机配置的网桥接口中桥接1个虚构接口到容器中去
— 从地址池配置贰个 ip 地址给容器
— 执行用户钦命的应用程序
— 执行实现后容器被甘休

1.1.1、docker run 启动

[root@bfd-v7 ~]# docker run ubuntu:12.04 /bin/echo 'Hello docker'
Hello docker

美高梅手机版4858 2

当使用 docker run 来创建容器时,Docker 在后台运转的专业操作包涵:

自我批评本地是或不是留存钦赐的镜像,不设有就从国有仓库下载
利用镜像创立并运行1个容器
分配二个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 从地址池配置二个 ip
地址给容器 执行用户钦赐的应用程序 执行完成后容器被截止

2.1 新建并运营

docker run -t -i ubuntu:14.04 /bin/bash

  • -t 选项让Docker分配2个伪终端(pseudo-tty)并绑定到容器的标准输入上
  • -i 则让容器的科公输子入保持开拓。

当使用 docker run 来创设容器时,Docker 在后台运转的正式操作蕴含:

  • 反省本地是不是存在钦点的镜像,不设有就从国有仓库下载
  • 采用镜像成立并运维三个器皿
  • 分红多个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接叁个虚构接口到容器中去
  • 从地址池配置二个 ip 地址给容器
  • 履行用户钦赐的应用程序
  • 执行完结后容器被停止

    二 、运维三个甘休景况(stopped)的容器

docker container start [CONTAINER ID]

美高梅手机版4858 3

1.1.贰 、运维已告一段落容器 docker start

docker ps -a 查看全部的包涵截至的器皿。 docker start id

美高梅手机版4858 4

2.2 后台运转

越来越多的时候,必要让
Docker在后台运营而不是直接把执行命令的结果输出在时下宿主机下。此时,能够透过添加
-d 参数来落到实处。

docker run -d ubuntu:14.04 /bin/sh -c "hello world"

贰 、操作容器

1.2守护态运维

Docker 容器在后台以守护态(Daemonized)情势运营。此时,可以透过添加 -d

数来落实。

[root@bfd-v7 ~]# docker run -d ubuntu:12.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

美高梅手机版4858 5

能够透过 docker logs 容器id 查看,如下:
美高梅手机版4858 6

2.3 运营已结束容器

能够动用 docker start 命令,直接将3个曾经终止的容器运维运维。

    ① 、查看容器列表

#列出运行中的容器
docker ps
docker container ls
#列出所有容器(包含终止状态)
docker ps -a
docker container ls -a
#查看具体容器的信息
docker inspect [container ID or NAMES]

  #查阅容器的施用财富气象
  docker stats [container ID or
NAMES]

美高梅手机版4858 7

美高梅手机版4858 8

1.③ 、容器甘休指令docker stop 容器id

[root@bfd-v7 ~]# docker stop 容器id

远在终止情形的容器,能够透过 docker start 命令来再一次开动。

3. 结束容器

能够动用 docker stop 来终止1个运作中的容器。
此外,当Docker容器中钦点的利用终结时,容器也自动结束。

  • 甘休景况的容器能够用 docker ps -a 命令看到
  • 处在终止境况的器皿,能够经过 docker start 命令来重新开动。
  • docker restart: 命令会将3个运营态的器皿终止,然后再重复起动它。

    二 、查看容器日志

docker logs [OPTIONS] [container ID or NAMES]
  --details 显示更多的信息 
  -f, --follow 跟踪实时日志 
  --since string 显示自某个timestamp之后(2018-07-23 00:00:00)的日志,或相对时间,如42m(即42分钟) 
  --tail string 从日志末尾显示多少行日志, 默认是all 
  -t, --timestamps 显示时间戳 
  --until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

1.四 、进入容器attach

[root@bfd-v7 ~]# docker run -idt ubuntu:12.04
[root@bfd-v7 ~]# docker attach 容器id

#退出容器
[root@bfd-v7 ~]# exit  

美高梅手机版4858 9

4. 跻身容器

动用-d 参数时,容器运维后会进入后台。
有些时候须要进入容器实行操作,包罗利用docker attach 命令或 nsenter
工具等。

美高梅手机版4858 10

1.5容器的导出和导入

5. 去除容器

能够采纳 docker rm 来删除二个地处终止情状的器皿
docker rm -f 删除二个运作中的容器

常用命令:

  • docker run -t -i ubuntu:12.04 /bin/bash
  • docker build
  • docker commit
  • docker tag: 修改镜像的竹签
  • docker load: 从导出的地面文件中再导入到本地镜像库
  • docker save
  • docker rmi: 移除本地的镜像
  • docker rm: 移除容器
  • docker rmi $(docker images -q -f “dangling=true”)
  • docker stop

    叁 、进入容器

docker exec -it [CONTAINER ID] bash

美高梅手机版4858 11

    进入容器后输入 exit 大概 [crtl + c] 即可退出容器。

1.5.1、导出 docker export指令
[root@bfd-v7 container]# docker ps
[root@bfd-v7 container]# docker export fb8a9e65bc79 > wyl-nginx.tar

美高梅手机版4858 12

③ 、终止容器

1.5.2、导入 docker import指令
#v1是一个tag标志
[root@bfd-v7 container]# docker import wyl-nginx.tar  wyl-nginx:v1
# 返回一个id
sha256:d2bcce7afd455adfb17916c9a582f118a156957e5e081eccc48d1443e5af2722

美高梅手机版4858 13
注:用户既能够使用 docker load
来导入镜像存储文件到地头镜像库,也得以利用 docker import
来导入1个器皿快速照相到当地镜像库。那两者的界别在于容器快照文件将扬弃全数的历史记录和元数据消息(即仅保留容器当时的快速照相状态),而镜像存储文件将保存完整记录,体量也要大。别的,从容器快速照相文件导入时得以再度钦赐标签等元数据消息。

    壹 、直接删除容器

#删除终止状态的容器
docker rm [CONTAINER ID]
#删除所有处于终止状态的容器
docker container prune
#删除运行中的容器
docker rm -f [CONTAINER ID]

#批量停止所有的容器
docker stop $(docker ps -a -q)
#批量删除所有的容器
docker rm $(docker ps -a -q)

1.6刨除容器 rm指令

美高梅手机版4858,能够应用 docker rm
来删除二个地处终止情状的器皿,假使要去除四个周转中的容器,能够添加 -f
参数。Docker 会发送 SIGKILL 信号给容器。

#删除一个停止的容器,先查看所有的容器,选择要删除的容器id
[root@bfd-v7 container]# docker ps -a
[root@bfd-v7 container]# docker rm 7099f90eb56a

美高梅手机版4858 14

#删除一个正在运行的容器
[root@bfd-v7 container]# docker rm -f fb8a9e65bc79

美高梅手机版4858 15

美高梅手机版4858 16

    二 、终止容器进度,容器进入终止境况(stopped)

docker container stop [CONTAINER ID]

美高梅手机版4858 17

④ 、容器的导出和导入

    一 、容器的导出

#这样将导出容器快照到本地文件
docker export [CONTAINER ID] > [tar file]

美高梅手机版4858 18

    贰 、容器的导入

#从容器快照文件中再导入为镜像
cat [tar file] | docker import - [name:tag]

美高梅手机版4858 19

    docker import
来导入3个器皿快照到地方镜像库时,将放弃全部的历史记录和元数据消息(即仅保留容器当时的快速照相状态),既然那样,那么
docker export 是还是不是足以考虑作为侵袭时的当场保卫安全吗?

 

 参考资料:《Docker —
从入门到执行》

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有