日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DockerFile和DockerCompose使用总结

發布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DockerFile和DockerCompose使用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DockerFile

基本結構

# 1、第一行必須是 FROM 基礎鏡像信息 FROM ubuntu# 2、維護者信息 MAINTAINER docker_user docker_user@email.com# 3、鏡像操作指令 RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list RUN apt-get update && apt-get install -y nginx RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf# 4、容器啟動執行指令 CMD /usr/sbin/nginx

Dockerfile 基本就長這樣,當然這是一個很簡單的例子,還有很多其他命令會在下個小節介紹。

有幾點需要注意,第一行必須是 FROM 命令,表示是基于哪個基礎鏡像來創建鏡像的。第二行一般是 MAINTAINER 命令,表示維護人信息,但不做硬性要求。最后一行是 CMD 命令,表示啟動容器執行的命令,CMD 命令必須在最后一行,如果有多個 CMD 命令,則只有最后一個生效。

常用指令

FROM: 必須是 Dockerfile 的首個命令,定義了使用哪個基礎鏡像啟動構建流程。

MAINTAINER: 聲明鏡像作者。

COPY: 將宿主機的文件拷貝到鏡像內的指定路徑。

ADD: 作用類似于 COPY

COPYADD 的區別是:ADD 命令功能更多,比如拷貝一個壓縮包,ADD 可以將壓縮包解壓到鏡像內,如果是下載鏈接,ADD 會先下載文件,然后再拷貝。

但現在 docker 官方更推薦使用 COPY 命令,一個命令只做一件事。

WORKDIR: 指定 Dockerfile 中該命令下的操作所在的工作目錄。

RUN: 執行命令行命令。

ENV: 設置環境變量。

VOLUME: 掛載數據卷。

EXPOSE: 暴露端口。

CMD: 服務啟動命令。

創建鏡像

有了 Dockerfile 之后,在 Dockerfile 所在目錄執行命令:

# docker build -t <image_name> .

就這么簡單,鏡像就創建好了。

DockerCompose

使用 docker-compose 部署 Redis 服務

項目 Docker 化部署的最后一步,就差 Redis 了。本來以為是一件很簡單的事,沒想到折騰了我大半天的時間,下面就來分享分享我的采坑經歷。

docker-compose 文件:

version: '3'services:redis:image: redis:3.2.12container_name: redisrestart: alwaysnetwork_mode: hostcommand: redis-server /etc/redis.confports:- 6379:6379volumes:- /data:/data- ./redis.conf:/etc/redis.conf

當前目錄下執行:

# docker-compose up

本來以為服務一啟,事情就這么愉快的結束了,但是,報錯。

Can’t open the log file: No such file or directory

原因就是 redis.conf 文件直接用的是在物理機上部署時用的,logfile 參數配的是 /var/lib/redis,但 docker 容器里沒有這個目錄,但是有 /data 目錄,所以,把 logfile 配置成 /data 即可。

改完之后再一啟,沒有任何信息輸出,看來是成功了。

docker ps 看看,沒有容器。

這下給我整懵了,咋回事呢?其實報錯都不怕,就怕啟動不成功,還沒有報錯信息。

就這個問題給我折騰了好久,突然靈光一閃,想到 redis 會不會是以后臺進程起的,導致容器直接退出。

檢查一下配置文件中的 daemonize 參數,果然是 yes。改成 no 之后,就可以正常啟動了。

就這么個破問題,卡了這么長時間,而且這類問題之前還遇到過,真是讓人郁悶。

至此,項目中的所有服務就都 Docker 化部署了。

總結

以上是生活随笔為你收集整理的DockerFile和DockerCompose使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。