Docker 简介和安装

目录

Docker(容器)

Docker三大基本概念

Docker镜像

Docker容器

Docker Registry

Docker安装

Ubuntu

方法一

方法二

启动Docker

建立 docker 用户组

Docker镜像加速


Docker(容器)

是什么?

Docker是Go语言开发的基于Linux内核的操作系统层面的虚拟化技术

优点:

  • 彻底释放计算虚拟化
  • 提高应用的维护效率
  • 降低云计算应用开发成本

虚拟机和Docker

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
  • 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

Docker

Docker三大基本概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

Docker镜像

操作系统分为内核用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker 镜像,就相当于是一个root文件系统。比如官方镜像ubuntu 18.04 就包含了完整的一套Ubuntu 18.04最小系统的root 文件系统。

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。不包含任何动态数据,其内容在构建之后也不会被改变。

镜像为分层存储的架构,镜像只是一个虚拟的概念,不是ISO那样的打包文件,而是由一组文件系统组成。镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。分层存储的特征还使得镜像的复用定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

Docker容器

镜像和容器的关系,像是面向对象程序设计中的类和实例的关系。镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

容器的实质是进程,但与直接在宿主(host)执行的进程不同,容器进程运行于自己的独立的命名空间(opens new window)。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,就像是在一个独立于宿主的系统下操作一样。

容器也是分层存储的架构,每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,为容器运行时读写而准备的存储层称为容器存储层任何保存于容器存储层的信息都会随容器删除而丢失

容器不应该向其存储层写入任何数据,容器存储层要保持无状态化。所有文件写入操作应使用数据卷(Volume)绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,性能和稳定性更高。使用数据卷后,容器删除或者重新运行之后,数据却不会丢失

Docker Registry

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用镜像,我们就需要一个集中的存储、分发镜像的服务Docker Registry。

一个Docker Registry可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。

一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。

仓库名经常以两段式路径形式出现,比如 jwilder/nginx-proxy,前者往往意味着Docker Registry多用户环境下的用户名,后者则往往是对应的软件名。

Docker安装

Docker安装

Ubuntu

方法一

先卸载旧版本

sudo apt-get remove docker \

docker-engine \

docker.io

添加使用 HTTPS 传输的软件包以及 CA 证书

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

添加软件源的 GPG 密钥

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 向 sources.list 中添加 Docker 软件源

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装Docker

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

方法二

使用脚本自动安装

sudo sh get-docker.sh --mirror Aliyun
curl -fsSL get.docker.com -o get-docker.sh

启动Docker

sudo systemctl enable docker
sudo systemctl start docker

建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket (opens new window)与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组

建立docker组

sudo groupadd docker

将当前用户加入docker组

sudo usermod -aG docker $USER

退出当前终端并重新登录,进行测试,

docker run --rm hello-world

输出如下内容则安装正确

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Docker镜像加速

镜像服务地址:

  • 阿里云加速器(搜索“镜像” -> 容器镜像服务-> 镜像工具 -> 镜像加速器 -> 复制地址)
  • 网易云加速器 https://hub-mirror.c.163.com
  • 百度云加速器 https://mirror.baidubce.com

由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果到 docker-practice/docker-registry-cn-mirror-test 查看。

查看是否在 docker.service 文件中配置过镜像地址

systemctl cat docker | grep '\-\-registry\-mirror'

如果该命令有输出,那么执行

systemctl cat docker

查看 ExecStart= 出现的位置,修改对应的文件内容去掉 --registry-mirror 参数及其值,并按接下来的步骤进行配置。

如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在新建该文件)

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    " 阿里云加速地址 ",
    "https://mirror.baidubce.com"
  ]
}

重新启动服务

sudo systemctl daemon-reload
sudo systemctl restart docker

检查加速器是否生效,执行命令

docker info

输出如下内容,说明配置成功

Registry Mirrors:
    "https://hub-mirror.c.163.com"
    " 阿里云加速地址 "
    "https://mirror.baidubce.com"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奶油芝士汉堡包

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值