docker 镜像创建、推送、群晖镜像库建立、http拉取
创建
镜像build
- dockerfile
# python-Nodejs 服务镜像
# - https://hub.docker.com/
FROM nikolaik/python-nodejs:latest
USER pn
WORKDIR /home/pn/app
# 复制项目文件到容器中的工作目录 .所有文件在同级目录
COPY ./api .
COPY ./server .
COPY ./run.sh .
# 创建log目录
RUN mkdir -p /home/pn/app/log
# 设置环境变量
ENV NODE_ENV=production
# 安装 Node.js 依赖
RUN npm install
# 安装 Python 依赖
RUN pip install -r requirements.txt
ENTRYPOINT ["/home/pn/app/run.sh"]
- 同级目录创建镜像
docker build -t="test/test_api:v2" .
运行测试
# 运行
docker run -d -p 8880:8880 --name test_api test/test_api:v2
# 查看运行的容器
docker ps
# 查看容器日志 - 显示id为841的容器最后50行日志 id更换为docker ps内看到的实际容器id前三位
docker logs -f -t --tail 50 841
# 进入容器命令行bin/sh、bash、sh、/bin/bash等按需修改
docker exec -it 841 /bin/sh
打包tag命名为远端名称
docker tag test/test_api:v2 域名或IP:端口/test_api test/test_api:v2
群晖创建私有镜像库
- 下载registry镜像
- 开启群晖ssh
- 访问后台添加认证相关信息
# 群晖管理员用户 ssh 到群晖后台
cd /volume1/docker # 此处docker目录为实现在"控制面板"->"共享文件夹"处添加的
mkdir auth # 创建auth目录
htpasswd -Bbn 修改为要配置的用户名 修改为要配置密码 > auth/htpasswd
# 查看是否正常生成
cat auth/htpasswd
配置的用户名:$2y$05$F6pGO**************ProGnowwamFvVfTDdX7DvOEOcyTnUXi
- 创建容器
# 端口
5000 5000 TCP
# 存储空间
/docker/registry1 /var/lib/registry
/docker/auth /auth
# 环境
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
REGISTRY_AUTH htpasswd
REGISTRY_AUTH_HTPASSWD_REALM Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH /auth/htpasswd
# 其余按需修改 或保持默认
- 创建完成后启动
推送
- 修改文件
# windows下 搜索daemon.json 一般位于C盘用户目录/.docker/下
cat /etc/docker/daemon.json
- 添加内容
"insecure-registries":"域名或IP:端口" // 私服镜像地址,写进配置文件可解决默认采用https的情况,找了很多文章,测试下来只有修改配置文件是有效的...
- 重启docker服务
# linux如下,windows重启docker-desktop
systemctl restart docker
- 进行推送
docker push 域名或IP:端口/test_api test/test_api:v2
切换服务器后拉取镜像验证
- 认证登陆
docker login 域名或IP:端口
- 拉取查看镜像
witt@test-System:~$ docker pull 域名或IP:端口/test/test_api:v2
v2: Pulling from test/test_api
71215d55680c: Pull complete
3cb8f9c23302: Pull complete
5f899db30843: Pull complete
567db630df8d: Pull complete
Digest: sha256:4c70d49d35a12199************************ad17534cbfa950eb26ce
Status: Downloaded newer image for
域名或IP:端口/test/test_api:v2
witt@test-System:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rvinstall latest ef4ba863c29d 46 minutes ago 1.37GB
域名或IP:端口/test/test_api v2 8410cec226d4 9 days ago 1.39GB
hello-world latest 9c7a54a9a43c 11 months ago 13.3kB
- 运行测试命令集
# 运行 添加自动重启项 --restart=always
docker run -d -p 8880:8880 --name test_api --restart=always test/test_api:v2
# 查看运行的容器
docker ps
# 查看容器日志 - 显示id为841的容器最后50行日志 id更换为docker ps内看到的实际容器id前三位
docker logs -f -t --tail 50 841
# 进入容器命令行/bin/sh、/bin/bash等按需修改
docker exec -it 841 /bin/sh