docker 学习2:镜像使用与仓库--示例:go 程序编译制作Docker镜像,操作Docker Harbor

开发环境 Windows

1.go 交叉编译

1.1go env 查看编译环境 (其他环境指令不一样)

CGO_ENABLED=0

GOOS=linux 

GOARCH=amd64

设置命令  go env -w GOOS=linux (示例)

1.2编译二进制文件

找到main.go 位置 go build main.go 

生成main 的二进制文件

2.上传文件到云服务器

2.1 制作Dockerfile

vim Dockerfile

内容:

FROM alpine

COPY ./main /tmp/

WORKDIR /tmp/

RUN chmod +x main

ADD config /tmp/config

EXPOSE 17117

ENTRYPOINT ["./main"]


workdir   执行run命令的位置

copy 只复制本地文件或目录 

add  复制目录   还可以做提取和解压动作 (如果是gzip、gz等格式压缩文件),会自动解压

ADD config /app/config  (目的是把配置文件包含进去,上面交叉编译生成main文件 只包括 .go 文件)

RUN 在当前镜像运行指定命令

USER 指定镜像以什么身份去运行

VOLUME 创建卷  (指定路径 如 /usr/root )

RUN apt-get install -y nginx

2.2编译镜像image

docker build -t dockerase-tempsense:1.0 .    // 镜像名不能大写

3.推送Docker Harbor

登录 harbor
docker login ip 输入admin password

更改镜像tag

docker tag 原镜像名   harbor IP/ harbor 项目名/ 原镜像名

删除原镜像

docker rmi 原镜像名  

推送镜像

docker push 新镜像名(上面更改tag后的镜像名)

拉取镜像

docker pull ip:port / 项目名/ 镜像名:版本号



在Docker Hub查找镜像

 docker search alpine

构建缓存

 dockerfile 每次构建都会有一个缓存,如果再次构建会在此基础上接着构建,

如果不想使用缓存

docker built --no-cache -t 镜像名 .

基于构建缓存的Dockerfile模板

FROM ubuntu:14.04

MAINTAINER james "[email protected]"

ENV REFRESHED_AT 2020-10-12

RUN apt-get -qq update

ENV 指令设置一个环境变量,每次修改时间,就可以重新构建镜像,再重新执行一边apt-get update 命令

查看docker端口映射

docker ps -l


查看指定端口

docker port 容器名 容器端口80

删除容器

docker rm 容器名或id

删除镜像

docker rmi 镜像名或id

你可能感兴趣的:(docker 学习2:镜像使用与仓库--示例:go 程序编译制作Docker镜像,操作Docker Harbor)