docker部署服務


數據卷掛載

啟動時進行掛載數據卷同步:對共享目錄進行拷貝,每個容器都有數據

docker run -it --name 啟動的容器名 --volumes-from 父容器名稱  鏡像名

dockerFile

dockerFile : 構建文件,源代碼

  1. 每個保留關鍵字(指令)必須是大寫

  2. 執行順序從上到下

  3. (#)表示注釋

  4. 每一個指令都會創建提交一個新的鏡像層

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

運行容器時如果出現如下錯誤
image

重啟doker service docker restart

docker 網絡

查看所有的docker 網絡

docker network ls

image

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM