前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第一本docker书-读书笔记 前三章

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

作者头像
用户7962184
发布2020-11-20 15:09:13
5500
发布2020-11-20 15:09:13
举报
文章被收录于专栏:没事多喝水

第一章

  • 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

代码语言:javascript
复制
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
代码语言:javascript
复制
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

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

代码语言:javascript
复制
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
代码语言:javascript
复制
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
代码语言:javascript
复制
service docker start
service docker status

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

代码语言:javascript
复制
sudo docker run hello-world

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

代码语言:javascript
复制
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。

代码语言:javascript
复制
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会把容器放到后台运行。

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

代码语言:javascript
复制
docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
代码语言:javascript
复制
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

在容器内部执行命令。

代码语言:javascript
复制
docker exec -d daemon_dave touch /etc/new_config_file

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

代码语言:javascript
复制
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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一章
  • 第二章
    • 在wsl2的Ubuntu20.04系统中安装docker
    • 第三章 docker入门
      • docker run
        • 参数
      • docker start
        • docker log
          • docker top
            • docker exec
              • docker stop
                • docker inspect
                  • docker rm
                  相关产品与服务
                  容器镜像服务
                  容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档