不过多解释docker直接秀基操
命令操作可以见之前我的文章:docker 介绍及安装操作 - 隐姓埋名4869 - 博客园 (cnblogs.com)
systemctl stop firewalldsetenforce 0#安装依赖包yum -y install yum-utils device-mapper-persistent-date lvm2#设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装新版本dockeryum -y install docker-ce#启动并设置开机自启动systemctl start docker.servicesystemctl enable docker.service#镜像加速下载(这里是我的阿里云的镜像加速)vim /etc/docker/daemon.json{ "registry-mirrors": ["https://au0weiai.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }}#加载重启systemctl daemon-reload systemctl restart docke#设置iPv4vim /etc/sysctl.confnet.ipv4.ip_forward=1#重启网卡重启dockersysctl -psystemctl restart networksystemctl restart docker
Docker?le其实就是我们用来构建Docker镜像的源码,当然这不是所谓的编程源码,而是一些命令的组合,只要理解它的逻辑和语法格式,就可以编写Docker?le了。
简单点说,Docker?le的作用:它可以让用户个性化定制Docker镜像。因为工作环境中的需求各式各样,网络上的镜像很难满足实际的需求。
命令 | 作用 |
FROM image_name:tag |
|
MAINTAINER user_name | 声明镜像的作者 |
ENV key value | 设置环境变量 (可以写多条) |
RUN command | 编译镜像时运行的脚本(可以写多条) |
CMD | 设置容器的启动命令 |
ENTRYPOINT | 设置容器的入口程序 |
ADD source_dir/?le dest_dir/?le | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/?le dest_dir/?le | 和ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
ARG | 设置编译镜像时加入的参数 |
VOLUMN | 设置容器的挂载卷 |
具体用法可以看官网示例
接下来我们用dockerfile制作微服务镜像
我们利用Docker?le制作一个Eureka注册中心的镜像
上传Eureka的微服务jar包到linux
cd ~mkdir testcd test把idea打包的jar包拖进test文件里!
1)编写Docker?le:
vim Dockerfile
FROM openjdk:8-jdk-alpine ARG JAR_FILECOPY ${JAR_FILE} app.jar EXPOSE 10086ENTRYPOINT ["java","-jar","/app.jar"]2) 构建镜像
docker build --build-arg JAR_FILE=tensquare_eureka_server-1.0-SNAPSHOT.jar -t eureka:v1 .
3) 查看镜像是否创建成功
docker images
4) 创建容器
docker run -i --name=eureka -p 10086:10086 eureka:v1
5)访问容器
http://20.0.0.50:10086


Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
优势:
安装Harbor:
#把docker-compose 拖进harbor服务器
#然后给权限,并移动目录
chmod +x docker-composemv docker-compose /usr/local/bin
#把harbor安装包拖进去harbor服务器然后解压
tar zxvf harbor-offline-installer-v1.9.2.tgz -C /opt
#然后去改配置文件
cd /opt/harborvim harbor.ymlhostname: 20.0.0.50port: 85

#然后,安装Harbor(docker要处于启动状态)systemctl status docker 看一下
./prepare./install.sh
访问:http://20.0.0.50:85
默认账户:admin
默认密码:Harbor12345

补充:
启动harbor
docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动
Harbor上的操作:
1) 创建项目
Harbor的项目分为公开和私有的:
公开项目:所有用户都可以访问,通常存放公共的镜像,默认有一个library公开项目。 私有项目:只有授权用户才可以访问,通常存放项目本身的镜像。
我们可以为微服务项目创建一个新的项目:

2) 创建用户


创建的用户为: lvbu / Lvbu1234
3) 给私有项目分配用户进入tensquare项目->成员


角色 | 权限说明 |
访客 | 对于指定项目拥有只读权限 |
开发人员 | 对于指定项目拥有读写权限 |
维护人员 | 对于指定项目拥有读写权限,创建 Webhooks |
项目管理员 | 除了读写权限,同时拥有用户管理/镜像扫描等管理权限 |
4) 以新用户登录Harbor

如何把之前创建的镜像上传到Harbor ?

Docker要把Harbo加入信任列表中
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"], "insecure-registries": ["20.0.0.50:85"]} 然后重启docker
systemctl restart docker
然后登录harbor 用之前创建的lvbu账户
docker login -u lvbu -p Lvbu1234 20.0.0.50:85
然后在推送一下下:
docker push 20.0.0.50:85/tensquare/eureka:v1
再去Harbor刷新看一下:

如何拉取呢?
开一台webserver服务器,安装好docker
然后修改配置:和之前的一样的
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"], "insecure-registries": ["20.0.0.50:85"]}
然后一样~~:
先登录在拉取:
docker login -u lvbu -p Lvbu1234 20.0.0.50:85
登录上后直接在harbor找到项目镜像然后点击复制命令
去执行就可以了:
最后查看一下:docker images

