摘要:據(jù)我所知,和在安裝中都是有區(qū)別的。所以,如果你想跟著我一起安裝,先明確自己的版本是否是,如果不是只能找其他的教程來進行安裝。所以就去拉取了一份鏡像,并運行起來了生成容器。
前言
只有光頭才能變強。
文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y
上一篇已經(jīng)講解了為什么需要Docker?,相信大家已經(jīng)對Docker有一個簡單的認(rèn)識了。
這篇我來講講Docker入門的相關(guān)概念和常用的命令,跟大家一起入門Docker!
一、Docker相關(guān)術(shù)語一般從零學(xué)習(xí)一門技術(shù)(語言),都是從HelloWorld開始的,但這次我偏不。我先來講講Docker的相關(guān)術(shù)語~
鏡像
容器
倉庫
在之前分享的Docker科普文,也通俗易懂地講解了這三個術(shù)語:
鏡像、容器、倉庫的概念可以類比代碼、進程、github
如果讓我來給完全不懂Docker解釋這三個術(shù)語,我會這樣做:
鏡像就是鏡像,我們重裝系統(tǒng)/搞虛擬機的時候都要用鏡像,沒鏡像哪來系統(tǒng)
我們安裝完鏡像,就可以跑起來一個系統(tǒng)(Windows也好、Centos也好),于是我們就可以愉快地使用我們通過鏡像安裝好的系統(tǒng)了。
在Docker中,通過鏡像運行起來的東西叫做容器
倉庫就是專門存放鏡像的地方
鏡像(image)【image除了圖片/圖像的意思外,還有鏡像的意思】二、安裝Docker與HelloWorld容器(container)通過鏡像運行起來的實例
倉庫(reposity)專門存放鏡像的地方
首先需要明確自己所使用的環(huán)境,就我而言,我使用的是CentOS 7。據(jù)我所知,CentOS 7和CentOS 6.8在安裝中都是有區(qū)別的。
所以,如果你想跟著我一起安裝Docker,先明確自己的版本是否是CentOS 7,如果不是只能找其他的教程來進行安裝。
cat /etc/redhat-release // 結(jié)果 CentOS Linux release 7.3.1611 (Core)2.1安裝Docker
首先我們需要安裝GCC相關(guān)的環(huán)境:
// 安裝GCC相關(guān)的環(huán)境 yum -y install gcc yum -y install gcc-c++
如果曾經(jīng)安裝過Docker(舊版本)的話,得先卸載,如果沒有安裝過,跳過這一步:
// 卸載舊Docker版本 yum -y remove docker docker-common docker-selinux docker-engine
安裝Docker需要的依賴軟件包:
// 安裝Docker需要的依賴軟件包: yum install -y yum-utils device-mapper-persistent-data lvm2
設(shè)置stable鏡像倉庫(注意:我們這里使用國內(nèi)的鏡像地址【因為Docker 官網(wǎng)給出的地址在國外,太慢了!】)
// 設(shè)置stable鏡像倉庫: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum軟件包索引:
// 更新yum軟件包索引: yum makecache fast
安裝DOCKER CE(注意:Docker分為CE版和EE版,一般我們用CE版就夠用了)
// 安裝DOCKER CE: yum -y install docker-ce
啟動Docker
// 啟動Docker systemctl start docker2.2HelloWorld走起
到上面為止,我們已經(jīng)啟動了Docker,下面我們檢驗一下我們運行的Docker是否正常。
首先,我們可以看看下載回來的Docker版本:
// 查看Docker的版本 docker version
版本都查到了,說明Docker是運行起來的啦。我們來一發(fā)HelloWorld:
// docker的HelloWorld docker run hello-world
效果:
簡單解釋:docker run hello-world這條命令指示Docker去運行hello-world這個鏡像,但是我們本地沒有這份鏡像啊。所以Docker就去DockerHub拉取了一份hello-world鏡像,并運行起來了(生成容器)。這個hello-world容器的功能就是一句話:Hello from Docker!。所以我們在屏幕上就可以看到這句話了。
2.3配置加速器由于安裝的Docker默認(rèn)是去Docker Hub找我們想要的鏡像的,我們知道國外肯定沒國內(nèi)的快,所以我們一般會配置一個加速器
國內(nèi)的鏡像倉庫一般我們使用的有:
阿里云
網(wǎng)易云
// 等等
首先,我們到https://promotion.aliyun.com/ntms/act/kubernetes.html搜索一下鏡像,比如Tomcat (這就需要我們注冊/登錄一個阿里云賬號)
隨后,我們可以在鏡像加速器上找到我們的url:
我們依照阿里云給出的教程,就可以配置加速器了。
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-"EOF" { "registry-mirrors": ["https://cubmirje.mirror.aliyuncs.com"] } EOF
讓配置生效,并重啟Docker
systemctl daemon-reload systemctl restart docker
不知道大家學(xué)到這里,覺得怎么樣。如果是我,我肯定覺得沒意思。搞了個HelloWorld案例,就打印了一句話,沒意思。
三、體驗Docker假如說,要在一臺全新的系統(tǒng)上將Tomcat跑起來。我們需要做以下的事:
安裝Java,配置環(huán)境變量
安裝Tomcat
如果我們用了Docker,我們是這樣做的:直接在倉庫里拉一份tomcat的鏡像下來,將鏡像跑起來就,就完事了!
拉取Tomcat鏡像:
docker pull tomcat
docker images查看是否有拉取到的tomcat
docker image ls
拉取到的Tomcat鏡像:
運行這個Tomcat鏡像,生成容器
docker run -it -p 9999:8080 tomcat
我們可以發(fā)現(xiàn),這個Tomcat運行起來了!
(滾犢子,沒運行起來,踩坑了!,一直卡在INFO: Deploying web application directory 這句話上了。我還一直想,為啥我訪問不到呢,才發(fā)現(xiàn)沒運行起來)
3.1解決docker運行Tomcat卡住的問題原因:
docker+tomcat 啟動時非常慢,一般正常啟動幾十秒的,發(fā)現(xiàn)docker+tomcat啟動竟需要幾分鐘,不可思議根本原因是 SecureRandom 這個 jre 的工具類的問題。那為什么 SecureRandom generateSeed 這么慢,甚至掛在 Linux 操作系統(tǒng)呢?
Tomcat 7/8 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 類產(chǎn)生安全隨機類 SecureRandom 的實例作為會話 ID。
SecureRandom generateSeed 使用 /dev/random 生成種子。但是 /dev/random 是一個阻塞數(shù)字生成器,如果它沒有足夠的隨機數(shù)據(jù)提供,它就一直等,這迫使 JVM 等待
首先,我們先以后臺的方式運行Tomcat鏡像:
docker run -tid tomcat
以bash的方式進入到容器中:
docker exec -it 4a471223bfc4(為你正在運行容器的id) /bin/bash
為容器安裝vim:
apt-get update apt-get install vim
修改對應(yīng)的java.security文件
cd /docker-java-home/jre/lib/security vim java.security
找到 securerandom.source=file:/dev/random,修改為securerandom.source=file:/dev/./urandom
在Tomcat鏡像下創(chuàng)建一個屬于我們自己的Tomcat鏡像(這個鏡像安裝了vim,修改了配置文件)
docker commit -m "change java.security" -a "3y" 4a471223bfc4(為當(dāng)前容器的id) mytomcat
于是我們就生成了mytomcat鏡像,就可以使用mytomcat:
docker run -it -p:9999:8080 mytomcat
效果圖:
參考資料:
docker 啟動tomcat慢的解決方法
https://my.oschina.net/lwenhao/blog/1830538
JRE /dev/random阻塞
https://www.cnblogs.com/lemon-flm/p/7396627.html
除了Tomcat,大家還可以去拉個mysql、redis、centos等等鏡像來玩玩~~四、命令說明
Docker的命令無非就是對鏡像、對容器進行增刪改查。我是不太喜歡拉出每個命令來寫文章的,所以這些命令還是大家自行學(xué)習(xí)吧~~
之前收集資料的時候,我也找到了一張關(guān)于Docker的思維導(dǎo)圖,對著來看看,感覺就沒問題了:
關(guān)注我的公眾號,回復(fù) 腦圖 即可獲取原圖(.xmind和.png格式)
最后留下幾個問題:
我們知道Tomcat運行起來需要Java的支持,那么我們在Docker拉取下來的Tomcat鏡像是不是也有Java環(huán)境呢?
容器退出了(好比Linux進程退出了),容器的數(shù)據(jù)就沒了,我們想要保留容器內(nèi)的數(shù)據(jù),怎么辦?
從上面我們可以看出,通過commit可以在原有的容器基礎(chǔ)上,創(chuàng)建出屬于我們自己的鏡像,還有其他方式創(chuàng)建新的鏡像嗎?
樂于輸出干貨的Java技術(shù)公眾號:Java3y。公眾號內(nèi)有200多篇原創(chuàng)技術(shù)文章、海量視頻資源、精美腦圖,不妨來關(guān)注一下!
覺得我的文章寫得不錯,不妨點一下贊!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73109.html
摘要:據(jù)我所知,和在安裝中都是有區(qū)別的。所以,如果你想跟著我一起安裝,先明確自己的版本是否是,如果不是只能找其他的教程來進行安裝。所以就去拉取了一份鏡像,并運行起來了生成容器。 前言 只有光頭才能變強。 文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 上一篇已經(jīng)講解了為什么需要Docker?,相信大家已經(jīng)對Docke...
摘要:指定了自己的執(zhí)行器,還有其他的寫法注意我們在取鏡像名的時候,這里要注意,字母只能全部小寫。 這部分介紹比較實用,在開中會經(jīng)常用到,因為我們會根據(jù)自己的項目來構(gòu)建自己的鏡像,然后發(fā)布。 第一種定制方式 首先跑起來一個ubuntu,在ubuntu上安裝相應(yīng)的軟件。 docker run -it --name temp ubuntu /bin/bash 進來后,安裝一個apache2吧 ap...
摘要:在年下旬開源了一款新的工具,可以輕松地將應(yīng)用程序容器化。由于默認(rèn)訪問谷歌的倉庫,而國內(nèi)訪問不穩(wěn)定會經(jīng)常導(dǎo)致網(wǎng)絡(luò)超時,所以筆者使用了國內(nèi)的阿里云鏡像服務(wù),那么就不需要訪問谷歌的倉庫了。執(zhí)行完成后,我們可以在阿里云鏡像倉庫獲取鏡像。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關(guān)注公眾號:「服務(wù)端思維」。一群同頻者,一起成長,一起精進,打破認(rèn)知的局限性。...
摘要:在年下旬開源了一款新的工具,可以輕松地將應(yīng)用程序容器化。由于默認(rèn)訪問谷歌的倉庫,而國內(nèi)訪問不穩(wěn)定會經(jīng)常導(dǎo)致網(wǎng)絡(luò)超時,所以筆者使用了國內(nèi)的阿里云鏡像服務(wù),那么就不需要訪問谷歌的倉庫了。執(zhí)行完成后,我們可以在阿里云鏡像倉庫獲取鏡像。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關(guān)注公眾號:「服務(wù)端思維」。一群同頻者,一起成長,一起精進,打破認(rèn)知的局限性。...
摘要:經(jīng)過上篇入門后,肯定有點抱怨,還是沒有體驗到的威力。現(xiàn)在我們來點好玩的。今天先到這了,接下來你可以去好好裝逼了,下期再見。 經(jīng)過上篇docker入門后,肯定有點抱怨,還是沒有體驗到docker的威力。現(xiàn)在我們來點好玩的。 裝個ubuntu 以前我們裝ubuntu,都是要費老大的力氣,有了docker,我們裝個ubuntu玩玩。 docker run -t -i ubuntu:14.04...
閱讀 3273·2021-09-30 09:47
閱讀 2290·2021-09-10 10:51
閱讀 1889·2021-09-08 09:36
閱讀 2926·2019-08-30 12:56
閱讀 3027·2019-08-30 11:16
閱讀 2622·2019-08-29 16:40
閱讀 2993·2019-08-29 15:25
閱讀 1631·2019-08-29 11:02