创建容器的工作原理:
当利用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. 手写JavaScript常用的函数

    一.bind.call.apply函数的实现 改变函数的执行上下文中的this指向,但不执行该函数(位于Function构造函数的原型对象上的方法) Function.prototype.myBind ...

  2. JAVA中的String类(详解)

    Java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.String是一个类不属于基本数据类型. 可以从源码中看到,String是一个final类型. String ...

  3. Foxmail设置IMAP和STMP服务器

  4. Spring MyBatis多数据源(同包)

    创建基本的包 entity service dao 为了区分多数据源 一个用的是Mysql 一个是Oracle 方便测试, 创建MyBatis dao 映射 xml 文件 创建db.propertie ...

  5. b/s 和c/s的区别

    简单解释: B/S最大优势为客户端免维护,适用于用户群庞大,或客户需求经长发生变化的情况. C/S功能强大,可以减轻服务器端压力,如果用户的需求特别复杂,用C/S. 全面: Client/Server ...

  6. Redis(三)-数据类型

    1.五种数据类型:字符串类型.字符串列表.有序字符串集合.哈希.字符串集合 2.字符串类型常用操作 (1)赋值 $ set key value (2)取值 $ get key (3)删除 $ del ...

  7. Python第三方库的安装 --Python3

    1.使用安装包管理工具安装:easy_install .pip/pip3 easy_install:easy_install是由PEAK(Python Enterprise Application K ...

  8. erlang的热更新

    erlang作为一个为电信级别而出现的语言,热更新是其最重要的特性之一  热代码升级-Erlang允许程序代码在运行系统中被修改.旧代码能被逐步淘汰而后被新代码替换.在此过渡期间,新旧代码是共存的. ...

  9. what API can do

    APIs for manipulating documents loaded into the browser. The most obvious example is the DOM (Docume ...

  10. VS2015+VisualSVN+TortoiseSVN安装及使用

    1. SVN 是什么 SVN 是 Apache Subversion 的缩写,是一个开放源代码的版本控制系.这些数据放置在一个中央资料档案库(repository) 中. 这个档案库很像一个普通的文件 ...