也玩docker部署私有npm仓

 

在自己的云主机安装了docker,然后也来玩一下docker

目前主机的环境:

“node”:”12.16.2″,”npm”:”6.14.4″

查当前镜像

docker images

根据查看的id进入对应的容器

[root@VM_0_9_centos ~]# docker run -it 4afea31379ee /bin/bash

[root@6f21949bd68e /]#

接着就可以在看到已经进入容器内部了,要退出,使用exit退出容器

命令加上–d参数可以在后台运行容器,--name指定容器命名自定义名称custname

docker run -d --name custname e1xxxxxxxxxe

进入后台运行容器

docker exec -it apache /bin/bash

将容器做成镜像,命令的参数说明:docker commit <容器ID或容器名> [<仓库名>[:<标签>]]

docker commit containerID/containerName repository:tag

 为了方便测试和恢复,将源镜像运行起来后,再做一个命名简单的镜像做测试。

  • docker commit 4c8066cd8c01 apachephp:v1
  • 运行容器并将宿主机的8080端口映射到容器里去。
    docker run -d -p 8080:80 apachephp:v1

    下面来实际操作下

     

    
    

比如部署一个私有npm仓库:

[root@VM_0_9_centos ~]# git clone https://github.com/cnpm/cnpmjs.org.git
正克隆到 'cnpmjs.org'...
remote: Enumerating objects: 39, done.
remote: Counting objects: 100% (39/39), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 10042 (delta 9), reused 14 (delta 4), pack-reused 10003
接收对象中: 100% (10042/10042), 2.65 MiB | 40.00 KiB/s, done.
处理 delta 中: 100% (6098/6098), done.
[root@VM_0_9_centos ~]# ls
cnpmjs.org                dead.letter           lnmp
cyrus-sasl-2.1.27.tar.gz  ImageMagick-7.0.10-2  lnmp-full.tar.gz
data                      ImageMagick.tar.gz    phpExtension
[root@VM_0_9_centos ~]# cd cnpmjs.org/
[root@VM_0_9_centos cnpmjs.org]# ls
AUTHORS          controllers         History.md   Makefile      README.md  test
bin              dispatch.js         index.js     middleware    routes     tools
common           docker-compose.yml  lib          models        servers    view
config           Dockerfile          LICENSE.txt  package.json  services   worker.js
CONTRIBUTING.md  docs                logo.png     public        sync
[root@VM_0_9_centos cnpmjs.org]# 

在mysql中新建数据库cnpmjs,并将cnpmjs.org/docs/db.sql文件导入数据库,完成建表工作

然后build,

[root@VM_0_9_centos cnpmjs.org]# docker build -t xxxx/cnpmjs:v1 .

Sending build context to Docker daemon 4.782 MB

Step 1/13 : FROM node:12

Trying to pull repository docker.io/library/node …

sha256:3dfac3684387d384399620f899bb56b578b1b5770a3d160ca02d876305899e80: Pulling from docker.io/library/node

7568c21980bd: Pull complete

4a9f2207c812: Pull complete

6fe350d2b140: Pull complete

d95a2fdc8b3d: Pull complete

6e9eb1fbe207: Pull complete

d56555bcbc0a: Pull complete

41801c5e0ae2: Pull complete

f06b951e9d39: Pull complete

7cc47f644c74: Pull complete

Digest: sha256:3dfac3684387d384399620f899bb56b578b1b5770a3d160ca02d876305899e80

Status: Downloaded newer image for docker.io/node:12

—> de04dbcdb20a

Step 2/13 : MAINTAINER Bono Lv <lvscar  {aT} gmail.com>

—> Running in 580238f095fc

—> 22b42fe8b65d

Removing intermediate container 580238f095fc

Step 3/13 : ENV CNPM_DIR “/var/app/cnpmjs.org” CNPM_DATA_DIR “/var/data/cnpm_data”

—> Running in 504c9eeae35f

—> 458955d2af3f

Removing intermediate container 504c9eeae35f

Step 4/13 : RUN mkdir  -p ${CNPM_DIR}

—> Running in c0e6f661a89e

—> 44983c229feb

Removing intermediate container c0e6f661a89e

Step 5/13 : WORKDIR ${CNPM_DIR}

—> d8f8983a53aa

Removing intermediate container f21a20a6c902

Step 6/13 : COPY package.json ${CNPM_DIR}

—> 7ba09d556049

Removing intermediate container 0fb65e719a59

Step 7/13 : RUN npm set registry https://registry.npm.taobao.org

—> Running in 5ea44eee652a

—> b7c3f14dc33e

Removing intermediate container 5ea44eee652a

Step 8/13 : RUN npm install –production

—> Running in 058a6169d204

此过程中只要不是error 就不用管,一般会有一大堆npm WARN 信息

还有类似如下的

3 packages are looking for funding

都不用理会。大概会化十几分钟到几十分钟,因为要下很多依赖的npm包。

耐心等待,如果不出意外之后就是见证奇迹了。

build完成会提示

Successfully built 2b62b87bcd19

查看一下,发现已经有这个容器了

[root@VM_0_9_centos cnpmjs.org]# docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE

xxxx/cnpmjs        v1                  2b62b87bcd19

然后就可以使用构建好的镜像来运行cnpmjs容器

docker run -d -p 7001:7001 -p 7002:7002 -v /home/cnpm/cnpm_data:/var/data/cnpm_data –restart always –name wwcnpmjs ww/wwcnpmjs :v1

运行成功之后,

可以访问了:http://yourIP:7002/

整个过程1小时左右。so easy。

查看运行中的容器

docker ps

停止容器

docker stop d1b05843f37e

docker

PS:关于docker的一些基础支知识,记录一下。

Docker有以下基本用法:

管理Docker守护进程。

systemctl start docker     #运行Docker守护进程

systemctl stop docker      #停止Docker守护进程

systemctl restart docker   #重启Docker守护进程

管理镜像。本文使用的是来自阿里云仓库的Apache镜像。

docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

修改标签。由于阿里云仓库镜像的镜像名称较长,您可以修改镜像标签以便记忆区分。

docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1

查看已有镜像。

docker images

强制删除镜像。

docker rmi –f registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

管理容器。

进入容器。e1xxxxxxxxxe是执行docker images命令查询到的ImageId,使用docker run命令进入容器。

docker run –it e1xxxxxxxxxe /bin/bash

退出容器。使用exit命令退出当前容器。

run命令加上–d参数可以在后台运行容器,–name指定容器命名为apache。

docker run -d –name apache e1xxxxxxxxxe

进入后台运行的容器。

docker exec -it apache /bin/bash

将容器做成镜像,命令的参数说明:docker commit <容器ID或容器名> [<仓库名>[:<标签>]]。

docker commit containerID/containerName repository:tag

为了方便测试和恢复,将源镜像运行起来后,再做一个命名简单的镜像做测试。

docker commit 4c8066cd8c01 apachephp:v1

运行容器并将宿主机的8080端口映射到容器里去。

docker run -d -p 8080:80 apachephp:v1

在浏览器输入ECS实例IP地址加8080端口访问测试,出现以下内容则说明运行成功。

映射结果

制作镜像

准备Dockerfile内容。

# vim Dockerfile

FROM apachephp:v1  #声明基础镜像来源

MAINTAINER DTSTACK #声明镜像拥有者

RUN mkdir /dtstact #RUN后面接容器运行前需要执行的命令,由于Dockerfile文件不能超过127行,因此当命令较多时建议写到脚本中执行

ENTRYPOINT ping www.aliyun.com #开机启动命令,此处最后一个命令需要是可在前台持续执行的命令,否则容器后台运行时会因为命令执行完而退出。

构建镜像。

docker build -t webcentos:v1 .   # . 是Dockerfile文件的路径,不能忽略

docker images                    #查看是否创建成功

docker run –d webcentos:v1       #后台运行容器

docker ps                        #查看当前运行中的容器

docker ps –a                     #查看所有容器,包括未运行中的

docker logs CONTAINER ID/IMAGE   #如未查看到刚才运行的容器,则用容器id或者名字查看启动日志排错

docker commit fb2844b6c070 dtstackweb:v1 #commit 后接容器id 和构建新镜像的名称和版本号。

docker images                    #列出本地(已下载的和本地创建的)镜像

docker push                      #将镜像推送至远程仓库,默认为 Docker Hub

将镜像推送到registry。

其中ImageId和镜像版本号请您根据自己的镜像信息进行填写。

docker login –username=dtstack_plus registry.cn-shanghai.aliyuncs.com #执行后输入镜像仓库密码

docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/dtstack123/test:[镜像版本号]

docker push registry.cn-shanghai.aliyuncs.com/dtstack123/test:[镜像版本号]

在镜像仓库能查看到镜像版本信息则说明推送成功。

发表评论

记录工作生活点滴。

返回
顶部