docker - 入门简介及环境配置

Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、更能高效地利用服务器。 容器更多的用于表示软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。

基本概念

  • 镜像(Image):
    Docker 镜像就相当于是一个静态的root文件系统。就类似一个模板,根据这个模板可以创建多个容器。

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

  • 仓库(Repository):
    用来保存镜像的地方。有共有仓库和私有仓库之分。

相关资源

官网文档

Docker官方镜像仓库
账号:6143****@qq.com
Docker官方文档

培训材料

大IT一体机培训PPT

安装

Docker客户端安装

Docker是一种流行的容器化平台,它可以帮助开发人员和运维团队简化应用程序的构建、部署和管理过程。本文将介绍Docker的安装、配置以及一些常用的命令示例,帮助您快速上手并开始使用这个强大的工具。
docker常用的Linux平台安装命令如下,

1
2
3
4
5
6
# Install on Debian/Ubuntu
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Install Docker Engine on CentOS
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Windows/Mac上安装,可以直接在官网下载 Docker Desktop 程序,并按照提示进行安装。

启动docker

1
sudo systemctl start docker

确定安装成功

1
sudo docker run hello-world

vscode 的Docker插件

  • docker

初始配置

权限配置

因为Docker引擎使用Linux中的cgroups和namespaces等技术来隔离容器,这些技术需要访问主机系统资源。Docker的守护进程是绑定到Unix socket 的,因此总是默认是root身份运行的。所以默认必须使用root用户或使用 sudo 才能运行docker引擎,其他用户需要将其添加到Docker组中才能运行Docker命令。
因此在初次安装Docker后,我们需要进行如下的系统组创建,以便使非root用户运行docker

1
2
3
4
5
6
7
8
9
10
11
# 创建docker组
sudo groupadd docker

# 将用户添加到Docker组中, 也可以以root身份直接编辑/etc/group 文件,
sudo usermod -aG docker <your-user>

# 激活组的变更,重新登录也可以激活
newgrp docker

# 测试docker安装和配置
docker run hello-world

仓库配置

Docker官方仓库

Docker Hub 是目前Docker官方维护的仓库,其中已经包括了数量超过15000个镜像。大部分需求都可以通过在Docker Hub中直接下载镜像来使用。
配置也比较简单,直接使用docker login, 输入用户信息即可

1
2
3
4
5
6
7
8
9
10
(base) root@manager[Fri Jul 07] ~/.docker
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: $username
Password:
WARNING! Your password will be stored unencrypted in /home/root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

第三方仓库

第三方仓库笔者只接触使用过阿里云的ACR,针对ACR服务,本身就提供了比较详细的代码示例。
整体注册登录也比较简单。

1
$ docker login --username=bgioseq registry.cn-shenzhen.aliyuncs.com

私有仓库

由于企业业务的特殊性,可能有时候,我们不方便讲我们的镜像放到第三方仓库,以防代码泄露等危险,这种时候,我们可以选择构建私有仓库。
私有仓库构建,可以通过运行官方registry镜像来实现。默认情况下,仓库会被创建在容器的/var/lib/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。

1
2
# 可以使用Docker的 registry 镜像
docker run -d -p 5000:5000 --name registry registry:2

然后你的私有仓库就创建好了,私有仓库的就是 localhost:5000
当然也许你会使用你的同事创建的私有仓库,那你就需要更新下本地配置文件/etc/docker/daemon.json ,将IP改为部署服务的主机IP

1
2
3
4
5
{
"insecure-registries":[
"192.168.1.1:5000"
]
}

仓库配置信息会保存在~/.docker/config.json文件中;

1
2
3
4
5
6
7
8
9
10
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "YVuYJlbkBkb2NrZXI="
},
"registry.cn-shenzhen.aliyuncs.com": {
"auth": "bGlZXE6TGl1Ym8xMjM="
}
}
}

其中auth是使用 base64 编码的秘钥凭据,可以使用base64 -d 反编译获取原账号密码

镜像配置

因为在访问中,我们可能会有一些需求访问官方镜像,和其他类似Conda、R的官方仓库使用一样,官方镜像也许会存在一些网络上的问题,所以我们可以调整使用国内的镜像,以便提高访问速度

1
2
3
4
#配置阿里云镜像
sudo yum-config-manager \
--add-repo \
https://registry.docker-cn.com
镜像加速器 镜像加速器地址
Docker 中国官方镜像 https://registry.docker-cn.com
DaoCloud 镜像站 http://f1361db2.m.daocloud.io
Azure 中国镜像 https://dockerhub.azk8s.cn
科大镜像站 https://docker.mirrors.ustc.edu.cn
阿里云 https://<your_code>.mirror.aliyuncs.com
七牛云 https://reg-mirror.qiniu.com
网易云 https://hub-mirror.c.163.com
腾讯云 https://mirror.ccs.tencentyun.com

部署完以后,可以拉个镜像试一下 ​

1
2
3
4
5
6
7
8
(base) [root@VM_0_8_centos ~]\# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
(base) [root@VM_0_8_centos ~]\#

-------------本文结束感谢您的阅读-------------