创建容器的工作原理:
当利用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)
 

Docker容器的管理的更多相关文章

  1. docker容器日志管理(清理)

    原文:docker容器日志管理(清理) 前言 在使用docker容器时候,其日志的管理是我们不得不考虑的事情.因为docker容器的日志文件会占据大量的磁盘空间.下面介绍的就是对docker容器日志的 ...

  2. paas架构之docker——容器进程管理

    1.docker进程管理 docker的进程管理命令ps的用法基本和ubuntu系统的用法一致 1.1. 查看docker进程 sudo docker ps –a 1.2. 附着到容器上 Sudo d ...

  3. Docker(七):Docker容器卷管理

    1.使用容器卷的原因:Docker容器产生的数据,如果不通过commit生成新的镜像,数据会在容器删除后丢失.为了能持久化保存和共享容器的数据,Docker提出了两种管理数据的方式:数据卷和数据卷容器 ...

  4. 2. docker 容器的管理(创建、查看、启动、终止、删除)

    一.创建 docker create:创建容器,处于停止状态. centos:latest:centos容器:最新版本(也可以指定具体的版本号). 本地有就使用本地镜像,没有则从远程镜像库拉取. 创建 ...

  5. docker容器日志管理

    docker容器日志分为两类:docker引擎日志(Docker本身运行的日志)和容器日志(各个容器内产生的日志) 一.Docker引擎日志: Centos系统下的docker引擎日志一般给syste ...

  6. Docker容器日志管理最佳实践

    目录 一 .Docker 引擎日志 二.容器日志 2.1.常用查看日志命令--docker logs 2.2 .Docker 日志 驱动 三. 生产环境中该如何储存容器中的日志 一.当是完全是标准输出 ...

  7. Docker 容器日志管理

    Docker 日志分为两类: Docker 引擎日志(也就是 dockerd 运行时的日志), 容器的日志,容器内的服务产生的日志. 一 .Docker 引擎日志 Docker 引擎日志一般是交给了 ...

  8. 基于spring-boot和docker-java实现对docker容器的动态管理和监控[附完整源码下载]

    ​ (我是个封面) docker简介 Docker 是一个开源的应用容器引擎,和传统的虚拟机技术相比,Docker 容器性能开销极低,因此也广受开发者喜爱.随着基于docker的开发者越来越多,doc ...

  9. Docker 的 Web 管理工具 DockerFly

    Dockerfly是基于 Docker1.12+ (Docker API 1.24+) 开发出Docker 管理工具,提供里最基本的基于 Docker 的管理功能,目的是能够方便广大Docker初学者 ...

随机推荐

  1. HackerRank-Python攻城歷程-2.List comprehensions

    if __name__ == '__main__': x = int(input()) y = int(input()) z = int(input()) n = int(input()) print ...

  2. python-Word模板填充-docxtpl

    docxtpl 按指定的word模板填充内容 安装 pip install docxtpl 示例 from docxtpl import DocxTemplate data_dic = { 't1': ...

  3. springBoot 项目war包部署及改为war包后资源路径错误问题

    参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...

  4. Ubuntu - apt -commands

    1. install sudo apt install [软件名] sudo apt-get install [软件名]Tab补全,可以使用sudo apt upgrade 升级apt, 也可以通过s ...

  5. c代码写数据到二进制的bin文件中

    需要将数据写入到bin文件中,打开该文件是一堆乱码,增加数据的保密性 例如:要写入的数据为一个字符串,加上若干个int型整数 #define _CRT_SECURE_NO_WARNINGS #incl ...

  6. python爬取某站磁力链

    不同磁力链网站网页内容都不同,需要定制 1,并发爬取 并发爬取后,好像一会就被封了 import requests from lxml import etree import re from conc ...

  7. JS中for循环变量作用域

    http://www.cnblogs.com/zhus/p/6513741.html  博主写得很好

  8. Java JDK 获取MongoDB中的所有账户

    记录我在Stack Overflow中的回答: https://stackoverflow.com/questions/31518107/mongodb-java-list-all-database- ...

  9. Java单例实现及分析

    双重检验锁实现方式 public class Singleton { //定义一个私有的空构造方法,防止直接用new实例化 private Singleton() {} private static ...

  10. VS中无法打开Qt资源文件qrc

    问题:双击项目中的qrc文件没反应. 解决方法: 网上搜索的方法说是要,右击->打开方式,添加qrceditor编辑器 但我的项目中Qt Resource Editor已经是默认的了. 那就是q ...