Docker 簡介與部署

Docker基本概念

l.????鏡像(Image):Docker 鏡像(Image),就相當(dāng)于是一個(gè) root 文件系統(tǒng)。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)门怪。

2.????容器(Container):鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類和實(shí)例一樣,鏡像是靜態(tài)的定義价卤,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器可以被創(chuàng)建渊涝、啟動(dòng)慎璧、停止、刪除跨释、暫停等胸私。

3.????倉庫(Repository):倉庫可看成一個(gè)代碼控制中心,用來保存鏡像鳖谈。

Docker的場(chǎng)景和優(yōu)點(diǎn)

場(chǎng)景:

1.????Web 應(yīng)用的自動(dòng)化打包和發(fā)布岁疼。

2.????自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布缆娃。

3.????在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺(tái)應(yīng)用捷绒。

4.????從頭編譯或者擴(kuò)展現(xiàn)有的 OpenShift 或 Cloud Foundry 平臺(tái)來搭建自己的 PaaS 環(huán)境

優(yōu)點(diǎn):

1.????快速,一致地交付您的應(yīng)用程序

2.????響應(yīng)式部署和擴(kuò)展

3.????在同一硬件上運(yùn)行更多工作負(fù)載

? ? ? ? 總的來說:?Docker是一個(gè)用于開發(fā)贯要,交付和運(yùn)行應(yīng)用程序的開放平臺(tái)暖侨。Docker 使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu)分開,從而可以快速交付軟件崇渗。借助 Docker字逗,您可以與管理應(yīng)用程序相同的方式來管理基礎(chǔ)架構(gòu)。通過利用 Docker 的方法來快速交付宅广,測(cè)試和部署代碼葫掉,您可以大大減少編寫代碼和在生產(chǎn)環(huán)境中運(yùn)行代碼之間的延遲。


Docker安裝與常用命令

1.????在線安裝:??

(若網(wǎng)絡(luò)獲取不到插件庫這里列表centos8更換源,見末尾細(xì)節(jié)總結(jié))

2.????容器使用

docker ps 查看啟用的容器(docker container ls)

docker ps –a 查看所有容器

docker exec –it [容器id]? /bin/bash進(jìn)入容器跟狱,exit不會(huì)停止容器

docker start/stop/restart 容器id 操作容器

docker export [容器id] > ubuntu.tar 導(dǎo)出容器

cat ubuntu.tar | docker import -test/ubuntu:v1 導(dǎo)入容器

docker rm –f [容器id]刪除容器

docker stop $(docker ps -q) 停用全部運(yùn)行中的容器

docker rm $(docker ps -aq) 刪除全部容器

docker run –t –id java:new /bin/bash 后臺(tái)創(chuàng)建啟動(dòng)java:new鏡像(精簡版)

docker run -itd -p 55556:22 -p 9001:80 -p 33306:3306??-v /home/dock/Downloads:/usr/Downloads--name=web1 --privileged=true java_web /sbin/init

這里安裝順序映射了三個(gè)端口ssh,nginx,mysql

privileged=true /sbin/init:使你在容器擁有root權(quán)限,如可以systemctl service等

-v掛載:指定宿主機(jī)和docker容器的目前(--volumes-from也是掛載方式)


3.????鏡像使用

docker search xx 搜索鏡像

docker pull xx 拉去鏡像

docker images 鏡像列表

docker rmi [鏡像名稱] 刪除鏡像


4.????鏡像制作與更新

1.創(chuàng)建一個(gè)新的鏡像

1.????準(zhǔn)備一個(gè)Dockerfile文件,命名一致

2.????寫入命令,如:

FROM centos7?//拉取鏡像

MAINTRAINER xx //指定作者

RUN yum intasll –y nginx //第一步安裝nginx

EXPOSE 80 //第一步開放80端口

3.????當(dāng)前Dockerfile目錄 執(zhí)行 docker build -t name:v1.0


2.????更新成一個(gè)新的鏡像

docker commit-m="jdk8_nginx_mysql5_ssh" -a="zhuhai" edce7b3d8789java_web

-m:描述–a:作者 java_web:鏡像名edce7b3d8789:當(dāng)前容器id


安裝ssh服務(wù)

1.????yum install openssh-server

2.配置密碼

mkdir /var/run/sshd

echo 'root:zhuhai123' | chpasswd

# 這里使用你自己想設(shè)置的用戶名和密碼俭厚,但是一定要記住兽肤!

sed -i 's/PermitRootLogin prohibit-password/PermitRootLoginyes/' /etc/ssh/sshd_config

sed 's@session\s*required\s*pam_loginuid.so@sessionoptional pam_loginuid.so@g' -i /etc/pam.d/sshd

echo "export VISIBLE=now" >> /etc/profile

3.修改配置文件

將PermitRootLogin改為yes

去掉PasswordAuthentication

yes前的#

再重啟ssh

systemctlrestart sshd.service/service sshd restart

4.????驗(yàn)證登錄

sshroot@10.197.237.197 -p 55555

這里的55555 是docker容器的映射的22

注修改ssh密碼echo 'root:passwd' | chpasswd

重啟即可? systemctl restart sshd.service/service sshdrestart

安裝環(huán)境工具jdk,nginx,mysql

方式一:在線安裝yum…

方式二:本地stfp工具拷貝

方式三:從宿主機(jī)拷貝這里

既然學(xué)習(xí)docker這里就介紹第三種:

準(zhǔn)備文件,這里準(zhǔn)備數(shù)據(jù)

1.????把文件遠(yuǎn)程拷貝到宿主機(jī)

scp jdk-8u231-linux-x64.tar.gzroot@10.197.237.197:/opt

2.????把宿主機(jī)數(shù)據(jù)拷貝到docker容器

docker cp jdk-8u231-linux-x64.tar.gz? edce7b3d8789:/opt/

docker cp -a ../temp?edce7b3d8789:/opt/ai-authorize/temp(文件夾遞歸復(fù)制)

edce7b3d8789這里是容器的id

3.????解壓安裝跳過

4.????安裝完成這里把更新后的容器打成鏡像,方便部署環(huán)境的移植

docker commit -m="jdk8_nginx_mysql5_ssh"-a="zhuhai" edce7b3d8789 java_web

-m:描述–a:作者java_web:鏡像名edce7b3d8789:當(dāng)前容器id

5.? ????使用新鏡像創(chuàng)建容器

docker run -itd -p55556:22 -p 9001:80 -p 33306:3306 --name=web1 --privileged=true java_web/sbin/init

這里安裝順序映射了三個(gè)端口ssh,nginx,mysql

privileged=true /sbin/init:使你在容器擁有root權(quán)限,如可以systemctl service等

學(xué)習(xí)網(wǎng)站(https://www.runoob.com/docker/docker-tutorial.html)


問題總結(jié):

1. centos8更換源

? ?cd /etc/yum.repos.d/

??mkdir bak

?? mv * bak

curl -o /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

??yum makecache

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2.???? 網(wǎng)絡(luò)問題

?? ?Docker容器的網(wǎng)絡(luò)模式有四種:

Bridge 橋接模式(默認(rèn),不需要指定):推薦使用

Host 網(wǎng)絡(luò)模式(使用后,不能再指定端口)

Container 網(wǎng)絡(luò)模式

None 網(wǎng)絡(luò)模式

?????? 這里在學(xué)習(xí)時(shí)遇到一個(gè)問題,初期使用了centos7的系統(tǒng),docker安裝后,docker容器ping網(wǎng)橋和宿主機(jī)ping網(wǎng)橋都能通信,但是docker和宿主機(jī)不通信,后來查詢使用一些自定義網(wǎng)橋等等..措施還是無濟(jì)于事,后來嘗試更新了系統(tǒng),就解決了,查詢問題在于原centos7系統(tǒng)安裝的內(nèi)核版本過低無法和docker的網(wǎng)絡(luò)機(jī)制兼容,所以建議使用centos7系統(tǒng),最好使用高內(nèi)核版本.

3. ????服務(wù)器實(shí)際時(shí)間和java服務(wù)時(shí)間相差8小時(shí):

排查問題:

[if !supportLists]1.????[endif]服務(wù)器問題:date –R 若東八區(qū)則沒問題

[if !supportLists]2.????[endif]Mysql服務(wù)器時(shí)區(qū):開發(fā)本地測(cè)試過沒問題select Now();

[if !supportLists]3.????[endif]Jdk時(shí)區(qū):項(xiàng)目中l(wèi)og輸出時(shí)區(qū),如TimeZone.getDefault(),這里是UTC,國際標(biāo)準(zhǔn)時(shí)區(qū),問題所在

修改:項(xiàng)目啟動(dòng)設(shè)置時(shí)區(qū),這里介紹springboot項(xiàng)目

這里我的jar包測(cè)試過只有第三種實(shí)際生效

1套腹、在啟動(dòng)類

@PostConstruct

void setDefaultTimezone() {

?TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

}

2、在application.properties加上

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

spring.jackson.time-zone=Asia/Shanghai

3资铡、在啟動(dòng)類 啟動(dòng)run方法里加上

public static void main(String[] args) {

?TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

SpringApplication.run(BaseMicroServiceApplication.class, args);

}


4. ????nignx代理配置問題

???????listen?????? 80; //頁面輸入的端口映射為服務(wù)的80端口

???????server_name? localhost;

???????location / {??? //頁面不輸入請(qǐng)求實(shí)際地址电禀,代理指向首頁

???????????root?? html;

???????????index? index.html index.htm;

???????}

???????location /api {

?????????proxy_pass http://127.0.0.1:33330/api/;

???????}


? ??????//這里配置/api,區(qū)分時(shí)代理到前端頁面還是后端請(qǐng)求笤休,所以這里加上前綴尖飞,ngnix檢查到/api會(huì)代理去請(qǐng)求配置的容器內(nèi)服務(wù)的33330端口的實(shí)際后臺(tái)請(qǐng)求,這里服務(wù)也許要配置前綴。

5.????掛載數(shù)據(jù)庫數(shù)據(jù)

這里考慮政基,一臺(tái)宿主機(jī)可能運(yùn)行多個(gè)docker容器贞铣,如果數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)在容器中,崩潰則會(huì)出險(xiǎn)數(shù)據(jù)丟失等風(fēng)險(xiǎn)問題沮明,所以這里使用掛載把容器中的數(shù)據(jù)掛載一份到宿主機(jī)中辕坝,這樣就算容器崩潰了,新建容器也可以恢復(fù)數(shù)據(jù)荐健,下面簡單命令:

docker run –v /opt/bak/web_app/mysql/data:/opt/mysql/data…

冒號(hào):前是宿主機(jī)目錄酱畅,后是容器目錄,不存在容器run后會(huì)自動(dòng)創(chuàng)建路徑江场,注意使用絕對(duì)路徑

web_app:是啟動(dòng)是--name指定的創(chuàng)建者纺酸,這里便于崩潰了后根據(jù)name定位該容器的對(duì)應(yīng)數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市址否,隨后出現(xiàn)的幾起案子餐蔬,更是在濱河造成了極大的恐慌,老刑警劉巖佑附,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樊诺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡音同,警方通過查閱死者的電腦和手機(jī)啄骇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘟斜,“玉大人,你說我怎么就攤上這事痪寻÷菥洌” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵橡类,是天一觀的道長蛇尚。 經(jīng)常有香客問我,道長顾画,這世上最難降的妖魔是什么取劫? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮研侣,結(jié)果婚禮上谱邪,老公的妹妹穿的比我還像新娘。我一直安慰自己庶诡,他們只是感情好惦银,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般扯俱。 火紅的嫁衣襯著肌膚如雪书蚪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天迅栅,我揣著相機(jī)與錄音殊校,去河邊找鬼。 笑死读存,一個(gè)胖子當(dāng)著我的面吹牛为流,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宪萄,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼艺谆,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了拜英?” 一聲冷哼從身側(cè)響起静汤,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎居凶,沒想到半個(gè)月后虫给,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侠碧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年抹估,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弄兜。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡药蜻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出替饿,到底是詐尸還是另有隱情语泽,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布视卢,位于F島的核電站踱卵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏据过。R本人自食惡果不足惜惋砂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一饱溢、第九天 我趴在偏房一處隱蔽的房頂上張望四瘫。 院中可真熱鬧,春花似錦躺翻、人聲如沸榨呆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至闯割,卻和暖如春彻消,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宙拉。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工宾尚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谢澈。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓煌贴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锥忿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牛郑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容