今天是Docker讨论系列的终章,文章将从组织的学习利用一张图片分享几个概念和命令来了解Dorcker的命令,后面再细化的在说明Docker run命令。java
若是你还没看过前面的内容:sql
第一篇《容器的本质是什么?容器从何而来?》docker
第二篇《Docker的安装及架构介绍》数据库
上图摘自:http://bingohuang.com/simplify-docker-image-2/centos
Images:docker镜像。可将容器转化为镜像,也可从镜像运行出一个个的容器实例。相似于虚拟机模板的概念。服务器
Container:容器。网络
有running\stopped\pause三种状态,相似于虚拟机的概念。架构
Tar files:能够将镜像打包为tar文件,也能够将打包后的tar文件从新load为镜像分布式
Dockerfile:构建镜像的声明式配置文件。Docker技术的核心亮点之一。当咱们从一个基础镜像(centos镜像)构建一个另外一个基础镜像(如java镜像)时,通常不会使用的在centos镜像中直接安装java的方式,而是将java软件与centos镜像放置于一块儿,在相同目录下编写好dockerfile,dockerfile中定义了java镜像安装的命令和环境配置参数等安装信息,而后使用docker build命令就能够将这些软件及配置文件打包成一个java镜像。这样作的好处就是经过这种声明式的构建方式最终构建了一个纯净的镜像文件。学习
Registry:镜像仓库。用于存储镜像文件。
Engine:docker引擎
Docker version 查看docker版本
Docker info 显示 Docker 系统信息,包括镜像和容器数.
Docker events 从服务器获取实时事件
状态操做命令:
容器与镜像相关的操做命令:
容器与tar文件相关的操做命令:
容器自身的其余操做命令:
容器与镜像相关的操做命令:
镜像与tar files相关的命令:
镜像与dockerfile相关的命令:
镜像与仓库相关的命令:
镜像自身的命令:
镜像与仓库相关的命令:
Docker pull 从仓库下载镜像
Docker push 将镜像上传至仓库
仓库自身的命令:
Docker search 在仓库中查找某个镜像
Docker login 登陆仓库
Docker logout 登出仓库
Docker命令学习示意图:
图片来源:https://blog.csdn.net/yuanfenger/article/details/73316481
Docker命令学习示意图:
图片来源:https://www.twblogs.net/a/5c290471bd9eee01606d2e41
Docker run命令的做用在于从一个容器镜像生成一个容器实例并将其启动。
Docker run的主要命令参数以下:
使用docker run -it [IMAGE_NAME] 能够启动一个容器,并进入命令行交互界面:
使用exit可退出此容器
使用-d可让容器在后台运行:
--ip能够为容器指定ip地址,先使用docker network ls查看主机上的docker网络:
使用--ip参数启动容器:
此时会报错,若是要使用自定义ip,只能使用自定义的容器网络。先建立自定义的容器网络:
也能够在建立时手动指定容器的子网:
从新运行指定容器ip的命令:
执行成功,查看容器ip地址:
-h指定容器中的主机名,--name指定容器的名字
-p 能够将主机上的端口映射到容器中。-p 8088:80 表示将主机的8088端口映射到容器的80端口上:
--privileged表示将对主机的文件更改的权限赋予此容器, -v 表示将主机的 /host/v1 目录映射给容器上的 /con/logs目录 ,若是容器中没有此目录,则会自动建立。执行命令
docker run -it --privileged -v /host/v1:/con/logs centos
在主机上的相应目录可看到容器中对该目录写入的内容
为容器挂载主机上的卷并设置容器只有对此卷的只读权限:
docker run -it –privileged -v /host/v1:/con/logs:ro centos
-m用来指定容器内存,-c可用于指定容器的cpu配额
咱们能够下载progrium/stress容器来测试容器的配额指定。使用如下命令查看该容器有哪些测试功能:
使用docker run -m 2000m可启动一个内存占用2000MB的容器,但该容器中未进行什么进程时,该容器并不会直接占用主机2000MB的内存。此时咱们能够启动stress容器,并使用--vm 1和 –vm-bytes 2000M表示启动stress容器时在其中启动一个占用内存2000M的进程:
若是咱们在一个总限额为2000MB的stress容器中启动3个占用500MB的进程,总共1500MB,那么状况以下:
在容器中是运行超过容器内存限额的进程的:
关于cpu限制,--cpu-share表示主机上运行的容器的cpu使用权重的定义。因为主机上有4个cpu核,全部需 --cpu 4参数在容器中启动4个进程以便将主机的cpu所有占满。
关于docker run中的 --cpus 参数,则是指定cpu的个数。当主机上有4个cpu时,容器只会使用总共1个cpu,也就是4分之1。
此数值也能够为小数,如0.5 ,那么容器只会使用此主机8分之1的cpu。
当数值与主机的cpu核数相同时,将可以使用此主机的全部cpu配额,能够看到4个cpu全满。
咱们能够启动5个占满cpu的进程而不是4个,状况以下:
对于Docker的分享就先讨论到这边
以后咱们仍是会持续发布优质的文章
若是您以为实用,欢迎关注+分享哟!
Docker操做实践(1):容器的本质是什么?容器从何而来?