需求场景:

因为之前组装了一台个人的服务器并且可以公网访问,然后为了方便就部署了docker并开放了2375端口进行外网打包,但是这个2375端口有漏洞经常会被大佬攻击,机器也被拿去挖矿,我就在想有没有什么办法可以在不开放docker远程连接端口的情况下能把自己的代码镜像部署上去。

解决方案:

基于上述的需求场景我就想到了阿里云,可以通过把自己的代码打包成docker镜像部署到阿里云的私有镜像库,然后自己服务器在想拉代码镜像的时候就可以从阿里云的镜像账户拉取,同时保证了服务器的安全。

实现方案:

1、本地需要装一个docker并开启2375端口访问

2、开通阿里云的私有镜像仓库

3、将本地代码镜像推送到阿里云的镜像仓库

实现步骤:1、本地安装docker并开启远程访问

这里我用的是VM进行部署了一个CentOS7的虚拟机,然后在虚拟机里面安装的docker,docker安装命令如下:

# 安装dockeryum install docker # 启动dockersystemctl start docker # 查看docker启动状态systemctl status docker

安装完成之后需要给docker开启2375的远程访问权限,配置如下:

# 修改文件内容vim /usr/lib/systemd/system/docker.service # 加入一下配置-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

加入的文件代码如下:

[Unit]Description=Docker Application Container EngineDocumentation=http://docs.docker.comAfter=network.targetWants=docker-storage-setup.serviceRequires=docker-cleanup.timer [Service]Type=notifyNotifyAccess=mainEnvironmentFile=-/run/containers/registries.confEnvironmentFile=-/etc/sysconfig/dockerEnvironmentFile=-/etc/sysconfig/docker-storageEnvironmentFile=-/etc/sysconfig/docker-networkEnvironment=GOTRACEBACK=crashEnvironment=DOCKER_HTTP_HOST_COMPAT=1Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbinExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock           --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current           --default-runtime=docker-runc           --exec-opt native.cgroupdriver=systemd           --userland-proxy-path=/usr/libexec/docker/docker-proxy-current           --init-path=/usr/libexec/docker/docker-init-current           --seccomp-profile=/etc/docker/seccomp.json           $OPTIONS           $DOCKER_STORAGE_OPTIONS           $DOCKER_NETWORK_OPTIONS           $ADD_REGISTRY           $BLOCK_REGISTRY           $INSECURE_REGISTRY     $REGISTRIESExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=1048576LimitNPROC=1048576LimitCORE=infinityTimeoutStartSec=0Restart=on-abnormalKillMode=process [Install]WantedBy=multi-user.target

刷新docker配置并重新启动

# 刷新配置文件systemctl daemon-reload # 重新启动dockersystemctl restart docker

2、创建阿里云的镜像仓库

登录阿里云的官网,搜索容器,选择容器镜像服务 ARC,如下图所示:

阿里云镜像_阿里云镜像市场_docker 阿里云镜像

创建一个个人的实例库,企业的要收费,个人的足够用

阿里云镜像_阿里云镜像市场_docker 阿里云镜像

完成之后应该是要设置一个访问凭证的,账户就是你的登录账户,密码自己设置

新建一个镜像仓库,或者可以等到部署代码镜像的时候再进行新建

阿里云镜像_docker 阿里云镜像_阿里云镜像市场

这里我选择的是本地仓库的代码源,可以根据自己的实际情况进行选择

阿里云镜像市场_docker 阿里云镜像_阿里云镜像

因为镜像默认的是走国外的服务器下载镜像所以会比较慢,这里阿里云为我们提供了一个镜像加速的服务,可以将docker的镜像源换成这个

为了后面代码打包镜像到阿里云的时候我们需要申请一个AccessKey

docker 阿里云镜像_阿里云镜像_阿里云镜像市场

阿里云镜像_阿里云镜像市场_docker 阿里云镜像

3、将代码部署到阿里云镜像仓库

这里我使用的是idea进行打包的,idea里面集成了一个阿里官方提供的插件进行部署的,就省的在pom文件中写地址了,插件的名字叫Alibaba Cloud Toolkit。在idea中设置刚刚虚拟机中的docker地址,这个地方一定要打开docker的2375端口。

阿里云镜像_docker 阿里云镜像_阿里云镜像市场

阿里云镜像_docker 阿里云镜像_阿里云镜像市场

在Register中配置刚刚的设置的账户和密码

在Accounts中输入我们在阿里云镜像中申请的AccessKey

阿里云镜像_阿里云镜像市场_docker 阿里云镜像

这里还需要弄一个Dockerfile文件,说明如何进行打包

# 基础镜像FROM openjdk:8-jdk-alpine# 对应pom.xml文件中的dockerfile-maven-plugin插件JAR_FILE的值ARG JAR_FILE# 复制打包完成后的jar文件到/opt目录下COPY ${JAR_FILE} /opt/base-data-service.jar# /data设为环境变量ENV DATAPATH /data# 挂载/data目录到主机VOLUME $DATAPATH# 启动容器时执行ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/opt/base-data-service.jar"]#EXPOSE 8080

新建一个打包的配置,账号密码输入后可以直接在里面查到镜像库,如果没用镜像库下面可以进行新建镜像库

运行配置文件就会进行镜像的打包和推送

docker 阿里云镜像_阿里云镜像_阿里云镜像市场

可以看到打包完毕

docker 阿里云镜像_阿里云镜像_阿里云镜像市场

打包完毕后我们就可以在阿里云的私服镜像中看到上传的文件

阿里云镜像市场_docker 阿里云镜像_阿里云镜像

4、下载阿里云镜像

在XShell中先登录阿里的后台镜像服务,然后需要输入密码,验证成功后就可以下载镜像

sudo docker login --username=*** registry.cn-hangzhou.aliyuncs.com

然后就可以进行下载我们的私有镜像了,可以看到已经下载下来了

docker pull registry.cn-hangzhou.aliyuncs.com/aliyun-**-82/base:1.0

下面是一些常用的命令

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22