1. 程式人生 > 實用技巧 >strategy策略模式個人理解

strategy策略模式個人理解

一、docker安裝

  • VMware
  • centos7
# 解除安裝原有docker
yum remove docker docker-common docker-selinux docker-engine -y
# 安裝yum工具包(方便配置安裝源)和資料儲存驅動包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 增加aliyun安裝源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 列出docker社群版本安裝包
yum list docker-ce --showduplicates | sort -r
# 自動選擇最快安裝源
yum makecache fast
# 安裝docker社群版本
yum install docker-ce -y

二、docker映象加速配置

# 配置阿里雲映象加速服務(需登入阿里雲開通容器映象服務)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、docker常用命令

docker pull 映象名<:tags> - 從遠端倉庫抽取映象 
docker images - 檢視本地映象
docker run 映象名<:tags> - 建立容器,啟動應用
docker ps - 檢視正在執行中的映象
docker rm <-f> 容器id - 刪除容器
docker rmi <-f> 映象名:<tags> - 刪除映象
#示例:-p 埠對映; -d 後臺執行
docker run -p 8080:8080 -d tomcat

四、容器內部結構

1.Tomcat容器內部結構

graph TB A(Apache Tomcat/8.5.46) B("JDK(1.8.0_190)") C("Linux(RedHat 4.8.5-28)") A --> B --> C classDef green fill:#9f6,stroke:#333,stroke-width:0px; classDef orange fill:#f96,stroke:#333,stroke-width:0px; classDef blue fill:#99ff,stroke:#333,stroke-width:0px; class A green class B blue class C orange

2.容器中執行命令

# 格式: docker exec [-it] 容器ID 命令
# exec 在對應容器中執行命令
# -it 採用互動方式執行命令

#示例
#獲取容器ID
docker ps
#進入互動模式
docker exec -it 0738ed2fe68b /bin/bash

五、dockerfile-構建映象

1.操作說明

Dockerfile是一個包含用於組合映象的命令的文字文件
Docker通過讀取Dockerfile中的指令按步自動生成映象
docker build -t 機構/映象名<:tags> Dockerfile目錄

2.Dockerfile

FROM tomcat:latest
MAINTAINER com.wod
WORKDIR /usr/local/tomcat/webapps
ADD docker-web ./docker-web

3.docker-web/index.html

<h1>hello docker by yhm!</h1>

4.建立映象

#執行命令
docker build -t com.wod/mywebapp:1.0 ./
#輸出:dockerfile中的每一行對應輸出的每一步
Sending build context to Docker daemon  3.584kB
Step 1/4 : FROM tomcat:latest
 ---> 2ae23eb477aa
Step 2/4 : MAINTAINER com.wod
 ---> Running in 4ae48a693627
Removing intermediate container 4ae48a693627
 ---> dfa6df5cc13c
Step 3/4 : WORKDIR /usr/local/tomcat/webapps
 ---> Running in f4e9e5ae4fe1
Removing intermediate container f4e9e5ae4fe1
 ---> 870f60b9a094
Step 4/4 : ADD docker-web ./docker-web
 ---> 1d415065d410
Successfully built 1d415065d410
Successfully tagged com.wod/mywebapp:1.0

5.映象建立分層的意義

dockerfile中的每一步對應一步輸出,並且都會有一個臨時容器id(形如 ---> Running in 4ae48a693627)

此容器id會作為容器快取,在再次建立映象並且有相同步驟時自動使用快取的容器id以加快建立操作

六、dockerfile常用命令

1.FROM - 基於基準映象

FROM centos #製作基準映象(基於centos:lastest)
FROM scratch #不依賴任何基準映象base image
FROM tomcat: 9.0.22-jdk8-openjdk
儘量使用官方提供的Base Image

2.LABEL & MAINTAINER - 說明資訊

MAINTAINER mashibing.com
LABEL version = "1.0"
LABEL description = "馬士兵教育"

3.WORKDIR - 設定工作目錄

WORKDIR /usr/local
WORKDIR /usr/local/newdir #自動建立
儘量使用絕對路徑

4.ADD & COPY - 複製檔案

ADD hello / #複製到根路徑
ADD test.tar.gz / #新增根目錄並解壓
ADD 除了複製,還具備新增遠端檔案功能

5.ENV - 設定環境常量

ENV JAVA_HOME /usr/local/openjdk8
RUN ${JAVA_HOME}/bin/java -jar test.jar
儘量使用環境常量,可提高程式維護性

6.EXPOSE - 暴露容器埠

將容器內部埠暴露給物理機
EXPOSE 8080
docker run -p 8000:8080 tomcat

七、dockerfile執行命令

1.RUN & CMD & ENTRYPOINT

RUN : 在Build構建時執行命令
ENTRYPOINT : 容器啟動時執行的命令
CMD : 容器啟動後執行預設的命令或引數

2.RUN-構建時執行

RUN yum install -y vim #Shell 命令格式
RUN ["yum","install","-y","vim"] #Exec命令格式

3.ENTRYPOINT啟動命令

ENTRYPOINT(入口點)用於在容器啟動時執行命令
Dockerfile中只有最後一個ENTRYPOINT會被執行
ENTRYPOINT ["ps"] #推薦使用Exec格式

4.CMD預設命令

CMD用於設定預設執行的命令

如Dockerfile中出現多個CMD,則只有最後一個被執行

如容器啟動時附加指令,則CMD被忽略

CMD ["ps" , "-ef"] #推薦使用Exec格式