zoukankan      html  css  js  c++  java
  • 容器管理

      创建容器的常用选项

      管理容器的常用命令

    1、创建容器的常用选项

     

    指令 描述 资源限制指令 描述
    -i, --interactive 交互式 -m, --memory 容器可以使用的最大内存量
    -t, --tty 分配一个伪终端 --memory-swap 允许交换到磁盘的内存量
    -d, --detach 运行容器到后台 --memory-swappiness=<0-100> 容器使用SWAP分区交换的百分比( 0-100,默认为-1)
    -a, --attach list 附加到运行的容器 --memory-reservation 内存软限制, Docker检测主机容器争用或内存不足时所激活的软
    限制,使用此选项,值必须设置低于—memory,以使其优先
    --dns list 设置DNS服务器 --oom-kill-disable 当宿主机内存不足时,内核会杀死容器中的进程。建议设置了-
    memory选项再禁用OOM。如果没有设置,主机可能会耗尽内存
    -e, --env list 设置环境变量 --cpus 限制容器可以使用几个可用的CPU资源
    --env-file list 从文件读取环境变量 --cpuset-cpus 限制容器可以使用特定的CPU
    -p, --publish list 发布容器端口到主机(宿主机和容器的端口映射) --cpu-shares 此值设置为大于或小于默认1024值,以增加或减少容器的权重,
    并使其可以访问主机CPU周期的更大或更小比例
    -P, --publish-all 发布容器所有EXPOSE的端口到宿主机随机端口
    -h, --hostname string 设置容器主机名
    --ip string 指定容器IP,只能用于自定义网络
    --link list 添加连接到另一个容器
    --network 连接容器到一个网络
    --mount mount 挂载宿主机分区到容器
    -v, --volume list 挂载宿主机目录到容器
    --restart string 容器退出时重启策略,默认no
    [always|on-failure]
    --add-host list 添加其他主机到容器中/etc/hosts(容器中hosts文件中添加ip和主机的解析)



    先创建容器

    [root@node02 ~]# docker container run -itd --name bs busybox
    1ab0200029d705fabaa658ec98c434ea697542ad48bd7cee25d84e0c07375b8e
    
    run 创建容器(Run a command in a new container)
    bs  容器名
    busybox 镜像名
    1ab0200029d705fabaa658ec98c434ea697542ad48bd7cee25d84e0c07375b8e  容器id

      

    [root@node02 ~]# docker container attach bs   #进入一个容器名为bs的容器
    / # ifconfig 
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:1E:27:02  
              inet addr:172.30.39.2  Bcast:172.30.39.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
              RX packets:8 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:648 (648.0 B)  TX bytes:0 (0.0 B)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

    容器内执行exit 之前:

    [root@node02 ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    1ab0200029d7 busybox "sh" 17 minutes ago Up 6 minutes bs

    执行exit之后,我们会发现我们运行的进程没了:
    [root@node02 ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    这样之后我们可以操作启动镜像

    [root@node02 ~]# docker container start bs
    bs

      

    [root@node02 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    1ab0200029d7        busybox             "sh"                7 minutes ago       Up 6 minutes                            bs
    查看运行容器有哪些
    

     

    / # mount  
    /dev/mapper/centos-root on /etc/resolv.conf type xfs (rw,relatime,attr2,inode64,noquota)
    /dev/mapper/centos-root on /etc/hostname type xfs (rw,relatime,attr2,inode64,noquota)
    /dev/mapper/centos-root on /etc/hosts type xfs (rw,relatime,attr2,inode64,noquota)
     容器内执行mount命令,会有很多文件挂载,我们先看这三个,都会默认从宿主机挂载这三个文件,在容器重启,创建操作(都会重新挂载),我们在容器内修改这三个文件,重启之后都不会生效的(会丢失)。
    
    这里我么也可以通过下面的方式进入容器,这样的话,我们执行exit 的时候他不会让容器停止
    [root@node02 ~]# docker exec  -it bs sh
    / # exit
    

      

    [root@node02 ~]# docker container run -itd -p 8082:80 -h docker-nginx --name nginx8 --restart=always nginx:v1.7.9 
    603494fada81eca4e6aa5805eca6c3c8846b58fca2f4e836b93f8f24ec05cc19
    
    比如这个就是我们创建一个交互式的容器,镜像使用nginx:v1.7.9,容器名为nginx8,创建后的容器主机名是docker-nginx,做一个端口映射,宿主机的8082映射容器的80端口,同时我们加上--restart=always,容器退出时的重启策略是always
    --restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。
    --restart的参数说明:
    always:无论容器的退出代码是什么,Docker都会自动重启该容器。
    on-failure:只有当容器的退出代码为非0值的时候才会自动重启。另外,
    该参数还接受一个可选的重启次数参数,`--restart=on-fialure:5`表示当容器退出代码为非0时,Docker会尝试自动重启该容器,最多5次。

      

     创建容器的时候我们应该根据我们的业务场景来进行资源的限制

    2、管理容器的常用命令

    docker container ls  和  docker ps 都可以查看正在运行的容器

    docker inspect container_name  查看容器的详细信息

    指令 描述
    ls 列出容器
    inspect 显示一个或多个容器详细信息
    attach 附加本地标准输入,输出和错误到一个运行的容器
    exec 在运行容器中执行命令
    commit 创建一个新镜像来自一个容器
    cp 拷贝文件/文件夹到一个容器
    logs 获取一个容器日志
    port 列出或指定容器端口映射
    stats 显示容器资源使用统计
    top 显示一个容器运行的进程
    update 更新一个或多个容器配置
    stop/start 停止/启动一个或多个容器
    rm 删除一个或多个容器


    [root@node02 ~]# docker top nginx5  查看容器的运行进程
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                2323                2307                0                   11:12               pts/0               00:00:00            nginx: master process nginx -g daemon off;
    101                 2353                2323                0                   11:12               pts/0               00:00:00            nginx: worker process
    
    
    [root@node02 ~]# docker exec -it nginx5 bash   分配一个伪终端,执行一个bash或者sh命令
    root@docker-nginx:/# 
    

      

    [root@node02 ~]# docker container cp php-5.6.0.tar nginx7:/root
    [root@node02 ~]# docker container exec nginx7 ls /root
    php-5.6.0.tar
    

      

     博客总结来源于:http://edu.51cto.com/course/10659.html

  • 相关阅读:
    [置顶] 利用CXF发布webService的小demo
    【转】VirtualBox下Ubuntu共享文件
    【转】你应该知道的十个VirtualBox技巧与高级特性
    【转】ubuntu 12.04英文版设置成中文版
    【转】Ubuntu安装基础教程
    【转】Ubuntu更改语言环境设置
    【转】【教程】实现Virtualbox中的XP虚拟机和主机Win7之间的共享文件夹
    【转】VIRTUALBOX导入已有.VDI文件步骤
    winhex的使用
    【转】VC MFC 如何删除文件,目录,文件夹
  • 原文地址:https://www.cnblogs.com/smail-bao/p/9618353.html
Copyright © 2011-2022 走看看