• Docker容器的管理


    创建容器的工作原理:
    当利用docker run来创建容器时,Docker在后台运行的标准操作包括:检查本地是否存在指定的镜像,不存在就从公有仓库下载,利用镜像创建并启动一个容器分配一个文件系统,并在只读的镜像层外面挂在一层可读写层;从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;从地址池配置一个ip地址给容器;执行用户指定的应用程序,执行完毕后容器被终止。
    注:容器不是一个虚拟机,因为他就是一个进程,如果我们退出,这个进程就退出了。
    创建容器的常用选项:
    指令 描述
    -i, --interactive                交互式
    -t, --tty                        分配一个伪终端
    -d, --detach                     运行容器到后台
    -a, --attach list                附加到运行的容器
    --dns list                       设置DNS服务器
    -e, --env list                   设置环境变量
    --env-file list                  从文件读取环境变量
    -p, --publish list               发布容器端口到主机
    -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
    创建一个bs容器,并在后台运行。
    [root@linux-docker01 ~]# docker container run -itd --name bs busybox
    0490de553573ae9d30ca68a15a901e2b8c150528a11248c832ac36e42d5a41b4
    进入到bs容器里面
    [root@linux-docker01 ~]# docker container attach bs #如果退出不终止容器的话,按Ctrl+p+q即可
    / #
    创建bs1容器并传入a变量
    [root@linux-docker01 ~]# docker container run -itd -e a=123 --name bs1 busybox
    d46fd062fd659f712b8128aa4706389317d32ed64b885b38efd8a068739bf655
    [root@linux-docker01 ~]# docker exec -it bs1 sh
    / # echo $a
    123
    运行nginx01容器,并分配容器端口为80,与宿主机8080端口作为映射。
    [root@linux-docker01 ~]# docker container run -itd -p 8080:80 --name nginx01 nginx
    8b90babd6f7a2042bb1121ed11b048bbf9f382be31426f51f94aae8445b8c844
    [root@linux-docker01 ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    8b90babd6f7a nginx "nginx -g 'daemon of…" 18 seconds ago Up 17 seconds 0.0.0.0:8080->80/tcp nginx01
    资源限制命令:
    指令 描述
    -m,--memory                  容器可以使用的最大内存量
    --memory-swap                 允许交换到磁盘的内存量
    --memory-swappiness=<0-100>   容器使用SWAP分区交换的百分比(0-100,默认为-1)
    --memory-reservation          内存软限制,Docker检测主机容器争用或内存不足时所激活的软限制,使用此选项,值必须设置低于—memory,以使其优先
    --oom-kill-disable            当宿主机内存不足时,内核会杀死容器中的进程。建议设置了-memory选项再禁用OOM。如果没有设置,主机可能会耗尽内存
    --cpus                        限制容器可以使用多少可用的CPU资源
    --cpuset-cpus                 限制容器可以使用特定的CPU
    --cpu-shares                  此值设置为大于或小于默认1024值,以增加或减少容器的权重,并使其可以访问主机CPU周期的更大或更小比例
    管理容器的常用选项:
    指令 描述
    ls                            列出容器
    inspect                       显示一个或多个容器详细信息
    attach                        附加本地标准输入,输出和错误到一个运行的容器
    exec                          在运行容器中执行命令
    commit                        创建一个新镜像来自一个容器
    cp                            拷贝文件/文件夹到一个容器
    logs                          获取一个容器日志
    port                          列出或指定容器端口映射
    stats                         显示容器资源使用统计
    top                           显示一个容器运行的进程
    update                        更新一个或多个容器配置
    stop/start                    停止/启动一个或多个容器
    rm                            删除一个或多个容器
    查看当前运行的容器
    [root@linux-docker01 ~]# docker container ls
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    8b90babd6f7a nginx "nginx -g 'daemon of…" 3 days ago Up 3 days 0.0.0.0:8080->80/tcp nginx01
    d46fd062fd65 busybox "sh" 3 days ago Up 3 days bs1
    0490de553573 busybox "sh" 3 days ago Up 3 days bs
    查看容器的详细信息
    [root@linux-docker01 ~]# docker container inspect 0490de553573
    使用attach命令进入容器时会卡住,是因为将当前linux标准的输入输出附加到nginx容器中,那么nginx容器中是运行有一个进程的,可以用top命令查看到nginx -g daemon off是运行在前台实时运行了。这是用attach命令附加标准的输入输出就会造成进程的堵塞,附加不进去,也一直就会等待。
    [root@linux-docker01 ~]# docker attach nginx01
    [root@linux-docker01 ~]# docker top nginx01
    UID PID PPID C STIME TTY TIME CMD
    root 12421 12409 0 14:55 pts/0 00:00:00 nginx: master process nginx -g daemon off;
    101 12445 12421 0 14:55 pts/0 00:00:00 nginx: worker process
    可以使用exec进入容器
    [root@linux-docker01 ~]# docker exec -it nginx01 bash
    拷贝宿主机的文件到容器中
    [root@linux-docker01 ~]# docker container cp anaconda-ks.cfg bs1:/root
    [root@linux-docker01 ~]# docker container exec bs1 ls /root/
    anaconda-ks.cfg
    查看容器的日志
    [root@linux-docker01 ~]# docker logs 8b90babd6f7a
    查看容器的端口
    [root@linux-docker01 ~]# docker container port nginx01
    80/tcp -> 0.0.0.0:8080
    查看容器资源的实时利用率
    [root@linux-docker01 ~]# docker stats nginx01
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
    8b90babd6f7a        nginx01             0.00%               1.348MiB / 3.685GiB   0.04%               648B / 0B           0B / 0B             2
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
    8b90babd6f7a        nginx01             0.00%               1.348MiB / 3.685GiB   0.04%               648B / 0B           0B / 0B             2
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
    8b90babd6f7a        nginx01             0.00%               1.348MiB / 3.685GiB   0.04%               648B / 0B           0B / 0B             2
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
    8b90babd6f7a        nginx01             0.00%               1.348MiB / 3.685GiB   0.04%               648B / 0B           0B / 0B             2
    删除所有的容器
    [root@linux-docker01 ~]# docker rm -f $(docker ps -q -a)
     
  • 相关阅读:
    渗透测试靶场
    Ubuntu kylin优麒麟下配置Hadoop环境
    虚拟机win+IIs+asp+access搭建网站过程
    百度增强搜索
    渗透入门——术语概述
    api如何获取cookie
    还在纠结接口文档的事儿呢?
    为什么需要API管理平台
    自动生成接口文档的三种方式
    轻量化API测试工具整理
  • 原文地址:https://www.cnblogs.com/xiaoliangxianshen/p/9231240.html
Copyright © 2020-2023  润新知