1. 什么虚拟机和docker?

docker是容器的一种解决方案。
虚拟机和容器是解决硬件资源高效运行的不同方案。两者最大的区别就是,容器间共用宿主机的操作系统。虚拟机可以安装不同的操作系统,而且必须安装操作系统。

2. 什么镜像和容器

镜像是容器的模板,如类和实例的关系,如模具和模型之间的关系。

3. 基本概念

4. docker体系结构

docker client与 server socket或restful api进行通信。
docker client--》docker daemon 处理 --》返回docker client。

Dockerfile 构建镜像的步骤

Dockerfile,一条条的指令告诉docker如何构建镜像。
应用程序、各种依赖:

  • 精简操作系统
  • 运行时环境
  • 应用程序
  • 应用程序配置文件
  • 应用程序第三方依赖包
  • 应用程序插件

5. 修改docker源配置文件

步骤

  1. 编辑或创建配置文件:
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
  1. 添加以下内容:
{
  "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
  1. 如果你已经有 daemon.json 文件,注意保持 JSON 格式正确,不要覆盖已有配置项。

  2. 重启 Docker,使配置文件生效:

sudo systemctl daemon-reexec
sudo systemctl restart docker
  1. 验证是否生效
    你可以使用如下命令验证镜像是否能正常拉取:
docker pull node:14-alpine
  1. dockerhub 中查看是否包含这个tag。
docker info

检查输出中的 Registry Mirrors 是否包含你配置的镜像地址。
更多镜像地址,或采用毫秒镜像

6. 修改docker的代理

A. 检查或修改 Docker 代理设置

修改 Docker 守护进程的代理设置(适用于 Linux 系统)

  1. 创建或编辑 Docker 服务的代理配置文件
    使用文本编辑器创建或编辑 /etc/systemd/system/docker.service.d/http-proxy.conf 文件,并加入如下内容(如果你需要代理就配置成代理服务器;如果不用,则移除代理环境变量):

    [Service]
    Environment="HTTP_PROXY=http://127.0.0.1:10809"
    Environment="HTTPS_PROXY=http://127.0.0.1:10809"
    Environment="NO_PROXY=localhost,127.0.0.1"
    

    如果你已经在使用代理,但发现地址不对,可以修改成正确的代理地址和端口。如果你不需要代理,则可以删除这个文件或将内容清空。

  2. 重新加载并重启 Docker 服务

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

B. 针对 docker build 使用 build-arg(如果只想在构建时传递代理设置)

  1. 在构建镜像时你可以通过 --build-arg 指定代理变量:
docker build --build-arg HTTP_PROXY=http://127.0.0.1:10809 \
             --build-arg HTTPS_PROXY=http://127.0.0.1:10809 \
             --build-arg NO_PROXY=localhost,127.0.0.1 \
             -t your_image_name .

如果你不需要代理,也可以省略这些参数或者设置为空。


C. 检查环境变量

有时系统全局或用户级别可能设置了相关代理环境变量(如 HTTP_PROXYHTTPS_PROXY)。你可以用下面的命令查看:

echo $HTTP_PROXY
echo $HTTPS_PROXY

如果这些环境变量不是你需要的,可以在当前终端会话中取消它们:

unset HTTP_PROXY
unset HTTPS_PROXY

7. Docker 打包示例

  1. 文件目录。
- Dockerfile
- index.js

2.index.js 内容
docker build -t hello-docker .