【原創(chuàng)】Docker入門探索

剛開(kāi)始對(duì)Docker的印象是一個(gè)低配版虛擬機(jī),沙箱機(jī)制的容器。工作中項(xiàng)目接觸的少,所以對(duì)于這項(xiàng)用不著的技術(shù)一直停留在最初的印象。

現(xiàn)在互聯(lián)網(wǎng)行業(yè)飛速發(fā)展,公司同時(shí)也在飛速發(fā)展。隨著業(yè)務(wù)量不斷擴(kuò)大,公司也不得不升級(jí)為微服務(wù)式架構(gòu)。微服務(wù)架構(gòu)的粒度小,耦合低。同時(shí)對(duì)于服務(wù)器的要求也越來(lái)越高,為何方便快捷的搭建環(huán)境和管理,使用Docker成為了必要。接下來(lái)進(jìn)入主題:

1,Docker的Windows安裝

 首先進(jìn)入Docker官網(wǎng):https://www.docker.com
 get started 獲取下載鏈接
 下載完成直接運(yùn)行安裝
 然后失?。? 很正常,首先windows10必須是企業(yè)版,因?yàn)閣in10版本的docker依賴hyper-v。如果不是請(qǐng)升級(jí)系統(tǒng)為企業(yè)版
 然后安裝完成之后運(yùn)行失???
 根據(jù)提示修復(fù)錯(cuò)誤,我遇到的問(wèn)題解決方式是:1,通過(guò)bios開(kāi)啟虛擬化,2,開(kāi)啟hyper-v

2,Docker入門級(jí)使用

1,什么是Docker鏡像
 Doker的精髓,也是docker的便利之處。鏡像可以理解為一個(gè)環(huán)境包??梢浦玻瑴p去重復(fù)部署環(huán)境的煩惱。
2,如何保存自己的云Docker鏡像
我用的是阿里云鏡像,進(jìn)入阿里云————>選擇產(chǎn)品與服務(wù)————>容器鏡像服務(wù)
3,制作鏡像(使用Dockerfile方式)
Dockerfile內(nèi)容:

#使用的基礎(chǔ)鏡像
FROM centos

#作者信息
MAINTAINER  "yuchuan.zeng@hand-china.com"

#創(chuàng)建功能目錄
RUN mkdir -p /home/hms

#把當(dāng)前目錄下的jdk文件夾添加到鏡像
ADD jdk-8u91-linux-x64.tar.gz /home/hms

#把當(dāng)前目錄下的tomcat文件夾添加到鏡像
ADD apache-tomcat-8.5.12.tar.gz /home/hms

#添加環(huán)境變量
ENV JAVA_HOME /home/hms/jdk1.8.0_91
ENV CATALINA_HOME /home/hms/apache-tomcat-8.5.12
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

WORKDIR /home/hms/apache-tomcat-8.5.12

#暴露8080端口
EXPOSE 8080

RUN chmod +x /home/hms/apache-tomcat-8.5.12/bin/catalina.sh
RUN chmod 777 -R /home/hms
#啟動(dòng)時(shí)運(yùn)行tomcat
CMD ["/home/hms/apache-tomcat-8.5.12/bin/catalina.sh", "run"]

然后需要把Dockerfile打成鏡像:

    docker build -f Dockerfile  -t  hms-tomcat:TAG  .
    # -f Dockerfile路徑,默認(rèn)是當(dāng)前目錄
    # -t 指定新鏡像的名字以及TAG
    # .  指定路徑為當(dāng)前路徑
成果效果圖

啟動(dòng)鏡像:

docker run --name test-tomcat   -itd  -p 9000:8080  -v 主機(jī)目錄:容器目錄:rw  鏡像ID或鏡像名:TAG
# -i 以交互模式運(yùn)行容器
# -t 分配一個(gè)偽終端,即命令行,通常組合來(lái)使用
# -p 指定映射端口,將主機(jī)端口映射到容器內(nèi)的端口
# -d 后臺(tái)運(yùn)行容器
# -v 指定掛載主機(jī)目錄到容器目錄,默認(rèn)為rw讀寫模式,ro表示只讀

查看logs指令:

  docker logs -f --tail=100 test-tomcat

進(jìn)入容器指令:

  win: winpty docker exec -it b78da88433cd sh
  linux: docker exec -it b78da88433cd bash

如果對(duì)自己的鏡像測(cè)試滿意,則上傳阿里云

打成tag:
docker tag [鏡像ID]   registry.cn-hangzhou.aliyuncs.com/circle-zeng/hms:[鏡像版本號(hào)]
打tag作用是建立傳輸管道,告訴docker往哪兒傳輸

push:
docker push registry.cn-hangzhou.aliyuncs.com/circle-zeng/hms:[鏡像版本號(hào)]

以后類似的環(huán)境就可以根據(jù)這個(gè)基礎(chǔ)環(huán)境為基礎(chǔ)引用了,如下Dockerfile:
#使用自己的基礎(chǔ)鏡像
FROM registry.cn-hangzhou.aliyuncs.com/circle-zeng/hms:2.0.0

后續(xù)使用鏡像時(shí),可能需要為鏡像加上hosts配置

docker run --add-host 域名:ip  --add-host 域名:ip  --name hmap-tomcat -itd -p 9090:8080 hmap-tomcat:3.0  -v 主機(jī)目錄:容器目錄:rw  
使用docker-compose,在當(dāng)前目錄下建立docker-compose.yaml
version: "2"
services:
  mysql:
    container_name: mysql2  # 容器名
    image: # 容器所使用的鏡像,鏡像形式為[username 或 url]/repository:tag
    ports:
      - "3306:3306" # [本機(jī)端口:容器內(nèi)端口] 將本機(jī)端口與docker容器內(nèi)部應(yīng)用的端口映射,以提供外部對(duì)容器內(nèi)應(yīng)用的訪問(wèn)能力
    environment:
      MYSQL_ROOT_PASSWORD: root # 設(shè)置mysql密碼
    volumes:
      - ./mysql/mysql_data:/var/lib/mysql # 將mysql中的數(shù)據(jù)文件映射到本機(jī)文件夾,":"前的為本機(jī)地址,后的為容器內(nèi)地址
      - ./mysql/mysql_db.cnf:/etc/mysql/conf.d/mysql_db.cnf # 將mysql的配置文件映射到本機(jī)文件

建立之后執(zhí)行:docker-compose -f docker-compose.yaml  up -d  啟動(dòng)

補(bǔ)充:
docker的掛載功能非常實(shí)用,對(duì)應(yīng)docker run中-v指令,指定主機(jī)目錄掛載到容器目錄。這樣的好處在于tomcat部署項(xiàng)目時(shí),直接把war包目錄掛載到容器tomcat的webapps目錄下,無(wú)需進(jìn)入容器內(nèi)就可以進(jìn)行應(yīng)用的微調(diào)整

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容