Docker制作镜像

准备文件

touch Dockerfile
docker search centos
docker pull cent
docker images

编写Dockerfile

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 打包依赖阶段使用golang作为基础镜像
FROM golang:1.16 as builder

# 启用go module
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct

WORKDIR /app

COPY . .

# 指定OS等,并go build
RUN GOOS=linux GOARCH=amd64 go build .

# 由于我不止依赖二进制文件,还依赖views文件夹下的html文件还有assets文件夹下的一些静态文件
# 所以我将这些文件放到了publish文件夹
#RUN mkdir publish && cp toc-generator publish && \
#    cp -r views publish && cp -r assets publish

# 运行阶段指定scratch作为基础镜像
FROM alpine

LABEL maintainer="xuehu96@vip.qq.com"
LABEL version="1.0"
LABEL description="TTTT  EEEE SSS T"

WORKDIR /app

# 将上一个阶段publish文件夹下的所有文件复制进来
COPY --from=builder /app .

# 指定运行时环境变量
#ENV GIN_MODE=release \
#    PORT=80

EXPOSE 12345

ENTRYPOINT ["./main"]

制作容器

1
2
3
4
5
6
sudo docker build -t dockgo . 

#测试
docker run -d p:12345:12345 dockgo
sudo docker run -d -p 12345:12345 dockgo
sudo docker run -it -p 12345:12345 dockgo

将制作好的镜像打成 tar 包

 格式:sudo docker save -o dockergo.tar dockgo

使用 tar 包

sudo docker image rm 9e37e0dbdd5c

sudo docker load < tar 包所在路径

删除已经退出的container

1
docker rm $(docker ps -aq) 
updatedupdated2022-10-262022-10-26