摘要:時間年月日星期六說明本文部分內容均來自慕課網。必填用于執行命令,當執行完畢后,將產生一個新的文件層。可選指定此鏡像啟動時默認執行命令。可選用于指定需要暴露的網絡端口號。可選向鏡像中掛載一個卷組。
時間:2017年09月16日星期六
說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com
教學源碼:無
學習源碼:無
Docker入門教程
Docker簡介:什么是Docker 鏡像與容器 容器存儲 Registry 多容器app
面向用戶
對docker感興趣的開發、測試、運維
預備知識
linux命令行 bash shell腳本1-2 Docker介紹
什么是Docker
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中, 然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。 容器是完全使用沙箱機制,相互之間不會有任何接口。
與現有技術進行類比
可以粗糙地理解為輕量級的虛擬機 開掛的chroot(chroot:對應用程序作了文件系統的分離)
Docker與虛擬機
1-3 Mac安裝學習筆記
進入docker官網:www.docker.com 下載docker安裝包:Docker.dmg 打開docker open Docker.dmg 或雙擊Docker.dmg 將Docker拖到Applications里面 驗證安裝 docker info1-4 Linux安裝
學習筆記
安裝docker本身 sudo wget -qO- https://get.docker.com/ | sh 允許非root用戶運行docker sudo usermod -aG docker zc 驗證安裝 docker info1-5 Windows安裝
學習筆記
官網地址:https://www.docker.com/ 下載安裝包:https://www.docker.com/docker-windows 執行安裝包:Docker for Windows Installer.exe第二章:Docker架構 2-1 架構介紹
Docker架構
學習筆記
docker run ubuntu echo hello docker 使用ubuntu鏡像,在里面運行了echo hello docker這個命令,輸出就是hello docker docker run nginx docker images 查看本地鏡像 docker run -p 8080:80 -d daocloud.io/nginx 運行daocloud.io/nginx鏡像 -p 端口映射,將nginx的80端口映射到本地的8080端口 -d 使用守護進程啟動 docker ps 查看當前正在運行的容器 docker cp index.html 容器ID:容器內部文件路徑 docker cp index.html 17asdasdasa://usr/share/nginx/html 將index.html文件拷貝到容器ID為17asdasdasa容器內部,路徑為//usr/share/nginx/html docker stop 容器ID 停止指定容器 docker commit -m "fun" 容器ID nginx-fun 保存容器為鏡像,鏡像名為nginx-fun docker rmi 鏡像ID 刪除指定鏡像 docker ps -a 查看所有容器(正在運行和停止運行) docker rm 容器ID 刪除指定容器 docker pull 獲取鏡像 docker build 創建鏡像 docker images 列出鏡像 docker run 運行鏡像為容器 docker ps 列出正在運行的容器 docker rm 刪除容器 docker rmi 刪除鏡像 docker cp 在主機和容器之間拷貝文件 docker commit 保存改動后的容器為新的image第三章:Dockerfile 3-1 Dockerfile介紹
學習筆記
第一個Dockerfile FROM alpine:latest MAINTAINER zc CMD echo "hello docker" // 依賴于基礎鏡像alpine:latest // 標識鏡像信息 // 需要運行的命令 touch Dockerfile 產生一個Dockerfile文件 vim Dockerfile 編輯Dockerfile文件 docker build -t hello_docker . 構建docker鏡像,-t參數指定鏡像名稱,最后面的點(.)表示構建鏡像文件的路徑 docker images docker run hello_docker3-2 Dockerfile實戰
學習筆記
第二個Dockerfile FROM ubuntu MAINTAINER zc RUN sed -i "s/archive.ubuntu.com/mirrors.ustc.edu.cn/g" /etc/apt/sources.list RUN apt-get update RUN apt-get install -y nginx COPY index.html /var/www/html ENTRYPOINT ["/usr/sbin/nginx","-g","deamon off;"] EXPOSE 80 // 依賴于基礎鏡像ubuntu // 標識鏡像信息 // 運行ubuntu命令,新增一個軟件倉庫鏡像地址 // 運行ubuntu命令,更新軟件 // 運行ubuntu命令,安裝nginx // 拷貝本地文件到鏡像內部 // 在鏡像中默認啟動nginx服務 // 鏡像暴露服務的端口 mkdir dockerfile2 cd dockerfile2 touch Dockerfile vim Dockerfile touch index.html vim index.html 今天是周末! docker build -t zc/hello-nginx . docker run -d -p 80:80 zc/hello-nginx curl http://localhost 使用curl進行測試
Dockerfile語法
FROM:指明基礎鏡像名稱。必填 RUN:用于執行命令,當RUN執行完畢后,將產生一個新的文件層。可選 ADD:向鏡像添加新文件或者新目錄。可選 COPY:從主機向鏡像復制文件。可選 CMD:指定此鏡像啟動時默認執行命令。可選 EXPOSE:用于指定需要暴露的網絡端口號。可選 WORKDIR:設定此鏡像后續操作的默認工作目錄。可選 MAINTAINER:可用于提供作者、版本及氣他備注信息。可選 ENV:用于在鏡像中添加環境變量。可選 ENTRYPOINT:在鏡像中設定默認執行的二進制程序。可選 USER:在鏡像構建過程中,生成或者切換到另一個用戶。可選 VOLUME:向鏡像中掛載一個卷組。可選3-3 鏡像分層
鏡像分層
Dockerfile中的每一行都產生一個新層 FROM alpine:latest 4dffsd5454wq MAINTAINER zc fbdfasdfasfd554 CMD echo "hello docker" 3df545dfad4a第四章:Docker存儲 4-1 Volume介紹
Volume
提供獨立于容器之外的持久化存儲4-2 Volume操作
學習筆記
第一種形式 docker run -v 容器內部地址 鏡像名稱 docker run -d --name nginx -v /usr/share/nginx/html nginx 運行nginx容器,通過-v掛載一個卷組,通過-d后臺啟動,通過--name為容器指定名稱 docker inspect 容器名稱 docker inspect nginx 查看指定容器所有信息 查看Mounts節點下的Sources節點和Destination節點信息 該容器把宿主機的Sources對應目錄掛載到容器內部的Destination的目錄地址 cd Sources對應的目錄路徑 vim index.html,修改index.html文件 docker exec -it 容器名稱 /bin/bash 進入到容器內部 cd Destination對應的路徑路徑 然后查看index.html文件,發現是剛剛修改后的內容,即掛載成功,映射關系正確 第二種形式 docker run -v $PWD/code:/var/www/html nginx 本地目錄掛載到容器里面的一個路面里面 docker run -p 80:80 -d -v $PWD/html:/usr/share/nginx/html nginx cat html/index.html 查看本地文件的內容 docker exec -it 容器名稱 /bin/bash 進入到容器內部 cat /usr/share/nginx/html/index.html 發現其內容和本地文件的內容一致,即映射關系正確 第二種形式 docker run --volumes-from ... mkdir data docker create -v $PWD/data:/var/mydata --name data_container ubuntu 產生一個僅有數據的容器 docker run -it --volumes-from data_container ubuntu /bin/base 從另外一個容器掛載, 運行并直接進入容器內部 mount cd mydata touch whatever.txt exit cd data ls 查看本地data目錄下是否有whatever.txt文件 可以多個容器掛載一個數據容器,實現數據共享第五章:鏡像倉庫 5-1 Registry介紹
Docker相關術語
host:宿主機 image:鏡像 container:容器 registry:鏡像倉庫 daemon:守護程序 client:客戶端
Registry相關命令
docker search 鏡像名稱 從鏡像倉庫中搜索指定鏡像 docker pull 鏡像名稱 從鏡像倉庫中拉取指定鏡像 docker push 鏡像名稱 將本地鏡像推送到鏡像倉庫
國內的一些鏡像倉庫
daocloud 時速云 阿里云5-2 Registry實戰
學習筆記
docker search whalesay 在鏡像倉庫中搜索whalesay docker pull docker/whalesay 從鏡像倉庫中拉取鏡像docker/whalesay到本地 docker images 查看本地鏡像信息 docker run docker/whalesay cowsay Docker so fun 運行docker/whalesay鏡像,并指定參數 docker tag docker/whalesay zc/whalesay 依賴docker/whalesay鏡像產生新的zc/whalesay鏡像(類似復制) docker push zc/whalesay 將鏡像zc/whalesay推送到鏡像倉庫 docker login 在push之前,需要登錄。默認登錄到docker hub 到docker hub官方地址 查看到自己push的鏡像第六章:多容器app 6-1 Compose介紹
docker-compose
多容器app docker-compose是獨立的軟件 docker-compose安裝 linux:curl https://github.com/docker/compose6-2 Compose安裝
學習筆記
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 下載docker-compose包到/usr/local/bin/docker-compose chmod a+x /usr/local/bin/docker-compose 給/usr/local/bin/docker-compose授可執行權限 docker-compose --version 驗證安裝6-3 Compose實戰
實戰案例介紹
app名稱:ghost,是一個博客平臺程序 安裝之后,可自己寫文章或別人發布 架構:nginx-ghost app-mysql 分別分為三個容器
docker-compose.yml文件
ghost-app: build: ghost depends_on: - db ports: - "2368:2368" nginx: build: nginx ports: - "80:80" depends_on: - ghost-app db: images: "mysql:5.7.15"
docker-compose.yml命令
build:本地創建鏡像 command:覆蓋缺省命令 depends_on:連接容器 ports:暴露端口 volumes:掛載卷組 image:拉取鏡像
docker-compose命令
up:啟動服務 stop:停止服務 rm:刪除服務中的各個容器 logs:觀察各個容器中的日志 ps:列出服務相關的容器
學習筆記
mkdir ghost cd ghost mkdir ghost mkdir nginx mkdir data // ghost鏡像構建 cd ghost touch Dockerfile vim Dockerfile FROM ghost COPY ./config.js /var/lib/ghost/config.js EXPOSE 2368 CMD ["npm","start","--production"] // 依賴ghost官方鏡像 // 拷貝本地配置文件到鏡像中 // 聲明暴露服務的端口 // 執行啟動命令。ghost為node.js程序,所以使用npm命令 touch config.js vim config.js var path = require("path"), config; config = { production: { url:"http://mytestblog.com", mail: {}, database: { client: "mysql", connection: { host: "db", user: "ghost", password: "ghost", database: "ghost", port: "3306", charset: "utf8" }, debug: false }, paths: { contentPath: path.join(process.env.GHOST_CONTENT,"/") }, server: { host: "0.0.0.0", port: "2368" } } }; module.exports = config; // nginx鏡像構建 cd nginx touch Dockerfile vim Dockerfile FROM nginx COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 // 依賴nginx官方鏡像 // 拷貝本地配置文件到鏡像中 // 聲明暴露服務的端口 touch nginx.conf vim nginx.conf worker processes 4; events {worker_connections 1024;} http { server { listen 80; location / { proxy_pass http://ghost-app:2368; } } } 回到ghost根路徑 ls顯示 ghost:存放Dockerfile和配置文件用來構建鏡像 nginx:存放Dockerfile和配置文件用來構建鏡像 data:存放博客的數據 // compose文件用于描述整個系統的架構 touch docker-compose.yml vim docker-compose.yml version: "2" networks: ghost: service: ghost-app: build: ghost networks: ghost depends_on: db ports: "2368:2368" nginx: build: nginx networks: ghost depends_on: ghost-app ports: "80:80" db: image: "mysql:5.7.15" networks: ghost environment: MYSQL_ROOT_PASSWORD: mysqlroot MYSQL_USER: ghost MYSQL_PASSWORD: ghost volumes: $PWD/data:/var/lib/mysql ports: "3306:3306" docker-compose up -d 啟動 docker-compose stop 關閉 docker-compose rm 刪除 docker-compose build 構建 訪問http://localhost/ghost第七章:課程總結 7-1 課程總結
課程總結
Docker介紹:容器、鏡像 如何制作鏡像 如何分享鏡像 如何持久化容器數據 如何編排一個多容器的應用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27051.html
摘要:時間年月日星期四說明本文部分內容均來自慕課網。倉庫構建鏡像的目的是為了在其機器上運行鏡像程序。使用參數,冒號前面為主機端口,后面為容器端口。 時間:2017年04月27日星期四說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:無個人學習源碼:無 第一章:課程介紹 1-1 課程介紹 Docker能火的原因 快速的持續集成 服務的彈性伸縮 部署...
摘要:時間年月日星期四說明本文部分內容均來自慕課網。倉庫構建鏡像的目的是為了在其機器上運行鏡像程序。使用參數,冒號前面為主機端口,后面為容器端口。 時間:2017年04月27日星期四說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:無個人學習源碼:無 第一章:課程介紹 1-1 課程介紹 Docker能火的原因 快速的持續集成 服務的彈性伸縮 部署...
摘要:時間年月日星期日說明本文部分內容均來自慕課網。當對應的鏈表存在時,從左側插入數據。從右側插入數據。當系統在定時持久化之前出現宕機,還未來得及往硬盤寫入數據,那數據就丟失了。當數據集過大時,可能會導致服務器停止幾百毫秒甚至是秒鐘。 時間:2017年05月21日星期日說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:無個人學習源碼:https:...
閱讀 3223·2021-11-23 10:09
閱讀 2062·2021-10-26 09:51
閱讀 978·2021-10-09 09:44
閱讀 3903·2021-10-08 10:04
閱讀 2744·2021-09-22 15:14
閱讀 3624·2021-09-22 15:02
閱讀 1055·2021-08-24 10:03
閱讀 1726·2019-12-27 12:14