Docker:构建镜像
2018-02-07 本文已影响30人
聪明的奇瑞
使用 Dockerfile 构建 Docker 镜像
- Dockerfile 是一个文本文件,其中包含若干条指令,描述构建镜像的细节
- 编写一个最简单的 Dockerfile,通过它来修改镜像的首页
- 该 Dockerfile 非常简单,FROM、RUN 都是 Dockerfile 的指令,FROM 指令用于指定基础镜像,RUN 指令用于执行命令
FROM nginx RUN echo '<h1>第一个 Docker 案例</h1>' > /usr/share/nginx/html/index.html
- 在 Dockerfile 所在路径执行以下命令构建镜像,命令最后的 (.) 用于路径参数传递,表示当前路径
docker build -t nginx:my .
- 执行以下命令,即可使用镜像启动一个 Docker 容器
docker run -d -p 92:80 nginx:my
- 访问 http://Docker 宿主机IP:92/ 即可看到效果
将微服务构建成镜像
- 准备工作:一个简单的微服务项目 docker-demo,包含一个 /hello 接口,返回 HelloWorld,并且设置了端口为 8080
server:
port: 8080
- 将项目通过 Maven 打包成 jar 包 docker-demo-0.0.1-SNAPSHOT.jar
mvn clean package
- 在 jar 包目录,创建名为 Dockerfile 文件
touch Dockerfile
- 在 Dockerfile 文件中添加以下内容
# 基于哪个镜像
FROM java:8
# 声明持久化文件挂载点
VOLUME /tmp
# 复制本地文件到容器
ADD docker-demo-0.0.1-SNAPSHOT.jar app.jar
# 执行命令
RUN bash -c 'touch app.jar'
# 声明暴露的端口
EXPOSE 8080
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","app.jar"]
- 使用 docker build 命令构建镜像
- 格式:docker build -t 仓库名称(对应 DockerHub 用户名)/镜像名称(对应 DockerHub 仓库名):标签(相当于版本号) Dockerfile的相对位置
docker build -t linyuantongxue/docker-demo:0.0.1 .
- 启动镜像
docker run -d -p 8761:8080 linyuantongxue/docker-demo:0.0.1
- 访问 http://Docker宿主机IP:8761/hello 显示 Hello World
注意:如若出现以下错误
WARNING: IPv4 forwarding is disabled. Networking will not work.
解决办法:
// 使用管理员角色打开该配置文件
vi /etc/sysctl.conf
// 添加以下配置
net.ipv4.ip_forward=1
// 重启network服务
systemctl restart network