Docker簡單入門

Docker在我剛出來實(shí)習(xí)的時(shí)候就有接觸到妄迁,那會(huì)只是將公司里制作好的包去客戶那邊進(jìn)行簡單部署瞎惫,只知道Docker是個(gè)容器可以在里面安裝運(yùn)行軟件诀豁,其他一概不知。今天學(xué)習(xí)的時(shí)候剛好遇到Docker的內(nèi)容局扶,特此記錄一下。

為什么有Docker

不使用Docker時(shí)叁扫,開發(fā)人員交付的是jar(或者war包)包三妈,交付完成之后,由運(yùn)維人員進(jìn)行部署莫绣,運(yùn)維人員還需要部署應(yīng)用jar所依賴的環(huán)境(mysql畴蒲、mq等)。這對于跨環(huán)境非常不友好对室,可能出現(xiàn)在我機(jī)器上是好的模燥,在你機(jī)器上卻又問題咖祭,在Linux上是可以的,在windows上卻不行蔫骂。

使用Docker之后么翰,開發(fā)人員交付的是Docker的鏡像,而Docker鏡像中除了有應(yīng)用程序之外還有應(yīng)用程序依賴的環(huán)境辽旋。這樣其他人拿到鏡像之后硬鞍,就可以在任何地方(需要支持Docker)一鍵將應(yīng)用運(yùn)行起來。

Docker是什么

Docker 是一個(gè)開源的應(yīng)用容器引擎戴已。它支持將軟件編譯成一個(gè)鏡像固该;然后在鏡像中各種軟件做好配置,將鏡像發(fā)布出去糖儡,其他使用者可以直接使用這個(gè)鏡像伐坏;

為了更加形象的說明,我們將Docker和Windows鏡像做個(gè)類比握联。我們一般自己安裝系統(tǒng)使用的多是鏡像文件(.gho或.iso)桦沉,安裝完畢我們會(huì)發(fā)現(xiàn)系統(tǒng)中已經(jīng)幫我們裝好了一些常用的軟件及一些配置。這是在制作鏡像文件的時(shí)候金闽,制作者將這些常用的軟件制作進(jìn)去了纯露,而我們對鏡像文件進(jìn)行還原(安裝操作系統(tǒng))時(shí),這些軟件就會(huì)包含在內(nèi)代芜。Docker中的鏡像和windows鏡像系統(tǒng)的常用軟件類似埠褪。


Docker和windows鏡像類比

Docker中可以包含多個(gè)鏡像,鏡像一旦運(yùn)行起來就變成了容器挤庇,一個(gè)鏡像可以運(yùn)行多次對應(yīng)多個(gè)容器钞速。這里可以看到,鏡像類似于編程語言中類的概念嫡秕,而容器類似于對象渴语。

核心概念

  • Docker客戶端(Client):Docker 客戶端通過命令行或者其他工具使用 Docker API 和Docker主機(jī)進(jìn)行交互。
  • Docker主機(jī)(Host):安裝了Docker程序的機(jī)器昆咽。
  • Docker倉庫(Registry):用來保存鏡像驾凶,類似于代碼倉庫。
  • Docker鏡像(Images):是用于創(chuàng)建 Docker 容器的模板掷酗,放在Docker倉庫當(dāng)中调违。
  • Docker容器(Container):獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用。
    Docker架構(gòu)圖

    Docker倉庫分為公共的和私人的汇在,公共的Docker倉庫可以訪問https://hub.docker.com進(jìn)行查看翰萨,類似于Maven的公共倉庫。

Docker安裝

推薦使用Centos糕殉,可以直接使用yum亩鬼,安裝起來很方便殖告。

1、檢查內(nèi)核版本雳锋,必須是3.10及以上
uname -r
2黄绩、安裝docker
yum install docker
3、輸入y確認(rèn)安裝
4玷过、啟動(dòng)docker
[root@localhost ~]# service start docker
[root@localhost ~]# docker -v
Docker version 1.13.1, build 94f4240/1.13.1
5爽丹、開機(jī)啟動(dòng)docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service 
to /usr/lib/systemd/system/docker.service.
6、停止docker
service stop docker

啟動(dòng)Docker服務(wù)

[root@localhost ~]# service docker start  --或者systemctl docker start

關(guān)閉Docker服務(wù)

[root@localhost ~]# service docker stop  --或者systemctl docker stop

使用Docker的步驟:
1)辛蚊、安裝Docker
2)粤蝎、去Docker倉庫找到這個(gè)軟件對應(yīng)的鏡像;
3)袋马、使用Docker運(yùn)行這個(gè)鏡像初澎,這個(gè)鏡像就會(huì)生成一個(gè)Docker容器;
4)虑凛、對容器的啟動(dòng)停止就是對軟件的啟動(dòng)停止碑宴;

HelloWorld

安裝完成之后,我們來運(yùn)行一下Docker提供的hello world

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

docker 鏡像運(yùn)行流程圖

Docker常見操作

1)桑谍、幫助命令

命令 說明
docker version 顯示docker的版本信息
docker info 顯示docker的系統(tǒng)信息延柠,包括鏡像和容器的數(shù)量
docker 命令 --help 幫助命令

2)、鏡像操作

操作 命令 說明
檢索 docker search 關(guān)鍵字 eg:docker search redis 我們經(jīng)常去docker hub上檢索鏡像的詳細(xì)信息锣披,如鏡像的TAG贞间。
拉取 docker pull 鏡像名:tag :tag是可選的,tag表示標(biāo)簽盈罐,多為軟件的版本榜跌,默認(rèn)是latest
列表 docker images 查看所有本地鏡像
刪除 docker rmi image-id 刪除指定的本地鏡像
構(gòu)建 docker build 構(gòu)建鏡像,通常情況下都是通過Dockerfile文件來構(gòu)建鏡像

2)盅粪、容器操作

1、搜索鏡像
[root@localhost ~]# docker search tomcat
2悄蕾、拉取鏡像
[root@localhost ~]# docker pull tomcat
3票顾、根據(jù)鏡像啟動(dòng)容器
docker run --name mytomcat -d tomcat:latest
4、docker ps  
查看運(yùn)行中的容器
5帆调、 停止運(yùn)行中的容器
docker stop  容器的id
6奠骄、查看所有的容器
docker ps -a
7、啟動(dòng)容器
docker start 容器id
8番刊、刪除一個(gè)容器
 docker rm 容器id
9含鳞、啟動(dòng)一個(gè)做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
-d:后臺(tái)運(yùn)行
-p: 將主機(jī)的端口映射到容器的一個(gè)端口    主機(jī)端口:容器內(nèi)部的端口

10、查看容器的日志
docker logs container-name/container-id

更多命令參看
https://docs.docker.com/engine/reference/commandline/docker/
可以參考每一個(gè)鏡像的文檔

注意芹务,在Docker中啟動(dòng)一個(gè)應(yīng)用時(shí)蝉绷,一定要做端口映射鸭廷。不然客戶端是無法訪問到主機(jī)中的Docker容器。

Docker中安裝軟件

Docker 安裝 Nginx

Docker中安裝MySQL

  1. 查找MySQL熔吗,然后拉取鏡像
docker search mysql
docker pull mysql

可以直接跳過步驟1辆床,從步驟2開始執(zhí)行。當(dāng)運(yùn)行步驟2時(shí)發(fā)現(xiàn)本地沒有回去遠(yuǎn)程下載對應(yīng)的鏡像桅狠。

  1. 創(chuàng)建容器
docker run -d -p 3310:3306 -v /Users/zhangguicong/volumes/mysql/conf:/etc/mysql/conf.d -v /Users/zhangguicong/volumes/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

–name:給新創(chuàng)建的容器命名讼载,此處命名為mysql01
-e:配置信息,此處配置mysql的root用戶的登陸密碼
-p:端口映射中跌,此處映射主機(jī)3307端口到Docker容器mysql1的3306端口
-d:后臺(tái)運(yùn)行
-v:  卷掛載

3.如果想要外面可以訪問Docker中的MySQL咨堤,需要先進(jìn)行授權(quán)。

3.1 先進(jìn)入容器的命令模式
docker exec -it mysql1 /usr/bin/bash
3.2 然后登錄MySQL進(jìn)行授權(quán)操作
mysql -uroot -p
grant all privileges on *.* to root@"%" identified by "123456" with grant option;

Docker 安裝 MySQL
Docker 安裝 Tomcat
Docker 安裝 Redis

Dockerfile

Dockerfile是一個(gè)普通的文本文件漩符,里面包含了許多可以在命令行接口上執(zhí)行的用來構(gòu)建鏡像的相關(guān)指令一喘,我們通過docker build指令就可以讀取Dockerfile文件中的指令并執(zhí)行自動(dòng)化鏡像構(gòu)建。
一般情況下陨仅,Dockerfile文件可分為四個(gè)部分:基礎(chǔ)鏡像信息津滞、維護(hù)者信息、鏡像操作指令和容器啟動(dòng)時(shí)的執(zhí)行指令灼伤。

Dockerfile常用指令

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末触徐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子狐赡,更是在濱河造成了極大的恐慌撞鹉,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颖侄,死亡現(xiàn)場離奇詭異鸟雏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)览祖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門孝鹊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人展蒂,你說我怎么就攤上這事又活。” “怎么了锰悼?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵柳骄,是天一觀的道長。 經(jīng)常有香客問我箕般,道長耐薯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮曲初,結(jié)果婚禮上体谒,老公的妹妹穿的比我還像新娘。我一直安慰自己复斥,他們只是感情好营密,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著目锭,像睡著了一般评汰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痢虹,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天被去,我揣著相機(jī)與錄音,去河邊找鬼奖唯。 笑死惨缆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丰捷。 我是一名探鬼主播坯墨,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼病往!你這毒婦竟也來了捣染?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤停巷,失蹤者是張志新(化名)和其女友劉穎耍攘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畔勤,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蕾各,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庆揪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片式曲。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缸榛,靈堂內(nèi)的尸體忽然破棺而出检访,到底是詐尸還是另有隱情,我是刑警寧澤仔掸,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站医清,受9級(jí)特大地震影響起暮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一负懦、第九天 我趴在偏房一處隱蔽的房頂上張望筒捺。 院中可真熱鬧,春花似錦纸厉、人聲如沸系吭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肯尺。三九已至,卻和暖如春躯枢,著一層夾襖步出監(jiān)牢的瞬間则吟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國打工锄蹂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氓仲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓得糜,卻偏偏與公主長得像敬扛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子朝抖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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

  • docker 部署 標(biāo)簽(空格分隔): docker 系統(tǒng)centos6.8 mini docker 官方文檔ht...
    Lisong閱讀 676評(píng)論 0 1
  • 《Docker從入門到實(shí)踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,389評(píng)論 1 39
  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件啥箭?Google Compute Engi...
    ahohoho閱讀 15,545評(píng)論 15 147
  • 走在路燈下的影子 映射著黑黑的陰暗 沒有什么的不可以和開始的 燈光照亮了他的身影 但也就是那么的照亮而已 他沒有去...
    瀏小煚拓閱讀 569評(píng)論 0 0
  • 尋夢環(huán)游記,2017年12月9日槽棍,人終極的死亡捉蚤,是活著的人徹底把他遺忘的時(shí)候…
    向日貓葵閱讀 176評(píng)論 0 1