1. 程式人生 > >零基礎用Docker部署微服務

零基礎用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作業系統

,每一個container容器都有自己的ip地址,所以可以在不同的container上設定相同的埠號。

 

 

 

 

 

 

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容器編排。

 

 

 

 

來源:

www.imooc.com

圖靈學院