记一次docker 使用的菜鸟心酸史
首先我有一个项目 A.go 需要将其打包成镜像使用,此时还需要一个Dockerfile。Dockerfile的书写如下
FROM Ubuntu
# 复制应用程序,下面需要根据自己应用情况进行替换
COPY A /home/work/
WORKDIR /home/work/
EXPOSE 1416
ENTRYPOINT ["./A"]
使用docker进行打包
go build -o A
sudo docker build ./ -t A_contain:latest
sudo docker push A_contain:latest
sudo docker run -it -p 1416:1416 A_contain:latest
坑点:
- docker push前要先登录自己docker的namespace,才能将镜像存放到云端。
- docker run 有很多参数
- -p 需要将docker内部的端口1416 映射到外部端口1416,这里的坑点是需要在Dockerfile中将端口expose
- -d 后台运行 可以加上sleep infinity 保证后台运行时不会停止
- -v 可以映射路径 同样需要 路径A:路径B这种形式
接下来就可以将docker镜像拷贝到任一个机器上运行了,已经脱离环境了。但我要部署的机器恰恰不能使用docker pull ,有网络隔离,于是采用scp命令将docker镜像发过去
- 将镜像保存成镜像文件:docker save -o A_contain.tar A_contain
- 将镜像.tar发送到另一台机器的/root/lib/路径下 :scp A_contain.tar ro