Docker基础 --循序渐进学Docker(李金榜、尹烨......)学习笔记

docker基础

Docker三个重要的概念:仓库(Repository),镜像(Image)和容器(Container),他们是Docker的三大基础组件。
容器都是基于镜像创建的,基于一个镜像可以创建若干个名字不同但是功能相同的容器

基础指令

对容器的基本操作

docker ps :查看当前主机正在运行的容器(看到的容器CONTAINER ID 是简化的16位ID)
docker ps --no-trunc :查看完整版ID
docker ps -a |grep CONTAINER ID:查看容器状态
docker stop CONTAINER ID:停止容器的运行
docker start CONTAINER ID:启动容器
CONTAINER ID 默认为128位,但是对于大多数主机而言,ID的前16位即可保证其在本机的唯一性。
CONTAINER ID 虽然能保持唯一性,但是很难记忆。在创建容器时,可以用–name参数给容器起一个别名,然后通过这个名字来代替CONTAINER ID 对容器进行操作。eg:docker start wordpress
docker inspect CONTAINER ID:查询容器的所有基本信息,包括运行情况、存储位置、配置参数 、网络设置等。(以JSON格式显示)
“-f”可以使用Golang的模板来提取指定部分的信息
eg:docker inspect -f {{.State.Status}} MyWordPress:提取容器中的运行状态
docker inspect -f {{.NetworkSettings.IPAddress}} MyWordPress:提取容器的IP地址
docker logs MyWordPress:查询日志
如果需要打印最新的日志,可以加上“-f”参数
docker stats MyWordPress:实时查看容器所占有的资源,如CPU、使用率、内存、网络和磁盘开销。
容器内部命令
Docker原生的方式支持登入容器 docker exec ,形式如下:
docker exec + 容器名 + 容器内执行的命令
如果希望在容器内连续执行多条命令,可以叫上 “-it” 参数,就相当于以root的身份登录容器内,可以连续执行命令,执行完成后通过“exit”退出。
多容器管理
Docker的理念是“一个容器一个进程”,如若一个服务由多个进程组成,就要创建多个容器组成一个系统,相互分工和配合来对外提供完整的服务。所以,容器间需要进行数据交互,在同一台主机下,‘docker run’命令提供‘–link’选项建立容器间的互联。前提条件是,使用‘–link container A’创建容器B时,容器A必须已经创建并且启动运行。所以容器启动是按顺序的。

Docker Compose

Docker 提供的一个容器编排工具,就是用来解决‘–link’时需要手动控制容器启动先后的麻烦,它允许用户在‘YAML’格式的模板中定义一组相关联的应用容器。这组容器根据配置模板中的‘–link’等参数,对启动的优先级进行自动排序,简单执行一条‘docker-compose up’,就可以把同一个服务中的多个容器一次创建和启动。
在这里插入图片描述回合

需要注意的是:
虽然Docker Compose可以判断容器间的依赖并生成正确的启动顺序,但这种顺序仅仅是容器的顺序,假如容器A的进程a依赖容器B的进程b,但进程b启动需要耗费很长时间的话,这时虽然容器B先于容器A创建和启动,但进程a仍然可能和进程不能正常交互而启动失败,因为虽然容器B已启动但进程b还没完全启动完成。在这种情况下,Docker Compose无能为力,需要进程a自行增加一些判断等待和重试机制
在这里插入图片描述
在这里插入图片描述

对镜像的基本操作

和CONTAINER ID 一样,每个镜像有唯一的IMAGE ID,同样默认是128位,使用前16位的缩写模式,也可以用镜像的名字(REPOSITORY)和版本号(TAG)来组成位移标识。如果省略版本号,默认使用最新版本(lastest)

镜像分层

docker采用分层机制,就是将不同镜像相同的部分独立成层,再在这层上根据各自不同的部分形成各自的独立分层,这样就大大减小了存储资源的占用。然后docker利用联合文件系统将各层文件系统叠加在一起,在用户看来就像一个完整的文件系统。
通过 docker history 可以查看镜像分了多少层,每一层都做了什么操作,
eg:docker history sameersbn/redis 如果操作的内容显示不完整,在docker history 后 + ‘–tree’选项打印出完整的内容。
对于分层的docker镜像有两个特性:一是,已有的镜像只能读不能修改,一个是,上层镜像优先级高于底层镜像。

Dockerfile

Dockerfile:指定整个工程所有文件的编译顺序、编译规则。在这里插入图片描述
ENTRYPOINT关键字指定将来创建的新容器使用/sbin/entrtpoint.sh来启动redis服务。

定制私有镜像

使用debootstrap工具,可以定制自己需要的最小化的Linux基础镜像。
下面制作一个Ubuntu14.04的基础镜像,并把系统时区修改为东八区(可以修改系统的任何文件):

sudo apt-get install debootstrapsudo debootstrap --arch amd64 trusty ubuntu-trusty http://mirrors.163.com/ubuntu/cd ubuntu-trustysudo cp usr/share/zoneinfo/Asia/Shanghai etc/localtime

提交生成基础镜像,名字为ubuntu1404-baseimage:1.0

cd ubuntu-trusty
sudo tar -c .|docker import - ubuntu1404-baseimage:1.0

现在就可以通过docker images来查看新创建的镜像了

指令解读

docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress

这条指令做如下事情:
先,
在本机查找有没有wordpress镜像,如果没有,就到Docker的仓库查找该镜像,然后下载到本机。
然后,
基于wordpress镜像创建容器MyWordPress,提供个人博客服务。

所以, 我们通过docker ps 可以查到名字(Name)是MyWordPress,所使用的镜像是WordPress的镜像。

Docker指令的基础用法

docker + 命令关键字(COMMAND) + 一系列的参数([arg…])
比如,对于下面的指令来说,run是命令关键字,后面的内容都是参数
docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress

如果不了解某个命令关键字支持哪些参数,可以通过下面指令获取帮助:
docker COMMAND --help

十分钟的动手教程

列出Docker的版本号

Docker引擎有两部分组成:Daemon和Client。Daemon是Service端的守护进程,接收Client端指令,管理本机上的所有镜像和容器;Client是通过Docker命令个Daemon交互,对Docker的镜像和容器进行查询、添加、修改、启动、停止等操作。
Docker命令的基本用法是:
docker + 选项 + 命令关键字 + 参数,其中。选项和参数是可选的。
格式如下:
docker [OPTIONS]COMMAND[arg…]
查看版本:
docker version

在Docker 的官方镜像仓库,搜索别人已经制作好的Docker镜像

Docker镜像仓库(Docker Hub Registry)储存着大量的Docker化的应用镜像,我们可以基于Docker官方仓库的镜像来创建我们的应用。
Docker查询镜像的格式为:
docker search
eg : docker search tutorial

在Docker官方镜像仓库,镜像的全名都是如下格式:
/
这是因为,每个用户都可以在Docker官方镜像仓库注册自己的账户,发布自己的Docker镜像,使用 “用户名+镜像名” 的命名方式,可以让不同用户拥有相同的镜像名而不相互干扰。

下载镜像,并以这个镜像为模板,在Docker容器中运行一个shell命令,输出“hello world”

下载镜像

docker 提供 docker pull 命令来下载镜像

创建并启动容器

docker run 命令用来创建和运行docker容器,至少需要两个参数,一个是镜像名,一个是在容器中需要运行的命令
想要运行容器并输出,需要shell命令 ‘echo’

eg:docker run learn/tutorial echo “hello world”

在docker容器中安装ping软件包,把他提交为新镜像

修改容器

在容器中安装实用工具ping,在非交互式模式下安装软件包是不要忘记使用‘-y’
docker run learn/tutorial apt-get install -y ping

创建新镜像

docker支持在原有镜像的基础上,只提交增量修改部分,形成一个新镜像。
首先,使用docker ps -l 找到安装过ping包的容器的ID号。
然后,把这个容器提交(docker commit)为新镜像,镜像名为’learn/ping’。
docker commit 698(CONTAINER ID) learn/ping

基于安装有ping软件的新镜像为模板,在docker容器中测试ping命令工作是否正常

docker run learn/ping ping www.baidu.com

docker ps: 查询所有正在运行的容器
docker inspect:通过ID查看单个容器详细内容。

如果测试ping命令工作正常,说明安装有ping软件的镜像制作正确,然后,我们就把这个新镜像提交到docker官方镜像仓库,分享给大家使用

docker images :显示当前主机上的所有镜像
docker push:推送主机的镜像到Docker仓库

docker push learn/ping

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24955.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华大基因尹烨的一些语录记录

不谋万事者不足谋一时,而不谋全局者不足谋一域。 技术的发展从来不以人的意志为转移。 实际上到那个点上就要认知,我们的人智是有穷尽的,生命是有尽头的。这个时候就一定要升维,不能还是在一个频道上去学了,一定要向上…

教你在Midjourney中直接使用ChatGPT

v ChatGPT云炬学长 ​之前零零碎碎的分享过很多教程, 基础的比较多,进阶的也有不少, 当时是想着将高级技巧收录进高阶教程里来收费的, 所以就有很多东西,一直都没有分享出来。 但现在不想靠卖这种教程来创收了。 …

AI时代的赚钱思路:23岁女网红如何利用AI技术年入4亿?

一、AI技术为网红赚钱创造新途径 23岁美国网红Caryn Marjorie(卡琳玛乔丽)正同时交往1000多个男朋友。 作为一个在Snapchat上坐拥180万粉丝的美女,她利用人工智能(AI)技术,打造了一个AI版本的自己&#x…

四端口以太网二层交换机的搭建实录

在大三下学期,我学习了“通信芯片设计基础”这门课。说实话,我最感兴趣的还是Verilog实践部分,对于模电学的不好的我,再去学PN结、mos管电路等等知识实在是遭罪。最后老师布置了一个很难的大作业,具体要求见下图&#…

​AI + 非遗文化传播,人工智能师资培训重磅招募

大语言模型热度空前,诸如文心一言、 ChatGPT 等已经能够与人对话互动、回答问题、协助创作,逐渐应用于人们的工作和生活,也引发了社会热议。为推动大模型及人工智能相关专业人员的培养,同时将人工智能技术融入非遗文化传播&#x…

优质的懒人资源导航工具集合网站

说到「效率工具」,一直是大家关心的热点话题。作者网站的初心就是我自己也很懒,每一次需要什么东西的时候,都是需要话费很大的一个时间去寻找,但是有了这网站会让你方便许多。 今天,我决定重新开始做一个安利 。 这次我…

用好 ChatGPT | Prompt 编写模式:如何将思维框架赋予机器

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 人类相对于其他动物更擅长于类比、概念抽象、符号化等高级认知活动,这些认知活动可以帮助人类在面对新问题时,从已有的知识和经…

申论视频课

小马哥 申论题型 答题纸,一行25个字努力得到小题的百分之80分 一 归纳概括题 10-15分,一般放在第一题一般都是小题拉开差距不超过200字符合体干,来自材料,是否有发挥空间问啥答啥、理解语义、读出层次、富有逻辑找到到底做了啥…

申论 立意列大纲

作者:一片仙鱼儿 链接:https://www.zhihu.com/question/56957544/answer/521207352 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 最重要也最首要工作:立意列大纲 阅卷人会首先看你的文章结构,也就…

python改写文章脚本,chatgpt4.0api接口测试问题总结

大家好,我是淘小白~ 最近gpt4.0要放开了,有很多朋友想用4.0的接口来改写文章,这几天就做了一个脚本出来,在中间有些测试,趁着还有印象,来总结一下! 1、gpt4与gpt3.5比较 4.0的模型输入量更大…

web -【在线聊天】

1.WebSocket: 1.1 什么是WebSocket: WebSocket是HTML5开始提供的一种在单个TCP连接上进行双工通讯的协议。 WebSocket 使得客户端与服务器之间得数据交换变得简单,允许服务器端主动向客户端推送数据。在WebSocket API中,浏览器与服…

合理利用chatGpt之新冠阳性

🏆今日学习目标: 🍀合理利用chatGpt之新冠阳性 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入:…

基于PyQt5实现同一窗口下多界面切换

基于Python和PyQt5实现同一窗口下多界面切换 基于pyqt5控件tabWidget结合按钮点击实现同窗口下固定区域不同界面切换。每个子界面均可拓展相应的功能。 效果 pyqt5同窗口多界面切换

统计平均分:从文本读取成绩并计算平均分,将平均分写入文本文件保存

从文本读取成绩并计算平均分,将平均分写入文本文件保存。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址:htt…

x in ‘Yy‘ == x in list(‘Yy‘)? ‘‘ 空字符串是任何字符串的子串

‘’ 空字符串是任何字符串的子串。如果您也喜欢 in 的简洁美妙, in 字符串时切记谨慎操作。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础…

Python 代码打造小 AI ,罗列博文笔记总索引列表,自动生成“我的博文笔记总索引”博文 HTML5 源码文本

Python 代码打造小 AI ,获取笔记信息,自动阅读量降序编排索引列表,生成 HTML5 源码文本。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》&…

Python四则运算“计算器”——整数口算练习“小程序”

设定练习题目数量、最大取值整数数,即时判定,答对鼓励答错打印正确结果。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简…

排位赛结果“测谎”

甲乙丙丁说的关于排位赛结果只正确一半,根据甲乙丙丁说的信息求出正确的排位赛结果顺序。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那…

阶乘求和——求1~202320232023的阶乘总和的末尾九位数字

求 1! 2! 3! … 202320232023! ,总和的末尾九位数字。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址:ht…

五分钟写一段Python代码调用ChatGPT服务

ChatGPT是现在很火的AI网站,行业里现在也有很多围绕ChatGPT进行二次开发的AI产品。今天我们来试一试,花5分钟时间,自己写一段代码来调用ChatGPT的服务。希望通过这个小任务,大家会发现ChatGPT和AI离我们并不遥远。 前提&#xff…