Docker 安裝

Docker 介紹和安裝

Docker 安裝:

1.windows安裝:

    1.安裝 docker toolbox
    2.docker toolbox包含:
        Docker CLI:    客戶端,用來運(yùn)行docker引擎鏡像和容器
        Docker Machine:可以讓你在windows的命令行中運(yùn)行docker引擎命令
        DOcker Compose:用來運(yùn)行docker-compose命令
        Kitematic     :這是Docker的GUI版本
        DOcker QuickStart shell:這是一個(gè)已經(jīng)配置好的Docker命令行環(huán)境
        Oracle VM Virtualbox:虛擬機(jī)
    3.下載客戶端
    
    docker tools:    
        http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

    docker for Windows
        https://www.cnblogs.com/wyt007/p/10656813.html
        https://blog.csdn.net/qq_16525279/article/details/98970008

2.Mac OS安裝:

1.Homebrew 安裝,安裝命令: brew cask install docker
2.下載客戶端:

3.CentOS安裝:

1.Centos7以上要求系統(tǒng)為:64位,內(nèi)核版本高于 3.10
    2.Centos6.5以上要求系統(tǒng):64位,內(nèi)核版本高于 2.6.32

    3.可以通過 yum 安裝:

    //安裝相關(guān)系統(tǒng)工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    //添加 yum 源
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    //更新 yum 緩存
    sudo yum makecache fast 

    //安裝
    sudo yum -y install docker-ce

    //啟動(dòng)
    sudo systemctl start docker

    // 查看 docker 操作命令
    docker

4.Ubuntu安裝

官網(wǎng)地址: https://docs.docker.com/install/linux/docker-ce/ubuntu/

0. 卸載舊版本
sudo apt-get remove docker docker-engine docker.io containerd runc


1. 更新apt:
sudo apt-get update

2. 添加證書安裝包以允許apt通過HTTPS:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

3. 添加Docker的官方GPG密鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


4. 添加倉庫筐带。
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"


5. 安裝docker ce
sudo apt-get install docker-ce docker-ce-cli containerd.io


6. 測(cè)試
sudo docker run hello-world


7. 添加當(dāng)前用戶到 docker 用戶組
sudo usermod -aG docker  pyvip 




Docker概念

什么是沙箱機(jī)制?

1.沙箱是一個(gè)虛擬系統(tǒng)程序,沙箱提供的環(huán)境相對(duì)于每一個(gè)運(yùn)行程序都是獨(dú)立的虹钮,而且不會(huì)對(duì)現(xiàn)有的系統(tǒng)產(chǎn)生影響

2.沙箱具有非常良好的獨(dú)立性诉儒,隔離性反症,所以能夠搭建一些具有高風(fēng)險(xiǎn)的軟件進(jìn)行測(cè)試

3.在沙箱里面運(yùn)行病毒可以說是 安全的操作

沙箱 沙箱 沙箱

Docker是什么栓拜?

Docker 是一個(gè)開源的應(yīng)用容器引擎,基于GO語音并遵從Apache2.0協(xié)議開源

DOcker 可以讓開發(fā)者打包他們應(yīng)用以及依賴包到一個(gè)輕量級(jí)狼纬、可移植性的 容器 中晋柱,讓后發(fā)布到任何流行的 Linux機(jī)器上砸讳,也可以實(shí)現(xiàn)虛擬化

容器: 是完全使用 沙箱機(jī)制琢融,互相之間不會(huì)有任何接口(類似IPhone的 app),更重要的是 容器性能開銷極低

容器-虛擬機(jī):

容器 容器 容器

Docker容器優(yōu)勢(shì):

1.啟動(dòng)快   2.占用資源少

鏡像:

1.通過鏡像創(chuàng)建容器    2.光盤、裝系統(tǒng)     3.進(jìn)行里面的內(nèi)容

倉庫:

鏡像的集中存放地

基本操作-鏡像

1.從倉庫獲取鏡像

    搜索鏡像: docker search image_name
    搜索結(jié)果過濾: 
    是否官方: docker search --filter "is-official=true" image_name
    是否自動(dòng)化構(gòu)建: docker search --filter "is-automated=true" image_name
    大于多少顆星: docker search --filter stars=3 image_name
    下載鏡像: docker search pull image_name
2.本地鏡像查看: docker images
3.本地鏡像刪除: docker rmi image_name

基本操作-容器

1.創(chuàng)建容器 : docker run -itd --name=container_name container
    -i : 表示以交互模式運(yùn)行容器
    -d : 表示后臺(tái)運(yùn)行容器,并返回容器ID
    -t : 為容器重新分配一個(gè)偽輸入終端
    --name: 為容器指定名稱
    
2.查看容器(運(yùn)行中的):docker ps
3.查看容器(包括已停止的):docker pa -a
4.停止容器:docker stop container_name | container_id
5.重啟容器:docker restart container_name | container_id
6.刪除容器:docker rm container_name | container_id

容器的修改和保持

1.進(jìn)入容器 : docker exec -it container_name | container_id /bin/bash
2.退出容器 : exit
3.提交修改(保存) :
      docker commit -a "author" -m "message" container_id | container_name                new_image_name:tag_name

參數(shù)說明:
    -a:參數(shù)可選,用于指定作者,可以寫你的名字
    -m:參數(shù)可選,提交信息,可以說一下你做了哪些修改
    container_id:該參數(shù)為被修改的容器ID
    new_image_name:此為新的鏡像的名字,可自定義
    tag_name:此為新鏡像的標(biāo)簽,可不寫,不寫時(shí)標(biāo)簽?zāi)J(rèn)為latest

容器操作進(jìn)階

端口映射:

docker run -itd -p 宿主機(jī)端口號(hào):容器端口號(hào)
-----------------------------------------
|                               宿主機(jī)   |
|           | ----- |                   |       
80 <-----> 80 容器   |                   |
|           | ----- |                   |
|                                       |
-----------------------------------------

文件掛載:

docker run -itd -p 宿主機(jī)端口號(hào):容器端口號(hào) -v /宿主機(jī)/文件目錄/文件名:/容器/目錄/文件名 container_name

例如:
    docker run -itd -p 宿主機(jī)端口號(hào):容器端口號(hào) -v 指定本地目錄的文件路徑:被掛載的文件路徑             container_name  

將容器的文件復(fù)制到本地:

docker cp 容器名:/容器目錄/文件名 /宿主機(jī)目錄/文件名

將本地的文件復(fù)制到容器:

docker cp /宿主機(jī)目錄/文件名  容器名:/容器目錄/文件名

容器互聯(lián):

docker run -itd --name=container_name --link 要關(guān)聯(lián)的容器名字:容器在被關(guān)聯(lián)的容器中的別名 -v /宿主機(jī)/文件目錄/文件名:/容器/目錄/文件名 container_name

修改 mysql 密碼:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

Dockerfile

什么是 Dockerfile

Dockerfile 就是名為 Dockerfile 的文件,文件中包含一些 Linux 命令, Docker 通過讀取文件中的命令來組建鏡像

Dockerfile 一般分為四部分:

基礎(chǔ)鏡像信息簿寂、維護(hù)者信息漾抬、鏡像操作指令、容器啟東市執(zhí)行指令, "#" 為Dockerfile 中的注釋;

運(yùn)行Dockerfile

運(yùn)行Dockerfile:   docker build -t image_name:tag_name .

也可以通過 -f 參數(shù)來指定 Dockerfile 文件位置: docker build -f /path/Dockerfile

命令詳解:

FORM:指定基礎(chǔ)鏡像,必須為第一個(gè)命令

格式:
    FROM <image>
    FROM <image>:<tag>
    FROM <image>@<digest>
    
實(shí)例:
    FROM centos:7.0

MAINTAINER:維護(hù)者信息

格式:
    MAINTAINER <name>
    
實(shí)例:
    MAINTAINER hakcers

RUN:構(gòu)建鏡像時(shí)執(zhí)行的命令:

格式:
    RUN <command>*exec執(zhí)行*
格式:
    RUN ["executable","param1","param2"]
    
實(shí)例:
    RUM ["/bin/executable","param1","param2"]
    RUM yum install nginx

ADD:將本地文件添加到容器中,tar 類型文件會(huì)自動(dòng)解壓(網(wǎng)絡(luò)壓縮資源不會(huì)別解壓),可以房屋網(wǎng)絡(luò)資源,類似wget

格式:
    ADD <src>... <dest>
    ADD ["<src>",... "<dest>"] 用于支持包含空格的路徑
    
實(shí)例:
    ADD test* /mydir/     # 添加所有以 "test" 開頭的文件
    ADD tes?.txt /mydir/  # ? 替代一個(gè)單字符,例如:"test.txt"
    ADD test relativeDir/ # 添加 "test" 到 WORKDIR/
    
relativeDir
    ADD test /absoluteDir/ # 添加 "test" 到 /absoluteDir
注:第一個(gè)參數(shù)指 宿主機(jī)文件路徑,第二個(gè)參數(shù)指容器路徑 

COPY:功能類似 ADD, 但是 不會(huì)自動(dòng)解壓文件,也不能訪問網(wǎng)絡(luò)資源

CMD:構(gòu)建容器后調(diào)用,也就是在容器中啟動(dòng)時(shí)才進(jìn)行調(diào)用

格式:
    CMD ["executable","param1","param2" ] (執(zhí)行可執(zhí)行文件,優(yōu)秀)
    CMD ["param1","param2"] (設(shè)置ENTRYPOINT,則直接調(diào)用 ENTRYPOINT添加參數(shù))
    CMD command param1 param2 (執(zhí)行shell內(nèi)部命令)
實(shí)例:
    CMD echo "This is a test." | wc -
    CMD ["/usr/bin/wc",--help]
    
注:
    CMD 不同于RUN,CMD用于指定在容器啟動(dòng)時(shí)所要的執(zhí)行命令,而RUN用于指定鏡像構(gòu)建時(shí)所要的執(zhí)行命令

ENTRYPOINT 配置容器,使其可執(zhí)行化常遂。配合CMD 可省去 "application",只使用參數(shù)

格式:
    ENTRYPOINT ["executable","param1","param2"] (可執(zhí)行文件,優(yōu)秀)
    ENTRYPOINT command param1 param2 (shell內(nèi)部命令)
    
實(shí)例:
    FROM Ubuntu
    ENTRYPOINT ["top","-b"]
注:
    ENTRYPOINT與CMD非常類似,不同的是通過docker run 執(zhí)行的命令不會(huì)覆蓋ENTRYPOINT,而 docker run 命令中指定的任何參數(shù),都會(huì)被當(dāng)做參數(shù)再次傳遞給 ENTRYPOINT纳令。Dockerfile 中只允許有一個(gè)ENTRYPOINT命令,多指定時(shí)會(huì)覆蓋前面的設(shè)置,而只執(zhí)行最后的ENTRYPOINT指令
    docker run -itd --name=nginx nginx echo 'hello word'

LABEL:用于為鏡像添加元數(shù)據(jù)

格式:
    LABEL <key>=<value> <key>=<value> <key>=<value> ...
    
實(shí)例:
    LABEL version="1.0" description="這是一個(gè)nginx鏡像"
    
注:
    使用LABEL指定元數(shù)據(jù)時(shí),一條LABEL指定可以 指定 一 或 多條元數(shù)據(jù),指定多條元數(shù)據(jù)時(shí)不同元數(shù)據(jù)之間通過空格分隔,推薦將所有的元數(shù)據(jù) 通過一條LABEL指令指定,以免生產(chǎn)過多的中間鏡像

ENV: 設(shè)置環(huán)境變量

格式:
    ENV <key><value> #<key> 之后的所有內(nèi)容均被視為其<value>的組成部分,因此,一次只能設(shè)置一個(gè)變量
    ENV <key><value>... #可以設(shè)置多個(gè)變量,每個(gè)變量為一個(gè)"<key>"=<value>的鍵值對(duì),如果<key>中包含空格,可以使用\來進(jìn)行轉(zhuǎn)義,也可以通過""來進(jìn)行標(biāo)示;另外,反斜線也可以用于續(xù)行
    
實(shí)例:
    ENV myName Join Done
    ENV myDOG REx The Dog
    ENV myCat=fluffy

EXPOSE:指定外界交互的端口

格式:
    EXPOSE <port> [<port>...]
實(shí)例:
    EXPOSE 80 443
    EXPOSE 8080
注:
    EXPOSE 并不會(huì)讓容器的端口訪問到主機(jī),要使其可訪問,需要在 docker run 運(yùn)行容器時(shí)通過 -p 來發(fā)不這些端口,或通過 -p 參數(shù)來發(fā)布 EXPOSE 導(dǎo)出所有的端口

VOLUME:用于指定持久化目錄

格式:
    VOLLME ["/path/to/dir"]
實(shí)例:
    VOLLME ["/data"]
    VOLLME ["/var/www","/var/log/apache2","/etc/apache2"]
注:
    一個(gè)卷可以存在一個(gè)或多個(gè)容器的指定目錄,該目錄可以繞過聯(lián)合文件系統(tǒng),并具有以下功能:
    1.卷可容器間共享和重用
    2.容器并不一定和其他容器共享卷
    3.修改卷后會(huì)立即生效
    4.對(duì)卷的修改不會(huì)對(duì)鏡像產(chǎn)生影響
    5.卷會(huì)一直存在,知道沒有任何容器在使用它

WORKDIR:工作目錄,類似 cd 命令

格式:
    WORKDIR /usr/local (這時(shí)工作目錄為 /usr/local/)
    WORKDIR nginx (這時(shí)工作目錄為 /usr/local/nginx)
    WORKDIR nginx (這是工作目錄為 /usr/local/nginx/sbin)
注:
    通過WORKDIR 設(shè)置工作目錄后,Dockerfile中其后的RUN、CMD克胳、ENTRYPOINT泊碑、ADD、COPY等 命令都會(huì)在該目錄下執(zhí)行毯欣。在使用 dockerrun 運(yùn)行容器時(shí),可以通過 -w 參數(shù)覆蓋構(gòu)建時(shí)的工作目錄

USER:指定運(yùn)行容器時(shí)的用戶名或者 UID馒过,后續(xù)的RUN也會(huì)使用指定的用戶,使用USER指定用戶時(shí),可以使用用戶名酗钞、UID或 GID腹忽,或 兩者的組合来累。當(dāng)服務(wù)不需要管理員權(quán)限時(shí),可以通過該命令指定運(yùn)行用戶窘奏。并且可以在之前創(chuàng)建所有的用戶

格式:
    USER user
    USER user:group
    USER uid
    USER uid:gid
    USER user:gid
    USER uid:group
實(shí)例:
    USER www
注:
    使用 USER 指定用戶后嘹锁,Dockerfile 中其后的命令 RUN、CMD着裹、ENTRYPOINT 都將使用該用戶领猾。鏡像構(gòu)建完成后,通過docker run 運(yùn)行容器時(shí),可以通過 -u 參數(shù)來覆蓋指定用戶

ARG:用于指定傳遞給構(gòu)建運(yùn)行時(shí)的變量

格式:
    ARG <name>[=<default value]
實(shí)例:
    ARG site
    ARG build_user=www

ONBUILD:用于設(shè)置鏡像觸發(fā)器

格式:
    ONBUILD [INSTRUCTION]
實(shí)例:
    ONBUILD ADD . /app/src
    ONBUILD RUN /usr/local/bin/python-build --dir /app/src
    
注:
    當(dāng)所構(gòu)建的鏡像被用做其它鏡像的基礎(chǔ)鏡像,該鏡像中的觸發(fā)器將會(huì)被觸發(fā)

搭建 PHP 開發(fā)環(huán)境

1.下載 nginx 骇扇、php:7.0-fpm摔竿、mysql 鏡像

2.啟動(dòng) mysql 容器:

docker run -itd -v /宿主機(jī)/目錄/mysql:/var/lib/mysql -p 33066:3306 --name=mysql -e MYSQL_ROOT_PASSWORD mpassword mysql


說明: 
    -v: 表示掛載 
    -e: 表示往后 添加參數(shù)

3.啟動(dòng) php 容器:

docker run -itd --link mysql:mysql -v /宿主機(jī)/代碼/目錄/:var/www/html --name=php php

4.啟動(dòng) nginx 容器:

docker run -itd -p 宿主機(jī)端口號(hào):容器端口號(hào) -v /宿主機(jī)/代碼/目錄/:/var/www/html --link php:php --name=nginx nginx

最后編輯于
?著作權(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)容