环境信息
开发环境:window10 64位
开发工具:IntelliJ IDEA 2019.2.3 x64
部署操作系统:Centos7
Golang版本:1.13
Docker版本:18.06.3-ce
接上篇《Docker SDK使用(一)—Golang实现pull镜像创建容器等》。
本章将上篇的linux二进制可执行文件docker部署,在这个docker里去创建另外一个docker(bfirsh/reticulate-splines)。
Docker A
Dockerfile内容如下,与linux二进制可执行文件在同一个目录
#使用了镜像大小体积只有5MB的alpine镜像
FROM alpine:latest
#在docker的根目录下创建相应的使用目录
RUN mkdir -p /go/app
#设置工作路径
WORKDIR /go/app
#把上文编译好的main文件添加到镜像里
COPY . .
#暴露容器内部端口
#EXPOSE 9090
#入口
ENTRYPOINT ["/go/app/dockersdk"]
进入Dockerfile目录执行如下命令,创建镜像
[root@loalhost dockersdk]# docker build -t godksdk:V1.0 -f Dockerfile .
查询一下服务器镜像和容器情况
Docker A run Docker B
执行如下命令,运行容器。
[root@loalhost dockersdk]# docker run --name godksdk -d --privileged -u root \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker godksdk:V1.0
上面命令中,privileged以及其后面的是必须的,使用容器有权限执行宿主机docker命令。
执行情况如下
查询一下服务器镜像和容器情况,对比执行之前的服务器镜像和容器。可以看到成功拉取了bfirsh/reticulate-splines镜像并创建了容器。而Golang代码容器由于代码没有做特别处理,成功启动bfirsh/reticulate-spline容器后就退出了。