archlinux下 Docker 操作+部署自定義tomcat鏡像

Docker


1 docker安裝和啟動

1.1 安裝

 sudo pacman -S docker

    //red系linux
 sudo yum install docker-ce

此時會安裝docker和依賴

1.2 設置ustc的鏡像

vi /etc/docker/daemon.json  

在該文件中輸入如下內容:

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

1.3 Docker守護進程的啟動與停止

啟動docker:docker服務即docker守護進程的啟動和停止

systemctl start docker

停止docker:

systemctl stop docker

重啟docker:

systemctl restart docker

查看docker狀態(tài):

systemctl status docker

開機啟動:

systemctl enable docker

查看docker概要信息

docker info

查看docker幫助文檔

docker --help

2 鏡像相關命令

2.1 查看鏡像

docker images

REPOSITORY:鏡像名稱

TAG:鏡像標簽

IMAGE ID:鏡像ID

CREATED:鏡像的創(chuàng)建日期(不是獲取該鏡像的日期)

SIZE:鏡像大小

鏡像都是存儲在Docker宿主機的/var/lib/docker目錄下
此目錄也是docker的容器的工作目錄

2.2 搜索鏡像

如果你需要從網絡中查找需要的鏡像初肉,可以通過以下命令搜索

docker search 鏡像名稱

NAME:倉庫名稱

DESCRIPTION:鏡像描述

STARS:用戶評價,反應一個鏡像的受歡迎程度

OFFICIAL:是否官方

AUTOMATED:自動構建饰躲,表示該鏡像由Docker Hub自動構建流程創(chuàng)建的

2.3 拉取鏡像

拉取鏡像就是從中央倉庫中下載鏡像到本地

docker pull 鏡像名稱

例如牙咏,我要下載centos7鏡像

docker pull centos:7

2.4 刪除鏡像

按鏡像ID刪除鏡像

docker rmi 鏡像ID

刪除所有鏡像

docker rmi `docker images -q`

3 容器相關命令

3.1 創(chuàng)建與啟動容器

創(chuàng)建容器常用的參數說明:

創(chuàng)建容器命令:docker run

-i:表示運行容器

-t:表示容器啟動后會進入其命令行。加入這兩個參數后嘹裂,容器創(chuàng)建就能登錄進去妄壶。即分配一個偽終端。

--name :為創(chuàng)建的容器命名寄狼。

-v:表示目錄映射關系(前者是宿主機目錄丁寄,后者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射伊磺,在宿主機上做修改盛正,然后共享到容器上。

-d:在run后面加上-d參數,則會創(chuàng)建一個守護式容器在后臺運行(這樣創(chuàng)建容器后不會自動登錄容器奢浑,如果只加-i -t兩個參數蛮艰,創(chuàng)建后就會自動進去容器)。

-p:表示端口映射雀彼,前者是宿主機端口壤蚜,后者是容器內的映射端口』惭疲可以使用多個-p做多個端口映射

(1)交互式方式創(chuàng)建容器 創(chuàng)建后會自動登陸進去

docker run -it --name=容器名稱 鏡像名稱:標簽 /bin/bash

這時我們通過ps命令查看袜刷,發(fā)現可以看到啟動的容器,狀態(tài)為啟動狀態(tài)

退出當前容器

exit

(2)守護式方式創(chuàng)建容器:創(chuàng)建后不會自動登陸進去

docker run -di --name=容器名稱 鏡像名稱:標簽

登錄守護式容器方式:

docker exec -it 容器名稱 (或者容器ID)  /bin/bash

3.2 停止與啟動容器

停止容器:

docker stop 容器名稱(或者容器ID)

啟動容器:

docker start 容器名稱(或者容器ID)

3.3 查看容器

查看正在運行的容器

docker ps

查看所有容器

docker ps –a

查看最后一次運行的容器

docker ps –l

查看停止的容器

docker ps -f status=exited

3.4 文件拷貝

如果我們需要將文件拷貝到容器內可以使用cp命令:容器啟動與否均可拷貝

docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄

也可以將文件從容器內拷貝出來

docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄

3.5 目錄掛載

我們可以在創(chuàng)建容器的時候莺丑,將宿主機的目錄與容器內的目錄進行映射著蟹,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器。
創(chuàng)建容器 添加-v參數 后邊為 宿主機目錄:容器目錄梢莽,例如:

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

如果你共享的是多級的目錄萧豆,可能會出現權限不足的提示。

這是因為CentOS7中的安全模塊selinux把權限禁掉了昏名,我們需要添加參數 --privileged=true 來解決掛載的目錄沒有權限的問題

3.6 查看容器各種數據

我們可以通過以下命令查看容器運行的各種數據

docker inspect 容器名稱(容器ID) 

也可以直接執(zhí)行下面的命令直接輸出IP地址:注意NetworkSettings 前面的.不可省略

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱(容器ID)

示例:
docker inspect --format={{.NetworkSettings.Networks.bridge.Gateway}} mycentos3

3.7 刪除容器

刪除指定的容器:不能刪除正在運行的容器

docker rm 容器名稱(容器ID)

4 實際操作

根據以上命令拉取一個原生的centos鏡像,部署tomcat,jdk等.

4.1 操作容器部署jdk和tomcat

  1. 拉取鏡像
docker pull centos
  1. 建立容器
docker run  --name=mytomcat -ti  -p 8080:8080 centos /bin/bash
    ## --name:容器的名字  -di:運行且分配一個偽終端,且進入docker內.  
    ## -p 8080:8080 將docker內的8080端口映射到宿主機的8080端口
docker run  --name=mytomcat -di  -p 8080:8080 centos /bin/bash
    ## --name:容器的名字  -di:后臺運行且分配一個偽終端  
    ## -p 8080:8080 將docker內的8080端口映射到宿主機的8080端口
docker exec -it mytomcat /bin/bash 
    ## 進入后臺運行的cocker 
  1. 復制tomcat和jdk到容器中的目錄
docker cp tomcat8 mytomcat:/usr/local

docker cp jdk8 mytomcat:/usr/local
  1. docker添加環(huán)境變量

docker推薦的環(huán)境變量添加方式有兩種
一是通過dockerfile建立鏡像的時候添加.
二是run鏡像的時候添加參數

不過我想也可以修改運行中容器的環(huán)境變量,不過都不推薦這么做,docker應該是無狀態(tài)的.

修改 /etc/profile 文件添加環(huán)境變量不管用.查閱資料可知 docker啟動容器是非登錄狀態(tài).
修改 /root/.bashrc文件,添加環(huán)境變量才起作用.

vim /root/.bashrc 

添加

export JAVA_HOME=/usr/local/jdk8
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

(這么做實在是不推薦,環(huán)境變量應該在建立鏡像的時候添加,使用dockerfile)

  1. 進入tomcat目錄下,運行tomcat.
/usr/local/tomcat8/bin/startup.sh

宿主機啟動瀏覽器訪問 localhost:8080即可訪問docker內的tomcat服務.

可掛載宿主機上線目錄到容器中的tomcat工作目錄,啟動容器時即可訪問上線的web應用.

4.2 使用dockerfile和鏡像 搭建tomcat+jdk8新鏡像.

(1). 編輯Dockerfile文件

vim Dockerfile
#依賴鏡像名稱和ID
FROM centos:latest
#指定鏡像創(chuàng)建者信息
MAINTAINER xiaobai
#COPY 是相對路徑jar,把java添加到容器中
COPY jdk8 /usr/local/tomcat
COPY tomcat /usr/local/jdk8
# 這里不知道為啥復制的時候全都復制的tomcat或者jdk8里面的子目錄 還需要在docker中再添加目錄(會主動創(chuàng)建)
#配置java環(huán)境變量
ENV JAVA_HOME /usr/java/jdk8
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

# 設置容器run自啟動tomcat
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
# 不使用 startup.sh 因為是后臺進行,docker會直接退出.

(2). 執(zhí)行命令構建鏡像

docker build -t='mytomcat:test' .

注意后邊的空格和點涮雷,不要省略

(3). 查看鏡像是否建立完成

docker images

(4). 運行新創(chuàng)建的容器

寫一個html頁面

cd ~/env/tool/tomcat/tomcat01-docker/webapps
mkdir ROOT
vim index.html

輸入以下內容
<html>
<body>
<h2>Hello tomcat+docker!</h2>
</body>
</html>

運行容器

docker run --name=mytomcat  -di -p 8080:8080 -v ~/dev/tool/tomcat/tomcat01-docker/webapps:/usr/local/tomcat/webapps/ mytomcat:test
# -di 后臺運行 或者改成ti
# -v 將宿主機目錄掛載到tomcat服務目錄下  宿主機目錄:docker中目錄
# -p 端口映射 宿主機端口:docker中端口
# 

宿主機訪問localhost:8080 訪問成功.

5 容器的備份

5.1 容器保存為鏡像

我們可以通過以下命令將容器保存為鏡像

docker commit mytomcat mytomcat_i:test

執(zhí)行 docker images 查看當前的境像,發(fā)現mytomcat_i存在

5.2 鏡像備份

我們可以通過以下命令將鏡像保存為tar 文件

// -o表示輸出
docker  save -o mynginx.tar mynginx_i
會將境像mynginx_i保存在本地轻局,保存為mynginx.tar文件

5.3 鏡像恢復與遷移

先刪除掉mynginx_i鏡像 然后執(zhí)行此命令進行恢復

docker load -i mynginx.tar

-i 輸入的文件

執(zhí)行后再次查看鏡像洪鸭,可以看到鏡像已經恢復


參考 :
https://www.runoob.com/docker/docker-tutorial.html

想了解docker鏡像和容器存儲原理的可以看幾篇很不錯的文章
https://www.cnblogs.com/wdliu/p/10483252.html
https://sq.163yun.com/blog/article/172542620051890176
這一篇比較老,濃重的翻譯腔仑扑。
http://dockone.io/article/783

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末览爵,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子镇饮,更是在濱河造成了極大的恐慌蜓竹,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盒让,死亡現場離奇詭異梅肤,居然都是意外死亡,警方通過查閱死者的電腦和手機邑茄,發(fā)現死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門姨蝴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肺缕,你說我怎么就攤上這事左医∈谂粒” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵浮梢,是天一觀的道長跛十。 經常有香客問我,道長秕硝,這世上最難降的妖魔是什么芥映? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮远豺,結果婚禮上奈偏,老公的妹妹穿的比我還像新娘。我一直安慰自己躯护,他們只是感情好惊来,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棺滞,像睡著了一般裁蚁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上继准,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天枉证,我揣著相機與錄音,去河邊找鬼移必。 笑死刽严,一個胖子當著我的面吹牛,可吹牛的內容都是我干的避凝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼眨补,長吁一口氣:“原來是場噩夢啊……” “哼管削!你這毒婦竟也來了?” 一聲冷哼從身側響起撑螺,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤含思,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甘晤,有當地人在樹林里發(fā)現了一具尸體含潘,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年线婚,在試婚紗的時候發(fā)現自己被綠了遏弱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡塞弊,死狀恐怖漱逸,靈堂內的尸體忽然破棺而出泪姨,到底是詐尸還是另有隱情,我是刑警寧澤饰抒,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布肮砾,位于F島的核電站,受9級特大地震影響袋坑,放射性物質發(fā)生泄漏仗处。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一枣宫、第九天 我趴在偏房一處隱蔽的房頂上張望婆誓。 院中可真熱鬧,春花似錦镶柱、人聲如沸旷档。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞋屈。三九已至,卻和暖如春故觅,著一層夾襖步出監(jiān)牢的瞬間厂庇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工输吏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留权旷,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓贯溅,卻偏偏與公主長得像拄氯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子它浅,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容