一、 Docker在windows下的安装调试
1、下载安装
1、使用手动下载安装方式
点击 下载 链接,下载完成后,直接双击安装Docker在windows下的客户端 环境;
2、运行
直接点击桌面 图标 或者在 Windows 搜索栏输入 Docker 点击 Docker Desktop 开始运行,启动成功后左下角为绿色标识图标,如下图:
--Home 首页,基本都是一些常用的官方镜像推荐;
--Containers 容器,可查看当前的所有容器列表数据以及可操作相应的容器 启动/停止;
-- images 镜像,可查看当前已经拉取到本地的所有镜像,可面板化执行一些镜像的基本命令;
--Volumes 数据卷,可挂载目录,便于容器内调试;
3、常见问题
1、Docker Desktop安装报错
参考:WSL 2 installation is incomplete.
2、Docker进入已启动的容器失败?
4、参考资料
参考资料:Docker官方使用文档、Docker官网、Docker镜像仓库、Docker中文网、Docker从入门到精通
二、 Docker在CentOS系统下的安装
1、前言
此文档为 CentOS 系统下的Docker环境的安装,如果不知道当前系统版本,可通过此命令查看:
cat /etc/os-release
如果是 CentOS 系统版本,大致输出如下:
如果是 Debian 系统版本,大致输出如下:
2、下载安装
1、使用 yum 安装,执行以下命令安装依赖包:
$ sudo yum install -y yum-utils
输出以下则安装成功
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
输出如下信息则安装成功
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安装成功:
可尝试登录私有镜像仓库账号,进行镜像的拉取上传,执行:(此账号密码为示例)
docker login d-harbor.lepass.cn -u admin -p Harbor12345
非 root 账户可能会报以下错误:
解决方法,添加读写权限:
sudo chmod 666 /var/run/docker.sock
再次重新登录即可。
三、 Docker生成镜像及上传镜像仓库
1、创建 DockerHub账号
通过官方网站进行注册 Docker Hub
2、创建存储库(repository)
在创建完账户之后,登录账号,创建存储库,基本上一个存储库就对应一个镜像,每个镜像可以设置不同的 tag 版本。
注意:此时填写的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 输出如下:
其中的 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
输出 Login Succeeded 则登录成功;
2、push镜像,执行:
docker push jackzhou666/nest
输入如下信息则上传成功:
此时在Docker Hub中可以查看已经上传的镜像信息:
5、拉取镜像
上传成功后,就可以在客户端或者服务端进行镜像的获取,然后启动容器即可实现项目的启动;
docker pull jackzhou666/nest:v1
下一节将介绍基于front-end-bi(Node)项目的部署