零基礎用Docker部署微服務
1. docker架構
這裡的Client和DOCKER_HOST(docker server)都是在本地的,docker倉庫Registry是在遠端的;
Client的docker命令通過Docker daemon與docker server映象互動;
images映象是由應用已經被docker打包好的映象,如java、nginx的映象,這些映象可以執行在容器containers裡;
每一個container容器都是執行在docker server(宿主機)上的,每一個container容器都是隔離的、獨立的;
每一個container容器相當於一個Linux作業系統
Docker是容器化技術的實現。
2. Docker的安裝
7、安裝Docker
sudo yum install -y docker-ce
8、啟動
systemctl start docker
如果把docker加入到開機啟動 systemctl enable docker
檢視docker是否執行 ps -ef | grep docker
9. 檢視docker版本
docker version
3. 配置阿里雲上docker加速的地址
來源:https://cr.console.aliyun.com/cn-hangzhou/mirrors
4. docker常用命令
4.1 映象相關命令
在docker倉庫查詢被docker打包的映象: docker search java
利用docker下載java8: docker pull java:8
檢視本地安裝的docker映象: docker images
刪除指定映象: docker rmi java
4.2 容器相關命令
新建並啟動容器
使用docker run命令即可新建並啟動容器,下面是一些常用的引數:
比如新建並啟動一個Nginx:
docker run -d -p 8100:80 nginx
如果當前沒有nginx映象,那麼會先自動下載該nginx映象。
通過瀏覽器訪問:
列出當前執行容器
docker ps
如圖可以看到映象的名稱IMAGE,對應的CONTAINER_ID,以及PORTS。
停止容器
docker stop CONTAINER_ID || NAMES
強制停止容器
docker kill CONTAINER_ID
啟動已停止的容器
docker start CONTAINER_ID
檢視容器所有資訊
docker inspect CONTAINER_ID
檢視容器日誌
docker container logs CONTAINER_ID
檢視容器裡的程序
docker top CONTAINER_ID
檢視已經建立的容器
docker ps -a
進入執行的容器
docker container exec -it CONTAINER_ID /bin/bash
退出容器
exit
重新命名一個容器
docker rename old_name new_name
刪除容器
docker rm CONTAINER_ID
檢視一個容器對應的埠對映
docker port 容器名name
4.3 Dockerfile常用命令
5. 構建一個自己定義的nginx docker映象
建立了一個目錄docker,進入該目錄下
vim Dockerfile
內容如下:
# Dockerfile檔案,自定義一個nginx的index.html
FROM nginx
RUN echo '<h1>This is my nginx Dockerfile<h1>' > /usr/share/nginx/html/index.html
意思是先獲得nginx官方映象,然後我將執行的container容器中nginx的目錄下的index.html替換成我的內容。
在Dockerfile檔案所在的目錄下,執行
docker build -t nginx:mynginx .
mynginx就是一個tag,相當於版本號,"."表示Dockerfile檔案所在的路徑,在當前目錄下。
現在,檢視一下本地映象
docker images
現在已經有本地映象了,下一步就是新建容器並且執行
docker run -d -p 8101:80 nginx:mynginx
用瀏覽器訪問一下
自定義nginx映象大功告成!
6. 簡單使用docker部署一個微服務專案
這裡打算部署一個eureka server,埠號8200。
1. 首先把專案mvn clean install,目的是將專案和專案所依賴的jar包打成一個可執行的jar包,java -jar jar包名.jar;
2. 打成的jar包在專案的target目錄下,將jar包上傳至Linux伺服器的eureka目錄下;
3. 將jar包所在的目錄建立一個Dockerfile檔案 vim Dockerfile,內容為
# 基於哪個映象
FROM java:8
# 將檔案掛載到當前容器
VOLUME /tmp
# 複製檔案到容器根目錄"/",並且命名為app.jar
ADD eureka-0.0.1-SNAPSHOT.jar /app.jar
# 宣告需要暴露的埠
EXPOSE 8200
# 配置容器啟動後執行的命令,java -jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
4. 在Dockerfile檔案所在目錄,使用docker build 命令構建映象
docker build -t eureka-server:0.0.1 .
檢查是否image構建成功: docker images
5. 新建容器並且執行
docker run -d -p 8200:8200 eureka-server:0.0.1
6. 最後訪問宿主機的8200埠
該微服務部署成功!
7.docker-compose容器編排。
來源:
圖靈學院