亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

30分鐘帶你了解Docker(推薦)

2024-09-01 13:55:24
字體:
來源:轉載
供稿:網友

最近一直在忙項目,不知不覺2個多月沒有更新博客了。正好自學了幾天docker就干脆總結一下,也順帶增加一篇《30分鐘入門系列》。網上能夠查到的對于docker的定義我就不再重復了,說說我自己對它的理解:Docker一個方便多次部署的虛擬化Linux容器,與當下流行的SpringBoot和微服務框架搭配更加相得益彰,從而真正的做到從開發到部署的全流程靈敏。請注意這里的三個關鍵詞:Linux容器,SpringBoot,靈敏。首先,Docker不能別用來部署本地應用(如果你有開發過基于Qt的桌面應用你就能體會到運行環境不統一對于開發人員來說簡直是噩夢)。其次,這篇博客是針對Java開發人員的,但Docker的使用場景絕不僅限于此。最后,靈敏意味著可能有一些開發方式需要調整,到底如何利用Docker應該是當你了解它之后需要認真思考的問題。

一、環境準備

我個人的測試環境為VirtualBox,CentOS7及最新版本的Spring Boot。首先以最小化方式安裝CentOS: 

Docker

Docker

推薦在安裝階段就默認打開網絡鏈接...接下來等待20分鐘虛擬機安裝完畢

Docker

由于是最小化安裝,完成以后推薦安裝幾條基礎命令:

1. yum update

2. yum install -y net-tools vim curl wget

以上測試環境就算搭建完成,以下開始安裝Docker。我們進入官方網站,他們已經很貼心的為我們準備好了安裝教程。目前我可以登陸Docker的官方網站,并且基于Centos的安裝說明在這里也可以查看。不過為了以防萬一,我在博客中還是記錄一下如果你發現無法訪問或閱讀英文有些困難直接跟著下面的流程走即可:

1. 卸載系統中的早期版本

$ sudo yum remove docker /     docker-client /     docker-client-latest /     docker-common /     docker-latest /     docker-latest-logrotate /     docker-logrotate /     docker-selinux /     docker-engine-selinux /     docker-engine

2. 安裝工具

$ sudo yum install -y yum-utils / device-mapper-persistent-data / lvm2

3. 配置Docker的安裝yum原

$ sudo yum-config-manager / --add-repo / https://download.docker.com/linux/centos/docker-ce.repo

4. 安裝Docker CE

$ sudo yum install docker-ce

5. 啟動Docker

$ sudo systemctl start docker

6. 運行Hello World

$ sudo docker run hello-world

Docker

7. 配置國內的鏡像加速

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://57326c54.m.daocloud.io

二、操作指南

網上有關docker的命令有很多,詳細的說明各位可以去更權威的地方查閱。這里我只列舉幾條最重要的命令并加以說明:

1. 查閱鏡像列表:docker images

Docker

你應該不會有這么多鏡像,但是至少應該存在一條hello-world。沒錯這就是你剛剛下載的測試鏡像。

2. 查閱容器列表:docker ps -a

Docker

你應該也只會看到一條hello-world的容器。

這里我們已經接觸到了有關docker的第一個重要概念:鏡像和容器。不過暫時我還不打算對這兩個概念加以說明,我們可以反復運行

$ sudo docker run hello-world

然后再查看容器列表:

Docker

沒錯,你現在發現多次運行同一個鏡像只會發生一次鏡像下載,但是卻會出現多個容器。更準確的說,你運行了幾次hello-world就會生成幾個容器。

3. 停止和刪除容器:docker stop/rm [container_id]

我們刪除掉所有hello-world容器,瞬間整個世界變的美好了。

4. 刪除鏡像:docker rmi [image_id]

我們刪除掉hello-world鏡像,世界終于又歸于寂靜。

有了感性認識以后,現在可以說明鏡像和容器的概念:

鏡像就好像是iso文件,docker需要使用鏡像作為源。一個鏡像可以反復被使用,而每次當docker通過鏡像啟動起來的就是一個容器,容器之間相互隔離。如果容器被刪除了,在容器中的所有改變都會丟失。

用一張最經典的圖來表示鏡像與容器的關系:

Docker

沒錯,一個完整的docker項目就應該是這樣,在本地系統(boosfs)之上可能存在多個鏡像(image)它們之間存在繼承關系,而最上層處于運行環境的就是容器(container)。所有的修改操作都只在容器中。如果容器被關閉數據會發生丟失,除非你將容器刻錄為新的鏡像層。不過我們還有別的更好的手段將數據保存下來,但不在我們今天的討論中。

5. 獲取鏡像:docker pull [image_name]

**********************************************

請確認你已經配置了國內的鏡像加速:

vim /etc/docker/daemon.json

 配置:

{"registry-mirrors": ["http://57326c54.m.daocloud.io"]}

重啟Docker:systermctl restart docker

**********************************************

先查詢一下與CentOS有關的鏡像

docker search centos

第一個看上去很“官方”的樣子

docker pull centos:latest

下載完成以后先查詢一下確認鏡像沒有問題docker images。

6. 交互的方式來啟動鏡像:docker run -it [image_name] [args...]

docker run -it centos /bin/bash

咦?似乎沒有任何變化。再仔細看看,命令提示符是不是有變化。

Docker

沒錯,你已經進入了容器,現在是在容器的CentOS操作界面。

7. 安裝Mysql

$ sudo yum install -y wget$ sudo wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm$ sudo yum install mysql-community-server

配置

$ sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql

啟動

$ sudo mysqld_safe

8. 離開容器:Ctrl + q, Ctrl + p

這個組合鍵是用來退出容器并讓容器在后臺保持運行

9. 重新登陸容器:docker exec -it [container_id] [args...]

docker exec -it 21f99e364fb1 bash

賦予MySQL的root用戶遠程連接權限

# mysql -u rootmysql> UPDATE mysql.user SET Password = PASSWORD('12345678') WHERE User = 'root';mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;mysql> flush privileges;

10. 提交鏡像:docker commit [container_id] [myimage_name:tag]

要提交自己的鏡像首先需要退出當前容器:

exitdocker commit 21f99e364fb1 centos:mysql

11. 端口映射:docker run -p [local_port]:[docker_port] -it [image_name] [args...]

docker run -p 3307:3306 -it centos:mysql /bin/bash

這樣我們在本地的操作系統中就可以通過訪問虛擬機的3307端口訪問我們在docker中部署的mysql服務了。

三、構建SpringBoot項目的docker鏡像

到目前為止,如果你的操作一切順利代表已經掌握了docker的基本使用方法。上面的對于mysql的安裝其實只是起到一個拋磚引玉的作用,目的是讓你熟悉docker的基礎命令,實際在開發中我們很少會將mysql部署在docker中。更常見的一個開發場景是將SpringBoot項目生成docker鏡像,下面我們就正式進入實戰環節。

1. 在本地先構建一個SpringBoot項目

通過SpringBoot的官網為我們生成一個基礎項目:

Docker

接著通過你喜歡的IDE導入并打開項目,在pom.xml文件中添加依賴:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration>  <imageName>${docker.image.prefix}/${project.artifactId}</imageName>  <dockerDirectory>src/main/docker</dockerDirectory>  <resources>   <resource>    <targetPath>/</targetPath>    <directory>${project.build.directory}</directory>  <include>${project.build.finalName}.jar</include>  </resource> </resources> </configuration></plugin>

編寫一個controller文件:

@RestControllerpublic class DockerController { @RequestMapping("/") public String hello() {  return "Hello Docker!"; }}

現在本地運行一下,看看有沒有問題。如果一切正常進入下一步。

2. 接下來我們需要將項目放到docker的環境中去打包

(1) 在虛擬機中安裝jdk

yum -y install java-1.8.0-openjdk*

(2) 配置環境變量如下

vim /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 export PATH=$PATH:$JAVA_HOME/bin 

(3) 從Apache官網下載最新版本的maven

tar vxf apache-maven-3.5.4-bin.tar.gzmv apache-maven-3.5.4 /usr/local/maven3

(4) 配置環境變量如下

export MAVEN_HOME=/usr/local/maven3export PATH=PATH:MAVEN_HOME/bin

(5) 使環境變量生效

source /etc/profile

(6) 編寫DockerFile文件

在main目錄下添加一個docker目錄并創建DockerFile文件,文件內容如下

FROM openjdk:8-jdk-alpineVOLUME /tmpADD helloboot-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

(7) 接著在項目路徑下使用maven打包

mvn package docker:build

如果中間發生構建失敗可能的原因是你的項目名稱和我的不一樣,請仔細檢查DockerFile文件,通常在第一次i構建中你可能會遇到各種各樣的錯誤信息。放到網上查一下就可以了。

構建完成以后我們可以通過docker images查詢一下鏡像列表:

Docker

沒錯第一個鏡像就是我們的項目。下面啟動這個鏡像并通過服務器的80端口來映射:

docker run -p 80:8080 -t springboot/helloboot

最后我們在本地通過瀏覽器直接訪問虛擬機的ip,如果可以看到“Hello Docker!”

說明使用 Docker 部署 Spring Boot 項目成功!

哈哈,30分鐘帶你了解Docker,大家都看明白了嗎?有任何疑問歡迎給小編留言哦,小編很樂意和大家一起學習!


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久人成影片一区二区三区| 欧美丝袜一区二区| 日本韩国在线不卡| 欧美主播福利视频| 91精品视频大全| 亚洲美女激情视频| 亚洲精品一区二区久| 亚洲黄色在线观看| 精品欧美国产一区二区三区| 久久久97精品| 狠狠做深爱婷婷久久综合一区| 91免费看视频.| 中文字幕欧美亚洲| 91在线高清免费观看| 91av免费观看91av精品在线| 色播久久人人爽人人爽人人片视av| 国产在线播放不卡| 久久久久久91香蕉国产| 亚洲男人天堂网| 精品magnet| 久久精品在线视频| 91精品视频一区| 欧美激情2020午夜免费观看| 成人在线视频福利| 亚洲精品成人av| 国产精品三级在线| 2019中文字幕在线免费观看| 成人黄在线观看| 91sao在线观看国产| 91亚洲国产精品| 久久影视电视剧凤归四时歌| 7m精品福利视频导航| 国产亚洲精品久久久| 亚洲第一精品夜夜躁人人爽| 91视频免费在线| 欧美韩国理论所午夜片917电影| 日韩欧美国产中文字幕| 成人激情视频小说免费下载| 欧美黄色免费网站| 亚洲国产免费av| 久久精品99国产精品酒店日本| 亚洲天堂网站在线观看视频| 日韩精品在线免费观看| 91国产美女在线观看| 超碰精品一区二区三区乱码| 欧美专区第一页| 亚洲黄色片网站| 欧美一级片免费在线| 国产综合在线视频| 欧美高清视频一区二区| 欧美国产视频日韩| 欧美中文字幕在线观看| 国产精品盗摄久久久| 中文字幕精品国产| 亚洲欧美国产一区二区三区| 欧美多人爱爱视频网站| 日韩欧美高清在线视频| 国产精品久久久久久久久久久不卡| 亚洲变态欧美另类捆绑| 中文字幕欧美日韩va免费视频| 久久精品91久久久久久再现| 亚洲欧美一区二区三区久久| 黑人狂躁日本妞一区二区三区| 亚洲精品综合精品自拍| 国外视频精品毛片| 亚洲自拍小视频| 视频在线观看一区二区| 亚洲国产精品va在线看黑人| 992tv成人免费影院| 最好看的2019年中文视频| 国产成人在线一区二区| 久久久人成影片一区二区三区观看| 国产精品成久久久久三级| 最近2019年中文视频免费在线观看| 精品久久久久久久久久久久久久| 成人免费xxxxx在线观看| 亚洲影视中文字幕| 久热精品视频在线观看一区| 亚洲人精选亚洲人成在线| 一区二区三区视频免费| 亚洲黄色av女优在线观看| 日韩精品在线电影| 午夜剧场成人观在线视频免费观看| 久久久久久久电影一区| 成人福利在线视频| 国产suv精品一区二区| 精品中文字幕在线| 欧美激情精品久久久久久| 欧美日韩国产激情| 国产a∨精品一区二区三区不卡| 欧美电影免费观看高清完整| 欧美高清自拍一区| 国产精品福利在线观看网址| 国产亚洲激情视频在线| 欧美成人中文字幕| 91中文字幕在线| 国产精品久久久久久久久久三级| 欧美亚洲国产视频| 日韩三级成人av网| 成人激情春色网| 国产亚洲日本欧美韩国| 久久国产精品久久国产精品| 国产精品成人一区二区三区吃奶| 国产一区红桃视频| 成人免费黄色网| 欧洲成人在线观看| 91欧美日韩一区| 亚洲激情在线视频| 成人免费黄色网| 久久久久久久久久久国产| 欧美电影免费观看大全| 中文国产成人精品久久一| 55夜色66夜色国产精品视频| 亚洲精品在线不卡| 欧美一区在线直播| 成人精品福利视频| 91tv亚洲精品香蕉国产一区7ujn| 97成人在线视频| 欧美最顶级的aⅴ艳星| 久久免费视频网站| 亚洲香蕉伊综合在人在线视看| 亚洲精品成人av| 美女扒开尿口让男人操亚洲视频网站| 亚洲午夜av电影| 成人免费直播live| 久久精品国产69国产精品亚洲| 亚洲欧美综合精品久久成人| 久久亚洲欧美日韩精品专区| 亚洲成色777777在线观看影院| 国精产品一区一区三区有限在线| 国产99久久精品一区二区| 日韩中文视频免费在线观看| 国产在线拍揄自揄视频不卡99| 日av在线播放中文不卡| 国产精品免费一区豆花| 亚洲字幕一区二区| 国产福利精品在线| 国产欧美日韩精品在线观看| 色综合久久88色综合天天看泰| 欧美日韩激情小视频| 高清一区二区三区日本久| 中国人与牲禽动交精品| 国产拍精品一二三| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品成人aaaaa网站| 欧美性猛交xxxx免费看漫画| 国产精品夜间视频香蕉| 亚州欧美日韩中文视频| 欧美一区二区三区艳史| 91网在线免费观看| 久久亚洲综合国产精品99麻豆精品福利| 国产精品视频999| 欧美成人一区二区三区电影| 精品自拍视频在线观看| 神马久久桃色视频| 欧美在线视频导航| 国产精品黄页免费高清在线观看| 欧美精品在线观看91| 久久艳片www.17c.com| 亚洲丁香婷深爱综合| 欧美性理论片在线观看片免费| 亚洲国产欧美在线成人app| 国产成人精品免高潮在线观看| 亚洲第一免费网站|