Docker操作实践(3):Docker的操作详解
admin
2023-03-05 12:02:14
0

今天是Docker讨论系列的终章,我们先从docker的命令开始介绍,再说明Docker run命令关键参数。


如果你还没看过前面的内容:

第一篇《容器的本质是什么?容器从何而来?》

第二篇《Docker的安装及架构介绍》



一张图了解docker命令

Docker操作实践(3):Docker的操作详解上图摘自:http://bingohuang.com/simplify-docker-image-2/



1. 概念介绍:

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引擎


2. 与Engine相关的命令

Docker version  查看docker版本

Docker info 显示 Docker 系统信息,包括镜像和容器数.

Docker events  从服务器获取实时事件


3. 与容器相关的命令

状态操作命令:

  • Docker start  从stop到running

  • Docker kill  从running到stop,直接kill容器进程

  • Docker stop  从running到stop,容器在停止前先完成一些保护性的动作之后再停止容器

  • Docker pause  暂停容器中所有的进程

  • Docker unpause  恢复容器中所有的进程


容器与镜像相关的操作命令:

  • Docker commit  将容器保存为一个新的镜像

  • Docker create  从镜像创建一个容器,该容器状态为stop

  • Docker run  从镜像创建一个容器并将该容器启动

  • Docker diff 检查自镜像运行之后,容器里文件结构的更改


容器与tar文件相关的操作命令:

  • Docker export  将容器导出为一个tar文件


容器自身的其他操作命令:

  • Docker inspect  获取容器/镜像的元数据

  • Docker attach  连接到正在运行中的容器

  • Docker port  列出指定的容器的端口映射

  • Docker ps 查看系统中的容器

  • Docker top 查看容器中运行的进程信息

  • Docker rm  删除容器

  • Docker logs  获取容器的日志

  • Docker wait  阻塞运行直到容器停止,然后打印出它的退出代码

  • Docker exec  在运行的容器中执行命令

  • Docker network 操作容器网络


4. 与镜像相关的命令


容器与镜像相关的操作命令:

  • Docker commit  将容器保存为一个新的镜像

  • Docker create  从镜像创建一个容器,该容器状态为stop

  • Docker run  从镜像创建一个容器并将该容器启动

  • Docker diff 检查自镜像运行之后,容器里文件结构的更改


镜像与tar files相关的命令:

  • Docker import  将tar文件load为镜像,会丢失相关的元数据和历史记录

  • Docker load  将tar文件load为镜像

  • Docker save  将镜像保存为tar文件


镜像与dockerfile相关的命令:

  • Docker build  基于dockerfile构建镜像


镜像与仓库相关的命令:

  • Docker pull  从仓库下载镜像

  • Docker push  将镜像上传至仓库


镜像自身的命令:

  • Docker images 列举镜像

  • Docker rmi 删除镜像

  • Docker tag 为镜像打上标签

  • Docker inspect  列出镜像的详细信息

  • Docker history  列出镜像的构建历史


5. 与 tar files相关的命令

  • Docker export  将容器导出tar文件

  • Docker import  将tar文件load为镜像,会丢失相关的元数据和历史记录

  • Docker load  将tar文件load为镜像

  • Docker save  将镜像保存为tar文件


6. 与dockerfile相关的命令:

  • Docker build  基于dockerfile构建镜像


7. 与Registry相关的命令:


镜像与仓库相关的命令:

Docker pull  从仓库下载镜像

Docker push  将镜像上传至仓库


仓库自身的命令:

Docker search  在仓库中查找某个镜像

Docker login  登录仓库

Docker logout  登出仓库


其他docker命令学习示意图

Docker命令学习示意图:

Docker操作实践(3):Docker的操作详解图片来源:https://blog.csdn.net/yuanfenger/article/details/73316481

Docker命令学习示意图:

Docker操作实践(3):Docker的操作详解图片来源:https://www.twblogs.net/a/5c290471bd9eee01606d2e41


Docker run命令简介

Docker run命令的作用在于从一个容器镜像生成一个容器实例并将其启动。


Docker run的主要命令参数如下:

Docker操作实践(3):Docker的操作详解


Docker run命令关键参数说明


1. -i  -t  -d

使用docker run -it [IMAGE_NAME] 可以启动一个容器,并进入命令行交互界面:


Docker操作实践(3):Docker的操作详解


使用exit可退出此容器

使用-d可以让容器在后台运行:


Docker操作实践(3):Docker的操作详解

2. --ip

--ip可以为容器指定ip地址,先使用docker network ls查看主机上的docker网络:


Docker操作实践(3):Docker的操作详解

Docker操作实践(3):Docker的操作详解


使用--ip参数启动容器:


Docker操作实践(3):Docker的操作详解

此时会报错,如果要使用自定义ip,只能使用自定义的容器网络。先创建自定义的容器网络:


Docker操作实践(3):Docker的操作详解


也可以在创建时手动指定容器的子网:


Docker操作实践(3):Docker的操作详解


重新运行指定容器ip的命令:


Docker操作实践(3):Docker的操作详解


执行成功,查看容器ip地址:


Docker操作实践(3):Docker的操作详解

3. -h  –name

-h指定容器中的主机名,--name指定容器的名字

Docker操作实践(3):Docker的操作详解

Docker操作实践(3):Docker的操作详解

4. -p

-p 可以将主机上的端口映射到容器中。-p 8088:80 表示将主机的8088端口映射到容器的80端口上:

Docker操作实践(3):Docker的操作详解


Docker操作实践(3):Docker的操作详解

5. -v

--privileged表示将对主机的文件更改的权限赋予此容器, -v 表示将主机的 /host/v1 目录映射给容器上的 /con/logs目录 ,如果容器中没有此目录,则会自动创建。执行命令 

docker run -it --privileged -v /host/v1:/con/logs centos

Docker操作实践(3):Docker的操作详解


在主机上的相应目录可看到容器中对该目录写入的内容


Docker操作实践(3):Docker的操作详解


为容器挂载主机上的卷并设置容器只有对此卷的只读权限: 

docker run -it –privileged -v /host/v1:/con/logs:ro centos


Docker操作实践(3):Docker的操作详解

6. -m -c

-m用来指定容器内存,-c可用于指定容器的cpu配额


我们可以下载progrium/stress容器来测试容器的配额指定。使用以下命令查看该容器有哪些测试功能:

Docker操作实践(3):Docker的操作详解

使用docker run -m 2000m可启动一个内存占用2000MB的容器,但该容器中未进行什么进程时,该容器并不会直接占用主机2000MB的内存。此时我们可以启动stress容器,并使用--vm 1和 –vm-bytes 2000M表示启动stress容器时在其中启动一个占用内存2000M的进程:

Docker操作实践(3):Docker的操作详解

如果我们在一个总限额为2000MB的stress容器中启动3个占用500MB的进程,总共1500MB,那么情况如下:

Docker操作实践(3):Docker的操作详解


在容器中是运行超过容器内存限额的进程的:

Docker操作实践(3):Docker的操作详解


关于cpu限制,--cpu-share表示主机上运行的容器的cpu使用权重的定义。由于主机上有4个cpu核,所有需 --cpu 4参数在容器中启动4个进程以便将主机的cpu全部占满。

Docker操作实践(3):Docker的操作详解


关于docker run中的 --cpus 参数,则是指定cpu的个数。当主机上有4个cpu时,容器只会使用总共1个cpu,也就是4分之1。

Docker操作实践(3):Docker的操作详解


此数值也可以为小数,如0.5 ,那么容器只会使用此主机8分之1的cpu。

Docker操作实践(3):Docker的操作详解


当数值与主机的cpu核数相同时,将可使用此主机的所有cpu配额,可以看到4个cpu全满。

Docker操作实践(3):Docker的操作详解

我们可以启动5个占满cpu的进程而不是4个,情况如下:

Docker操作实践(3):Docker的操作详解


作者:沈晓龙




好文推荐

Docker操作实践(2):Docker的安装及架构介绍

Docker操作实践(1):容器的本质是什么?容器从何而来?

使用sqlplus进行Oracle数据库批量自动发布

业务复杂、数据庞大、应用广怎办?了解下分布式事务的解决思路!

赣州银行增强科技创新,实现一键灾备切换


相关内容

热门资讯

跛脚总统的马克龙“愤怒诱饵”,... 文|龚克(法学博士、旅法媒体人)临近年末,英国牛津大学出版社公布了2025“年度词汇”:“愤怒诱饵”...
我来教教您“官方正版牛牛.怎么... 网上科普关于“官方正版牛牛有没有挂”话题很是火热,小编也是针对官方正版牛牛作*弊开挂的方法以及开挂对...
玩家分享攻略“白金岛游戏.开挂... 您好:白金岛游戏这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
最新民调:台湾近六成民众不认为... 海峡导报综合报道 12月23日,“台湾民意基金会”公布民进党政党形象,其中近六成民众认为,民进党不是...
【第一消息】“新大圣炸金花.是... 【第一消息】“新大圣炸金花.是不是有挂?”外卦神器下载您好,新大圣炸金花这个游戏其实有挂的,确实是有...
终于了解“闲来玩游戏.可以开挂... 有 亲,根据资深记者爆料闲来玩游戏是可以开挂的,确实有挂(咨询软件无需打...
【第一消息】“新世界拼三张.是... 家人们!今天小编来为大家解答新世界拼三张透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
今日重大通报“传送屋.有没有挂... 您好:传送屋这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏中...
终于了解“福建麻将.开挂神器?... 有 亲,根据资深记者爆料福建麻将是可以开挂的,确实有挂(咨询软件无需打开...
终于懂了“玄龙二厅.辅助开挂神... 有 亲,根据资深记者爆料玄龙二厅是可以开挂的,确实有挂(咨询软件无需打开...