Docker使用Dockerfile构建简单镜像

Docker使用Dockerfile构建简单镜像

首先确保系统已经安装docker

构建镜像

安装基础镜像

sudo docker pull ubuntu

查看镜像是否已经拉取成功

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ubuntu                      latest              452a96d81c30        4 weeks ago         79.6 MB
centos                      latest              e934aafc2206        7 weeks ago         199 MB

编写Dockerfile

touch Dockerfile
FROM ubuntu

COPY demo_api /usr/local/bin

EXPOSE 9899

CMD ["/usr/local/bin/demo_api"]

这个配置文件的意思是

  • 基础镜像为ubuntu
  • 将本地的demo_api二进制文件拷贝到/usr/local/bin下
  • 暴露9899端口
  • CMD执行这个二进制文件

EXPOSE 用来暴露端口,格式为:EXPOSE <端口1> [<端口2>……]
值得注意的是,EXPOSE 只是声明运行容器时提供的服务端口,这仅仅是一个声明,在运行容器的时候并不会因为这个声明就会开启端口服务,你依旧需要使用 -P 或者 -p 参数映射端口。在 Dockerfile 中写这样的端口声明有助于使用者理解这个镜像开放哪些服务端口,以便配置映射。并且,可以在 docker run 命令执行的时候使用 -P 参数随机映射宿主主机端口到 EXPOSE 的容器端口。

构建镜像

gorden@sung:~$ sudo docker build -t demoapi:v1.0 .
Sending build context to Docker daemon 7.448 MB
Step 1/4 : FROM ubuntu
 ---> 452a96d81c30
Step 2/4 : COPY demo_api /usr/local/bin
 ---> 44e68b440b1b
Removing intermediate container e7db3b02db3c
Step 3/4 : EXPOSE 8818
 ---> Running in 5f677d533ea3
 ---> 3022bc179891
Removing intermediate container 5f677d533ea3
Step 4/4 : CMD /usr/local/bin/demo_api
 ---> Running in 9e9f82a0780c
 ---> 1bcf0f228a7d
Removing intermediate container 9e9f82a0780c
Successfully built 1bcf0f228a7d

-t 参数后面指定镜像的名字。最后一个“ . ”指的是当前目录。

查看镜像是否存在了

gorden@sung:~$ sudo docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
demoapi                     v1.0                1bcf0f228a7d        12 seconds ago      86.3 MB
ubuntu                      latest              452a96d81c30        4 weeks ago         79.6 MB
centos                      latest              e934aafc2206        7 weeks ago         199 MB
gorden@sung:~$

从镜像运行容器

gorden@sung:~$ sudo docker run --name go_api -d -p 9899:9899 demoapi:v1.0
3d52e9e4f3c0ce1df9800aa44bb2d97b5dbb7704f0c18e46cb86551c9bfb7d0b
gorden@sung:~$

查看是否正在运行

gorden@sung:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3d52e9e4f3c0        demoapi:v1.0        "/usr/local/bin/de..."   9 minutes ago       Up 9 minutes        9899/tcp, 0.0.0.0:9899->9899/tcp    go_api
gorden@sung:~$ 

由于我这个二进制文件为一个go版本的简单RestFul Api所以可以在浏览器中测试:

localhost:9899/people

有返回结果,正面成功。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值