美文网首页
Docker-6 容器管理

Docker-6 容器管理

作者: Habit_1027 | 来源:发表于2020-05-19 10:05 被阅读0次

容器管理

创建新容器但不启动:

# docker create -it daocloud.io/library/centos:5 /bin/bash

创建并运行一个新Docker 容器:同一个镜像可以启动多个容器,每次执行run子命令都会运行一个全新的容器

# docker run -it --restart=always centos /bin/bash   #最常用
-i :标准输入输出
-t:分配一个终端或控制台
--restart=always:容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭   
也适用于create选项
-d  后台运行容器,并返回容器ID;

如果执行成功,说明CentOS 容器已经被启动,并且应该已经得到了 bash 提示符。

--rm:默认情况下,每个容器在退出时,它的文件系统也会保存下来.另一方面,也可以保存容器所产生的数据。但是当你仅仅需要短暂的运行一个容器,并且这些数据不需要保存,你可能就希望Docker能在容器结束时自动清理其所产生的数据。这个时候就需要--rm参数了。

注意:--rm 和 -d不能共用
容器名称
为容器分配一个名字,如果没有指定,docker会自动分配一个随机名称是 docker run子命令的参数
--name= Assign a name to the container
# docker run -it --name 名字  daocloud.io/centos:6    #名字自定义

如果你在执行docker run时没有指定--name,那么自动生成一个随机字符串UUID。这个UUID标识是由Docker deamon生成的。但是对于一个容器来说有个name会非常方便,当你需要连接其它容器时或者类似需要区分其它容器时,使用容器名称可以简化操作。无论容器运行在前台或者后台,这个名字都是有效的。

若要断开与容器的连接,并且关闭容器:容器内部执行如下命令

root@37b8b8cdd75f:/# exit

如果只想断开和容器的连接而不关闭容器:

 快捷键:ctrl+p+q
查看容器:
1.只查看运行状态的容器:
#docker ps
2.-a  查看所有容器
#docker ps -a
3.只查看所有容器id:
# docker ps -a -q  
查看容器详细信息:

inspect :用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。

目标:查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。

提示:可以使用容器id的前面部分,不需要完整的id。

[root@yixuan ~]# docker inspect bbdc71e   #机器上运行的一个容器ID或者名称
[
    {
        "Id": "d95a220a498e352cbfbc098c949fc528dbf5a5c911710b108ea3a9b4aa3a4761",
        "Created": "2017-07-08T03:59:16.18225183Z",
        "Path": "bash",
        "Args": [],
        "State": {
            "Status": "exited",
           "Running": false,
            "Paused": false,
           "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,

容器信息很多,这里只粘贴了一部分 
启动容器:
# docker start  name   #容器ID也可以
这里的名字是状态里面NAMES列列出的名字,这种方式同样会让容器运行在后台
关闭容器:
# docker stop  name

# docker kill  name      --强制终止容器 

杀死所有running状态的容器

# docker kill $(docker ps  -q) 
stop和kill的区别:

​ docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出,当然,容器内程序可以捕获该信号并自行处理,例如可以选择忽略。而docker kill则是给容器的进程发送SIGKILL信号,该信号将会使容器必然退出。

删除容器:
# docker rm 容器id或名称
要删除一个运行中的容器,添加 -f 参数 --慎用。先stop在删除   
根据格式删除所有容器:
# docker rm $(docker ps -qf status=exited)
-f:过滤


pause :暂停容器中所有的进程
unpause:恢复容器内暂停的进程,与pause对应

[root@yixuan ~]# docker pause c7
[root@yixuan ~]# docker ps 
CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS                  PORTS               NAMES
3c0e0f43807d        98ebf73aba                     "/bin/bash"         7 minutes ago       Up 7 minutes (Paused)   80/tcp              c7
[root@yixuan ~]# docker unpause c7  #恢复
重启容器:
#docker restart name   
让容器运行在后台:
# docker run -dit 镜像ID /bin/bash
-d后台运行必须要加-it

如果在docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。此时所有I/O数据只能通过网络资源或者共享卷组来进行交互。因为容器不再监听你执行docker run的这个终端命令行窗口。但你可以通过执行

docker attach来重新附着到该容器的回话中。

[root@yixuan ~]# docker attach 容器ID/容器名字

注:

容器运行在后台模式下,是不能使用--rm选项的(老版本是这样,新版本已经可以同时生效)

rename ---修改容器名称

[root@yixuan ~]# docker rename mytest testmy
[root@yixuan ~]# docker ps -a 
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS               NAMES
774c02898fb1        daocloud.io/library/nginx   "/bin/bash -c 'while…"   5 minutes ago       Up About a minute   80/tcp              testmy  

stats

​ Display a live stream of container(s) resource usage statistics---显示容器资源使用统计信息的实时流

[root@yixuan ~]# docker stats
--当有容器在运行的时候动态显示容器的资源消耗情况,包括:CPU、内存、网络I/O
连接容器:前提是容器在运行状态中

方法1.attach

# docker attach 容器id   #前提是容器创建时必须指定了交互shell 

方法2.exec

通过exec命令可以创建两种任务:后台型任务和交互型任务

1.交互型任务:
[root@yixuan ~]# docker exec -it  容器id  /bin/bash
root@68656158eb8e:/# ls

2.后台型任务:不进入容器里面执行命令
[root@yixuan ~]# docker exec 容器id touch /testfile

监控容器的运行:

可以使用logs、top、wait这些子命令

​ logs:使用logs命令查看守护式容器

​ 可以通过使用docker logs命令来查看容器的运行日志,其中--tail选项可以指定查看最后几条日志,使用-f选项可以跟踪日志的输出,直到手动停止。

[root@yixuan ~]# docker pull daocloud.io/library/nginx
[root@yixuan ~]# docker images 
[root@yixuan ~]# docker run -it --name nginx1 98ebf73 /bin/bash 
root@8459191dbe7c:/# /usr/sbin/nginx   #启动nginx
ctrl+p+q --- 退出
[root@yixuan ~]# docker inspect nginx1  #找到ip地址
[root@yixuan ~]# curl -I http://172.17.0.3  #宿主机访问容器可以访问成功
HTTP/1.1 200 OK
Server: nginx/1.17.1
Date: Mon, 09 Mar 2020 14:49:40 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 25 Jun 2019 12:19:45 GMT
Connection: keep-alive
ETag: "5d121161-264"
Accept-Ranges: bytes
[root@yixuan ~]# curl -I http://172.17.0.3  #继续测试访问

在开启一个终端:
[root@yixuan ~]# docker logs -f nginx1  
root@8459191dbe7c:/# /usr/sbin/nginx
root@8459191dbe7c:/# 172.17.0.1 - - [09/Mar/2020:14:49:33 +0000] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0" "-"
172.17.0.1 - - [09/Mar/2020:14:49:40 +0000] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0" "-"


# docker logs --tail -2 App_Conainer

​ top:显示一个运行的容器里面的进程信息

[root@yixuan ~]# docker top  nginx   #容器ID也可以

​ wait :--捕捉容器停止时的退出码

执行此命令后,该命令会"hang"在当前终端,直到容器停止,此时,会打印出容器的退出码

在第一个终端执行停止容器命令
[root@yixuan ~]# docker stop nginx1
===============================
[root@yixuan ~]# docker wait 01d8aa  #第二个终端操作
0

docker run 之后容器退出的状态码:
0,表示正常退出
非0,表示异常退出(退出状态码采用chroot标准)
125,Docker守护进程本身的错误
126,容器启动后,要执行的默认命令无法调用
127,容器启动后,要执行的默认命令不存在

宿主机和容器之间相互COPY文件

​ cp的用法如下:

Usage: 
docker cp [OPTIONS] CONTAINER:PATH LOCALPATH   --从容器拷贝到本机
docker cp [OPTIONS] LOCALPATH CONTAINER:PATH   --从本机拷贝到容器

​ 如:容器nginx中/usr/local/bin/存在test.sh文件,可如下方式copy到宿主机

[root@yixuan ~]# docker exec -it nginx /bin/bash
root@2a9a18b4a485:/# cd /usr/local/bin/
root@2a9a18b4a485:/usr/local/bin# touch test.sh
ctrl+p+q  退出
[root@yixuan ~]# docker cp mytest:/usr/local/bin/test.sh /root/ 

修改完毕后,将该文件重新copy回容器

[root@yixuan ~]# ls
anaconda-ks.cfg  test.sh
[root@yixuan ~]# echo "123" >> test.sh
[root@yixuan ~]# docker cp /root/test.sh mytest:/usr/local/bin/

相关文章

  • Docker-6 容器管理

    容器管理 创建新容器但不启动: 创建并运行一个新Docker 容器:同一个镜像可以启动多个容器,每次执行run子命...

  • Docker系列三:监视管理容器

    检视容器及利用cockpit管理容器 其他开源监视工具 Shipyard优点: 支持镜像管理、容器管理。 支持控制...

  • 帮助文档-docker-v1.0.1

    镜像管理 容器管理

  • docker.容器管理

    第三节.docker容器管理创建容器常用选项 管理容器常用命令 进入容器的俩种方法

  • CoreOS容器云企业实战(9)--基于Rancher的Dock

    进入系统 进入主机管理界面--->容器管理某一台主机上的容器对于某一个容器的监控image.png容器资源的管理 ...

  • Docker命令使用

    Docker命令分类 容器生命周期管理 容器操作 容器rootfs命令 镜像仓库 本地镜像管理 版本信息 Dock...

  • 笔记:DOCKER相关

    镜像管理 看本机存在的images 删除某个镜像,参数是ImageID: 容器管理 启动容器: 查看运行中的容器:...

  • 运行 Anbox

    概述 Anbox 运行时主要由两个分开的实例构成: 容器管理器 会话管理器 容器管理器的工作是管理容器的建立,并在...

  • 008

    自动化的容器管理 对于运行Docker容器来说,Googler容器引擎是一款强大的集群管理器和编排系统。容器引擎将...

  • 学生管理系统

    学生管理系统---》管理的是多个学生 ----》需要容器存储学生-----》考虑使用哪种容器----》列表?字典?...

网友评论

      本文标题:Docker-6 容器管理

      本文链接:https://www.haomeiwen.com/subject/mayvohtx.html