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 orange2.容器中執行命令
# 格式: 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格式