零基礎用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 

 

查看容器日志

持續輸出日志(展示88行

docker logs --tail=88 -f CONTAINER_ID(OR NAMES) 

 

docker container logs CONTAINER_ID 

 

查看容器里的進程

docker top CONTAINER_ID 

 

查看已經創建的容器

docker ps -a

 

進入運行的容器(在docker容器中使用jmap等命令查看jvm內存等信息)

docker container exec -it CONTAINER_ID /bin/bash 或 docker container exec -it CONTAINER_ID sh

 

退出容器

 exit

 

重命名一個容器

docker rename old_name new_name 

 

刪除容器

docker ps -a 查看所有容器(包括未運行的容器)

docker rm CONTAINER_ID 

 

刪除鏡像

docker images

docker rmi IMAGE 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

 https://www.cnblogs.com/theRhyme/p/10607872.html

 

 

 

來源:

www.imooc.com

圖靈學院


免責聲明!

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



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