網易雲docker課程,視頻1-筆記

目錄

1.docker是容器的管理工具;

2.官方鏡像:

3.同一個鏡像可以啓動多個容器;

4.容器先停掉再移出;

5.在容器中做的修改

6.容器通過鏡像來創建的

7.docker run  -itd 

8.command是容器啓動之後,要執行的命令;

9.給某鏡像指定端口映射,並能夠成功啓動;

10.文件掛載

11.宿主機文件和容器文件進行交互複製

12.容器互聯

13.如何通過Dockerfile定製鏡像;

什麼是Dockerfile?

運行Dockerfile:

14.Dockerfile是分層的


課程:https://study.163.com/course/courseLearn.htm?courseId=1209453812#/learn/video?lessonId=1279505337&courseId=1209453812

1.docker是容器的管理工具;

2.官方鏡像:

docker search --filter "is-official-true" nginx

3.同一個鏡像可以啓動多個容器;

只要創建的時候,容器的名字不一樣就可以;

4.容器先停掉再移出;

5.在容器中做的修改

退出容器(exit)後,停止,重啓容器,修改的內容還會在;若把容器刪除掉,修改內容就會消失;此時就需要docker commit -a "zh" -m "message" 容器名/容器ID 新容器名:版本號

6.容器通過鏡像來創建的

7.docker run  -itd 

-d:表示後臺運行容器,並返回容器ID

-i:表示以交互模式運行容器

-t:爲容器重新分配

8.command是容器啓動之後,要執行的命令;

9.給某鏡像指定端口映射,並能夠成功啓動;

解決的是:客戶端發來的請求與容器交互;

docker run -itd -p 8888:80 zh-nginx:1.0.0

10.文件掛載

docker run -itd --name=nginx -p 8888:80 -v /Users/liming/index.html:/usr/share/nginx/html/index.html nginx

將宿主機的文件掛載到容器中;在宿主機中進行文件的修改,容器中也會跟着修改;

將宿主機上的程序文件掛載到容器中,調用容器裏的服務來運行;

解決的是:宿主機與容器間的交互;宿主機文件改動還是容器上的文件改動均會互相影響;

注意:宿主機和容器中的文件均需要填寫全路徑;

11.宿主機文件和容器文件進行交互複製

docker cp ...

12.容器互聯

解決的是:容器間的交互

-e是:容器啓動時會讀取參數進行操作;

MySQL修改root密碼:

alter user 'root'@'%' identified with mysql_native_password by '123456';

注意:mysql_native_password是數據庫管理插件

docker run -itd --name=mysql -p 3306:3306 -v /Users/liming/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.27

用MySQL客戶端sequel pro即可連上;

啓動PHP容器,並關聯MySQL:

docker run -tid --name=php --link mysql:mysql -v /Users/fdfd/index.php:/index.php php

--link 被關聯的容器:被關聯的容器別名;

進入php容器:執行php腳本,發現少driver,在容器中進行安裝

安裝php_mysql 至容器中,執行:

docker-php-ext-install pdo_mysql

PHP的腳本訪問MySQL時,寫容器關聯的別名;因爲IP地址不是固定的;

php腳本:

<?php
$pdo = new \PDO('mysql:host=mysql;dbname=test','root','lihuan1114');
foreach($pdo->query('SELECT * from user') as $row){
print_r($row);
}

13.如何通過Dockerfile定製鏡像;

自制鏡像;13之上都是下載docker上的鏡像;

什麼是Dockerfile?

Dockerfile:就是名爲Dockerfile的文件,文件中包含一些Linux命令;docker通過讀取Dockerfile文件中的命令來組件鏡像;

Dockerfile文件中分爲4部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啓動時執行命令;

運行Dockerfile:

注意:tag_name可以不指定,即 docker build -t image_name .    ,則默認生成lastest鏡像;

docker build -t image_name:tag_name .

也可指定-f 參數來指定Dockerfile 文件位置;

docker build -f /path/Dockerfile .

命令詳解:

FROM :指定基礎鏡像,必須是第一個命令;

MAINTAINER:可指定維護者信息,比如寫自己的名字;

RUN:構建鏡像時,執行的命令;(構建鏡像時,docker在解析Dockerfile文件時)

ADD:將本地文件添加到容器中,tar類型文件會自動解壓(網絡壓縮資源不會被解壓),可以訪問網絡資源,類似wget

COPY:功能與ADD類似,但是是不能自動解壓文件,也不能訪問網絡資源;

CMD:構建容器後調用,也就是容器啓動時,纔可以進行調用;(啓動容器中的進程)(鏡像構建完了,通過鏡像啓動容器時)

ENTRYPOINT:配置容器,使其可執行化,配置CMD可省去“application”,只使用參數;(docker run 命令後的啓動完鏡像,需執行的命令,不會把ENTRYPOINT設置的命令覆蓋掉,而會把CMD設置的啓動後執行的命令覆蓋掉;另Dockerfile中只能允許有一個ENTRYPOINT命令,若ENTRYPOINT命令多的話,後面會覆蓋前面的命令,即只會執行後面的ENTRYPOINT命令)

LABEL:用於給鏡像添加元數據;(給鏡像添加標識,比如版本號,描述等信息)

ENV:設置環境變量,即Linux中的環境變量;

EXPOST:指定於外界交互的端口;(即,容器對外暴露的端口)

VOLUME:用於指定持久化目錄;(即進行文件目錄的掛載)

WORKDIR:工作目錄,類似於cd命令;(WORKDIR /path/to/workdir《==》RUN cd /usr/local/)

USER:指定運行容器時的用戶名或UID,後續的RUN也會使用指定用戶;若運行時,通過root 用戶運行,即不用設置;

ARG:用於指定傳遞給構建運行時的變量;即,dockerfile中定義語法變量;

ONBUILD:用於設置鏡像觸發器;即當所構建的鏡像被用作其他鏡像的基礎鏡像,該鏡像中的觸發器將會被鑰觸發;

14.Dockerfile是分層的

運行Dockerfile文件時,可以看出來,標識爲:Step 1/9;所以Dockerfile是分層的,不要一層寫成多層;比如寫了很多個RUN命令,不建議;

Dockerfile文件中要有層級,保持每一層的層級,比如RUN命令要執行多個,可以使用&&\來連接多行命令;

若之前執行過Dockerfile則執行時,每層下面會顯示using cache,第一次執行 的時候,把每層進行了緩存;

FROM的內容,若本地有會直接用,若沒有則會下載,不需提前準備基礎鏡像;

執行完Dockerfile文件後,就會生成image;

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章