Docker是干什么的
Docker 是一個基于Linux容器(LXC-linux container)的高級容器引擎,基于go語言開發,源代碼托管在 Github 上, 遵從Apache2.0協議開源。Docker的目標是實現輕量級的操作系統虛擬化解決方案。
學習Docker首先要了解幾個概念:
鏡像—Docker的鏡像和常見的系統ISO鏡像類似,包含了應用程序的信息;
容器—容器相當于一個可以運行起來的虛擬機,應用程序運行在容器中,Docker運行在“Docker”上;
倉庫—倉庫是存放鏡像的地方,有類似git的版本控制,同樣分為公開倉庫(Public)和私有倉庫(Private)兩種形式;
Docker支持大部分的Linux發行版,通過使用Docker容器,就可以在不同的操作系統,不同的機器上運行自己的應用,不用關心硬件、運行環境之類的配置,應用程序的遷移變得非常簡單。
Docker和傳統虛擬化技術的對比
相比傳統虛擬機技術,Docker資源占用少,啟動更快,很大的方便了項目的部署和運維。
Docker是在操作系統層面上實現虛擬化,復用本地主機的操作系統,傳統方式是在硬件的基礎上,虛擬出多個操作系統,然后在系統上部署相關的應用。
這張圖片很形象的說明了Docker和VM之類的傳統虛擬化技術的區別:
vs
準備
首先需要準備一個CentOS的操作系統,虛擬機也可以。具體配置要求如下:
1.必須是64位操作系統
2.建議內核在3.8以上
安裝Docker
只需要通過以下命令即可安裝Docker軟件
1
|
yum -y install docker-io |
可使用以下命令,查看Docker是否安裝成功:
1
|
docker version |
如果輸出看Docker的版本號,則說明安裝成功了,可通過以下命令啟動Docker服務:
1
|
service docker start |
如果service命令啟動不了用下面的
1
|
systemctl start docker.service |
做法
就像安裝軟件一樣,我們首先需要有一張刻錄了該軟件的光盤,如果使用的是虛擬光驅,那么就需要準備鏡像的文件,通過它來安裝軟件。在Docker的世界里,也是有鏡像的文件的,已經安裝我們所需的操作系統,我們一般稱為Docker鏡像
下載鏡像
1
|
docker search <image> |
使用docker pull imagename(鏡像名)來下載鏡像
下載完成后使用以下命令查看本地所有的鏡像:
1
|
docker images |
當下載完成后,你應該會看到:
1
2
|
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos centos7 f753707788c5 12 days ago 127.1 MB |
如果看到以上輸出,說明你可以使用 “docker.cn/docker/centos”這個鏡像了,或將其稱為倉庫(Repository),該鏡像有一個名為”centos7”的標簽(Tag),此外還有一個名為”25c5298b1a36”的鏡像ID(這個是隨機生成,所以每個人看到的都不一樣)
啟動容器
容器是在鏡像的基礎上來運行的,一旦容器啟動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。
使用進入已經運行的docker
1
|
docker attach dabfb413d8cf[容器ID] |
使用以下命令即可啟動容器:
1
|
docker run -i -t -v /root/software/:/mnt/software/ --privileged=true 2a392a47afc5 |
docker run <相關參數> <鏡像 ID> <初始命令>
其中相關參數包括:
-i:表示以交互模式運行容器
-t:表示容器啟動后會進入其命令行
-v:表示需要將本地哪個目錄掛載到容器中,格式-v<宿主機目錄>:<容器目錄>
假設我們的所有安裝程序都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。
這一切做好后你就可以為這個容器安裝軟件了。
Docker 傳送文件命令
1
2
3
|
docker cp more.log e7de404c00bd:/tmp/ 1f8787b81bcd |
安裝Java開發環境
我們需要安裝的有jdk1.7,、tomcat7、nginx,安裝包去官網下載就行了
1.安裝jdk
首先,解壓JDK程序包:
1
|
tar -zxf jdk-7u71-linux-x64.tar.gz –C |
如果是rpm包
1
|
rpm –ivh jdk-7u71-linux-x64.tar.gz |
然后重命名文件夾
1
|
mv jdk1.7.0_71/ jdk/ |
最后配置環境變量
1
|
vi ~/.bashrc |
在文件末尾添加如下配置:
1
2
3
|
export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME |
·用文本編輯器打開/etc/profile
·在profile文件末尾加入:
1
2
3
|
export JAVA_HOME=/usr/share/jdk1.6.0_14 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
最后使用source命令,讓環境變量生效:
1
2
3
|
source ~/.bashrc source /etc/profile |
1.安裝Tomcat
也是一樣,解壓Tomcat程序包:
1
|
tar –zxf apache-tomcat-7.0.55.tar.gz |
然后重命名Tomcat目錄:
1
|
mv apache-tomcat-7.0.55/ tomcat/ |
編寫一個運行腳本,當啟動容器時,運行該腳本,啟動Tomcat,具體過程如下:
1
|
vi /root/run.sh |
然后,編輯腳本內容如下:
1
2
3
4
5
|
#!/bin/bash source ~/.bashrc sh /opt/tomcat/bin/catalina .sh run |
注意:這里必須先加載環境,然后使用Tomcat的運行腳本來運行Tomcat
最后,為運行腳本添加執行權限:
1
|
chmod u+x /root/run.sh |
1.安裝nginx
先去官網下載源碼包注意要是gz的
http://nginx.org/en/download.html 下載地址
下載完后,解壓安裝包:
1
|
tar -zxvf nginx-1.11.5. tar .gz |
然后再配置安裝變量,打開解壓后的目錄-執行命令
1
|
cd nginx-1.11.5 |
配置安裝環境
./configure --prefix=/usr/local/servers/nginx “/usr/local/servers/nginx”是安裝路徑
有可能會出現./configure: error: C compiler cc is not found
這時需要運行命令更新一下gcc
1
2
3
4
5
6
7
|
yum install gcc gcc-c++ ncurses-devel perl yum -y install pcre-devel yum -y install zlib-devel yum -y install autoconf libtool make |
在解壓目錄執行:
1
|
make |
切換到root用戶執行安裝命令
1
|
make install |
創建軟鏈
1
|
ln –s /usr/local/servers/nginx/sbin/nginx /usr/local/bin/nginx |
啟動nginx服務
1
|
nginx |
再用 ps -ef|grep nginx查看是否啟動成功
提交Docker鏡像
首先退出你剛才配置好的docker鏡像
1
|
exit |
然后使用以下命令可以看到剛才退出的docker鏡像
1
|
docker ps –a |
再使用以下命令,根據某個”容器ID”來創建一個新的”鏡像”:
1
|
docker commit 57c312bbaad1 javaweb:0.1 |
該容器ID是”57c312bbaad1”,所創建的鏡像名是”javaweb”
注意:”57c312bbaad1” 這個ID是使用 docker ps 命令來查看的
提交了新的鏡像你可以把這個鏡像儲存tar包
1
|
docker –o ~ /javaweb . tar javaweb |
docker save –o 保存的目錄 鏡像名
啟動容器
先用 docker images看看當前所有的鏡像
啟動最新創建的鏡像
1
|
docker run -d -p 80:80 --name javaweb javaweb:0.1 /root/run .sh |
-d:表示以”守護模式”執行/root/run.sh腳本,此時Tomcat控制臺不會出現在輸出終端上。
-p:表示宿主機與容器的端口映射,此時將容器內部的80端口映射為宿主機的 80端口,這樣就向外界暴露了80端口,可通過Docker網橋來訪問容器內部的80端口了
--name:表示容器名稱,用一個有意義的名稱命名即可
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/tianrongyao/articles/6046716.html