系统环境:CentOS Linux release 7.2.1511 (Core) 3.10.0-327.el7.x86_64
私有仓库虚机IP: 10.134.120.xx

Docker 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装必要工具
$ yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加 yum 源
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新 yum 缓存
$ yum makecache fast

# 安装 docker-ce
$ yum -y install docker-ce

# 启动 docker 服务
$ systemctl start docker

安装私有仓库

1
2
3
4
5
6
7
8
$ docker run --name docker-registry --restart always -v /search/odin/docker-registry:/var/lib/registry -d -p 5000:5000 registry

# 参数说明
# -d: 后台运行
# -p: 将容器的5000端口映射为宿主机器的5000端口
# --restart: docker 服务重启后总是重启此容器
# --name: 容器名称
# -v: 将容器内的/var/lib/registry目录映射到宿主机器 /search/odin/docker-registry

新建 Dockerfile 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Dockerfile
FROM node:8

WORKDIR /search/odin/www

COPY package*.json /search/odin/www/

# 私有 npm 仓库可以添加 --registry=http://private.xxxx.com
RUN npm install

COPY . .

ENV NODE_ENV production

EXPOSE 8083
CMD ["npm", "run", "server"]

新建 .dockerignore 文件

1
2
3
4
5
6
7
8
9
.git
.idea
.DS_Store
.data
node_modules
node_modules.log
npm-debug.log
yarn-debug.log
yarn-error.log

创建镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# create
$ docker build -t monitor

# view image list
$ docker images

# run the image
$ docker run -p 41960:8083 -d monitor

# view container list
$ docker ps -a

# view node.js application
Running on http://localhost:8083

发布镜像到私有仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 修改镜像 tag
$ docker tag monitor 10.134.120.xx/monitor

# 发布镜像到私有仓库
$ docker push 10.134.120.xx:5000/monitor
The push refers to repository [10.134.120.xx:5000/monitor]
Get https://10.134.120.xx:5000/v2/: http: server gave HTTP response to HTTPS client

# 出现推送失败,Docker在1.3.x之后默认docker registry使用的是https,修改docker启动配置文件
$ vim /etc/docker/daemon.json
# 增加如下内容
# {"insecure-registries":["10.134.120.xx:5000"]}

# 重新发布,成功
$ docker push 10.134.120.xx:5000/monitor

搭建 WEB 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装镜像
$ docker pull hyper/docker-registry-web

# 新建(无认证)配置文件 config.yml, 增加以下内容
registry:
# Docker registry url
url: http://docker-registry:5000/v2
# Docker registry fqdn
name: localhost:5000
# To allow image delete, should be false
readonly: false
auth:
# Disable authentication
enabled: false

# run the image, 好像服务必须是 8080 端口
$ docker run -it -p 8080:8080 --name registry-web --link docker-registry -v $(pwd)/config.yml:/conf/config.yml:ro hyper/docker-registry-web

# 浏览器访问
http://10.134.120.xx:8080

参考链接

转载申请

本作品采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,文章内图片请保留全部内容。