數據卷掛載
啟動時進行掛載數據卷同步:對共享目錄進行拷貝,每個容器都有數據
docker run -it --name 啟動的容器名 --volumes-from 父容器名稱 鏡像名
dockerFile
dockerFile : 構建文件,源代碼
-
每個保留關鍵字(指令)必須是大寫
-
執行順序從上到下
-
(#)表示注釋
-
每一個指令都會創建提交一個新的鏡像層
FROM 基礎鏡像,一切從這里開始構建
MAINTAINER 鏡像作者
RUN 鏡像構建的時候需要運行的命令
ADD 添加內容
WORKDIR 鏡像的工作目錄
VOLUME 掛載目錄
EXPOST 暴露端口配置
CMD 指定容器啟動的時候運行的命令,只有最后一個生效
ENTRYPOINT 指定容器啟動的時候運行的命令,可以追加命令
ONBUILD 當構建一個被繼承的dockerFile時會運行,出發指令
COPY 類似add,將文件拷貝到鏡像中
ENV 構建時設置環境變量
構建鏡像
docker build -f dockerFile文件路徑 -t 鏡像名:版本號 .(當前目錄)
如果構建文件命名為 DockerFile -f 可以不用加
樣例:
# 基礎鏡像
FROM openjdk:8
# 系統編碼
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
# 設置時區
ENV TZ=RPC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV PARAMS="-XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m "
ENV SERVER_IP=""
ENV SERVER_PORT=""
ENV EN=""
# 聲明一個掛載點,容器內此路徑會對應宿主機的某個文件夾
VOLUME /tmp
# 應用構建成功后的jar文件被復制到鏡像內,名字也改成了app.jar
COPY ./app.jar /tmp/app.jar
# 啟動容器時的進程
ENTRYPOINT ["sh","-c","java -jar -Dspring.profiles.active=$EN /tmp/app.jar --eureka.instance.ip-address=$SERVER_IP -server.port=$SERVER_PORT $PARAMS"]
微服務部署是需要手動指定服務實例ip , 不然feign會調用失敗,參考如上,或者docker 網絡使用host模式,,與宿主機共享ip ,啟動時添加參數 -net=host
運行容器時如果出現如下錯誤
重啟doker service docker restart
docker 網絡
查看所有的docker 網絡
docker network ls
docker-compose
安裝:
curl -L https://get.daocloud.io/docker/compose/releases/download/2.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin
安裝得版本需要根據docker 版本來決定,使用docker-compose出現命令找不到是版本不對應 , 重新安裝docker 對應的docker-compose版本即可
重新安裝:
在 /usr/local/bin操作
1. 刪除剛下載的:
rm -rf docker-compose
2. 安裝擴展源:
yum -y install epel-release
3. 安裝python-pip模塊:
yum install python-pip
4. 手動下載 docker-compose 到本地,然后上傳到 linux 服務器的 /usr/local/bin 路徑下
下載地址:
https://github.com/docker/compose/releases
5. 重命名:
mv docker-compose-linux-x86_64 docker-compose
6. 授權:
chmod +x ./docker-compose
7. 查看版本:
docker-compose --version
docker-compose.yml 格式:
version: 指定當前文件所對應的compsoe版本,主要有1、2.x和3.x
service: 服務列表
<service-name>: 服務名
image: 指定運行的鏡像,可直接拉取已有鏡像進行處理
build: 設置Dockerfile所在的文件夾,可處理需要用Dockerfile構建的鏡像
content: 存放Dockerfile的路徑
dockerfile: 指定構建的Dockerfile文件名
args: 構建參數,只能在構建過程中訪問
container_name: 設置容器名稱
restart: 重啟策略,有no、always、no-failure、unless-stoped
ports: 暴露容器的端口,格式為宿主機端口:容器端口
- 8080:8080
hostname: 設置容器的主機名
volumns: 設置容器的掛載點,可以掛載到宿主機上,主要格式為宿主機路徑:容器路徑[:訪問模式]
- /opt/data:/opt/data
- /var/lib/mysql:/var/lib/mysql:rw
volumns_from: 掛載另一個服務或容器的所有數據卷
- service_name
- container_name
environment: 設置環境變量
- RACK_ENV=development
networks: 配置網絡
app_netwotk:
官網地址:https://docs.docker.com/compose/compose-file/
使用樣例:
version: "3"
services:
payment:
build: .
container_name: factor
ports:
- 8084:8084
environment:
SERVER_IP: *************
SERVER_PORT: 8084
EN: test