第一本docker书-读书笔记 前三章

第一章

  • docker得益于现代Linux内核特性,如控件组(control group),命名空间技术(namespace)技术。让容器和宿主机之间的隔离更加彻底,容器有独立的网络和存储栈,还拥有自己的资源管理能力,使得同一台宿主机中的多个容器可以友好地共存。
  • docker依赖于写时复制模型,使修改应用程序也非常迅速。
  • docker鼓励面向服务的架构和为服务架构。docker推荐单个容器只允许一个应用程序或进程,这样就形成了一个分布式的应用程序模型。

docker的核心组件有:

  1. docker客户端和服务器。
  2. docker镜像。
  3. registry。
  4. docker容器。

1:docker是cs架构的程序,docker客户端向docker服务器(通过网络连接)或守护进程(通过unix套接字连接)发出请求,docker服务器管理容器。

2:镜像是容器的源代码,一个容器是由这些源代码构建出来的,体积很小(就一个文本文件)。

3:regisry是用来保存镜像的仓库,可以使用公共的也可以自己搭建私有的。

4:容器是基于镜像启动的,是一个镜像格式,一系列的标准的操作或者一个执行环境。

利用docker,可以消除本地开发环境,测试环境和生产环境之间的部署障碍。

linux通过namespace,可以实现文件系统,进程,网络隔离,使用cgroups,可以让cpu和内存之类的资源独立分配给每个docker容器。

第二章

这本书第二章是讲怎么安装docker的。书上的内容可能比较老了,就去按照docker的官方文档安装的。

在wsl2的Ubuntu20.04系统中安装docker

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

gpg是一种加密工具,这个语句的作用其实是将公钥添加到apt信任中。这样才能连接到docker的apt仓库里。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

service docker start
service docker status

这里如果看到Docker is running就说明docker服务已经启动啦~

sudo docker run hello-world

运行的时候他会先在本地查找一下有没有镜像,没有的话会去远程仓库拉取。

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete                                                                                             Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

运行输出。

第三章 docker入门

docker info显示docker信息。

docker run

docker run提供了docker容器的创建到启动的功能。

参数

-i 保证容器中的stdin是开启的。

-t告诉docker要为创建的容器分配一个伪tty的终端。

这样,-i -t就能为新创建的容器提供一个交互式的shell。

docker run -i -t ubuntu /bin/bash

通过这样就能生成一个镜像并运行。

上图的主机名发生了变化

这个命令会先检查本地是否存在Ubuntu镜像,没有的话会去官方的registry下载,下载完毕之后利用这个镜像创建一个新容器。最后告诉镜像要执行什么命令,在这个例子中,我们执行了/bin/bash命令,启动了一个Bash shell。

然后你就可以对这个镜像做任何自己想做的事情。比如你可以安装软件,当所有工作都结束时,输入exit,就退出镜像。

当你退出镜像时,就会发现这个镜像已经被关闭了。

image-20201116074540877

而此时你重新

执行docker run -i -t ubuntu /bin/bash,那会重新启动一个镜像,就会发现你之前执行的命令,安装的软件全部没有了。

--name可以为容器命名,利用命名可以更好地区分我们的镜像。

-ddocker会把容器放到后台运行。

可以利用这个创建一个守护容器。

docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

root@DESKTOP-3JK8RKR:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
60e7fecca197        ubuntu              "/bin/sh -c 'while t…"   52 seconds ago      Up 52 seconds                           daemon_dave

可以看到有个容器正在后台运行。

--restart在容器退出时是否重启容器。

--restart=always总是重启容器,不管退出代码是什么。

--restart=on-failure:5只有退出代码非0时,才重启容器,最多重启5次。

docker start

可以用来启动一个容器。

image-20201116075144721

然后光启动这个容器,是没有进去它的操作界面的。还需要附着到容器上。利用docker attact

image-20201116075407972

可以看到进去了之前的镜像,安装的vim命令还在。

docker log

想看容器打印了什么,我们可以通过docker logs来获取容器的日志。如果用-f参数,还能监控docker的日志。加上-t参数,会打印时间戳。

image-20201116080506217

docker top

想看容器的进程。

image-20201116080538192

docker exec

在容器内部执行命令。

docker exec -d daemon_dave touch /etc/new_config_file

然后我们进去也用exec进去容器里面。

docker exec -t -i daemon_dave /bin/bash

image-20201116081009579

可以看到文件确实被创建了。

docker stop

用stop停止守护进程。

image-20201116081215308

可以看出容器已经被停止了。

docker stop是向容器发送sigterm信号,是比较温和的关闭方法,如果想快速关闭,可以用docker kill。

docker inspect

可以获得容器的详细信息,通过-f可以只看某部分的信息。

docker rm

可以删除容器,但是需要注意的是,运行中的容器是无法删除的。

image-20201116082141404
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容