使用 Dockerfile 構(gòu)建 Docker 鏡像
- Dockerfile 是一個文本文件爹土,其中包含若干條指令评姨,描述構(gòu)建鏡像的細(xì)節(jié)
- 編寫一個最簡單的 Dockerfile难述,通過它來修改鏡像的首頁
- 該 Dockerfile 非常簡單,F(xiàn)ROM吐句、RUN 都是 Dockerfile 的指令胁后,F(xiàn)ROM 指令用于指定基礎(chǔ)鏡像,RUN 指令用于執(zhí)行命令
FROM nginx RUN echo '<h1>第一個 Docker 案例</h1>' > /usr/share/nginx/html/index.html
- 在 Dockerfile 所在路徑執(zhí)行以下命令構(gòu)建鏡像嗦枢,命令最后的 (.) 用于路徑參數(shù)傳遞攀芯,表示當(dāng)前路徑
docker build -t nginx:my .
- 執(zhí)行以下命令,即可使用鏡像啟動一個 Docker 容器
docker run -d -p 92:80 nginx:my
- 訪問 http://Docker 宿主機(jī)IP:92/ 即可看到效果
將微服務(wù)構(gòu)建成鏡像
- 準(zhǔn)備工作:一個簡單的微服務(wù)項(xiàng)目 docker-demo文虏,包含一個 /hello 接口侣诺,返回 HelloWorld,并且設(shè)置了端口為 8080
server:
port: 8080
- 將項(xiàng)目通過 Maven 打包成 jar 包 docker-demo-0.0.1-SNAPSHOT.jar
mvn clean package
- 在 jar 包目錄氧秘,創(chuàng)建名為 Dockerfile 文件
touch Dockerfile
- 在 Dockerfile 文件中添加以下內(nèi)容
# 基于哪個鏡像
FROM java:8
# 聲明持久化文件掛載點(diǎn)
VOLUME /tmp
# 復(fù)制本地文件到容器
ADD docker-demo-0.0.1-SNAPSHOT.jar app.jar
# 執(zhí)行命令
RUN bash -c 'touch app.jar'
# 聲明暴露的端口
EXPOSE 8080
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["java","-jar","app.jar"]
- 使用 docker build 命令構(gòu)建鏡像
- 格式:docker build -t 倉庫名稱(對應(yīng) DockerHub 用戶名)/鏡像名稱(對應(yīng) DockerHub 倉庫名):標(biāo)簽(相當(dāng)于版本號) Dockerfile的相對位置
docker build -t linyuantongxue/docker-demo:0.0.1 .
- 啟動鏡像
docker run -d -p 8761:8080 linyuantongxue/docker-demo:0.0.1
- 訪問 http://Docker宿主機(jī)IP:8761/hello 顯示 Hello World
注意:如若出現(xiàn)以下錯誤
WARNING: IPv4 forwarding is disabled. Networking will not work.
解決辦法:
// 使用管理員角色打開該配置文件
vi /etc/sysctl.conf
// 添加以下配置
net.ipv4.ip_forward=1
// 重啟network服務(wù)
systemctl restart network