docker的前端应用(二)

497 阅读5分钟

2bb65ba30e2943f2be299b88d8bf09f2_1.png

一、  Docker在windows下的安装调试

1、下载安装

1、使用手动下载安装方式

点击 下载 链接,下载完成后,直接双击安装Docker在windows下的客户端 环境;

2、运行

直接点击桌面 图标 或者在 Windows 搜索栏输入 Docker 点击 Docker Desktop 开始运行,启动成功后左下角为绿色标识图标,如下图:

image.png --Home 首页,基本都是一些常用的官方镜像推荐;

--Containers 容器,可查看当前的所有容器列表数据以及可操作相应的容器 启动/停止;

-- images 镜像,可查看当前已经拉取到本地的所有镜像,可面板化执行一些镜像的基本命令;

--Volumes 数据卷,可挂载目录,便于容器内调试;

3、常见问题

1、Docker Desktop安装报错

参考:WSL 2 installation is incomplete.

2、Docker进入已启动的容器失败?

参考:Docker进入已启动的容器失败

4、参考资料

参考资料:Docker官方使用文档Docker官网Docker镜像仓库Docker中文网Docker从入门到精通

二、  Docker在CentOS系统下的安装

1、前言

此文档为 CentOS 系统下的Docker环境的安装,如果不知道当前系统版本,可通过此命令查看:

cat /etc/os-release

如果是 CentOS 系统版本,大致输出如下:

image.png

如果是 Debian 系统版本,大致输出如下:

image.png

2、下载安装

1、使用 yum 安装,执行以下命令安装依赖包:

$ sudo yum install -y yum-utils

输出以下则安装成功

image.png

2、鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。执行下面的命令添加 yum 软件源:

$ sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

$ sudo sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

# 官方源
# $ sudo yum-config-manager \
#     --add-repo \
#     https://download.docker.com/linux/centos/docker-ce.repo

3、更新 yum 软件源缓存,并安装 docker-ce,如下:

$ sudo yum install docker-ce docker-ce-cli containerd.io --skip-broken

输出如下信息则安装成功

image.png

3、配置

1、Docker提供了一个特性,可以使得在Daemon不可用的时候,保持容器继续运行,这样就减少了在Daemon进行升级或者出现问题的时候容器的停机时间。那这个特性就叫做Live Restore 。

编辑 /etc/docker/daemon.json ,添加如下内容:

{
   "live-restore": true  #关闭docker daemon时不关闭停止容器,不影响服务
}

2、镜像加速器

首先执行以下命令,查看是否在 docker.service文件中配置过镜像地址。

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

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

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

注意:非root账户可能只有只读权限,需要添加读写权限,之后重新启动服务。

sudo systemctl daemon-reload
sudo systemctl restart docker

4、启动 Docker

sudo systemctl enable docker
sudo systemctl start docker

执行完毕后输入 docker 命令,输出以下信息则docker安装成功:

image.png 可尝试登录私有镜像仓库账号,进行镜像的拉取上传,执行:(此账号密码为示例)

docker login d-harbor.lepass.cn  -u admin -p Harbor12345

非 root 账户可能会报以下错误:

image.png 解决方法,添加读写权限:

sudo chmod 666 /var/run/docker.sock

再次重新登录即可。

三、  Docker生成镜像及上传镜像仓库

1、创建 DockerHub账号

通过官方网站进行注册 Docker Hub

2、创建存储库(repository)

在创建完账户之后,登录账号,创建存储库,基本上一个存储库就对应一个镜像,每个镜像可以设置不同的 tag 版本。

image.png 注意:此时填写的Name和给镜像打标签tag需要对应,否则出现本地镜像无法上传的错误;

3、通过Dockerfile生成本地镜像

1、以Nest项目为例,项目根目录下的 Dockerfile 内容如下:

# FROM 表示设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载。
# 指定我们的基础镜像是node,14.20-alpine表示版本是最新
FROM node:14.20-alpine

# 执行命令,创建文件夹
RUN mkdir -p /home/nodeNestjs

# 将根目录下的文件都copy到container(运行此镜像的容器)文件系统的文件夹下
COPY ./ /home/nodeNestjs

# WORKDIR指令用于设置Dockerfile中的RUN、CMD和ENTRYPOINT指令执行命令的工作目录(默认为/目录),该指令在Dockerfile文件中可以出现多次,如果使用相对路径则为相对于WORKDIR上一次的值,
# 例如WORKDIR /data,WORKDIR logs,RUN pwd最终输出的当前目录是/data/logs。
# cd到 /home/nodeNestjs
WORKDIR /home/nodeNestjs

# 安装项目依赖包
RUN npm install
RUN npm run build

# 配置环境变量
ENV HOST 0.0.0.0
ENV PORT 3000

# 容器对外暴露的端口号(笔者的nestjs运行的端口号是3000)
EXPOSE 3000

# 容器启动时执行的命令,类似npm run start
CMD ["node", "/home/nodeNestjs/dist/main.js"]

2、定制镜像,执行如下命令如下:

docker build -t jack/nest:v1 .

查看当前的本地镜像 docker image ls 输出如下:

image.png 其中的 jack/nest 就是新生成的镜像名称;

备注:-t 指定本地镜像名称,如果不指定,那么 REPOSITORY 及 TAG 对应得为 ;

3、本地镜像标签Tag处理,需要和Docker Hub上创建的存储库名称对应;

docker tag jack/nest:v1 :jackzhou666/nest:v1

4、上传本地镜像

1、登录 Docker Hub账户,执行:

docker login d-harbor.lepass.cn  -u admin -p Harbor12345

image.png 输出 Login Succeeded 则登录成功;

2、push镜像,执行:

docker push jackzhou666/nest

输入如下信息则上传成功:

image.png 此时在Docker Hub中可以查看已经上传的镜像信息:

image.png

5、拉取镜像

上传成功后,就可以在客户端或者服务端进行镜像的获取,然后启动容器即可实现项目的启动;

docker pull jackzhou666/nest:v1

image.png

下一节将介绍基于front-end-bi(Node)项目的部署