Docker教程基礎命令 項目部署 私有倉庫搭建

Docker鏡像相當於是一個root文件系統

 

Docker鏡像的本質:

Linux文件系統有bootfs和rootfs兩部分組成

bootfs:包含bootloader(引導加載程序)和kernel(內核)

rootfs:root文件系統 /dev /bin /etc

鏡像原理:

由特殊的文件系統疊加而成

最低端是bootfs,並使用宿主機的bootfs

第二層是root文件系統rootfs(基礎鏡像)

然後再網上可以疊加其他的鏡像文件(組成只讀鏡像,對於裏面的鏡像不能修改)

當從一個鏡像啓動容器時,Docker會在最頂層加載一個讀寫文件系統作爲容器

WEBRESOURCE6631ee551662292ecff61b959b0f3e91uploading.4e448015.gif轉存失敗重新上傳取消WEBRESOURCE6631ee551662292ecff61b959b0f3e91uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCE6631ee551662292ecff61b959b0f3e91uploading.4e448015.gif轉存失敗重新上傳取消

 

 

 

 

Docker中一個centos鏡像只有200M,而centos操作系統得iso文件有幾個G:

Docker中的centos鏡像父用了linux的bootfs部分,提供rootfs部分

 

 

製作容器:

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCE84864cd59b4b621bd9c6a77652564eeauploading.4e448015.gif轉存失敗重新上傳取消

1.容器轉鏡像:鏡像不能直接傳輸,只能壓縮成壓縮文件

打包鏡像 docker commit 容器id 鏡像名稱:版本號

壓縮 docker save -o 壓縮文件 鏡像名稱:版本號

還原成鏡像 docker load -i 壓縮文件名稱

 

2.dockerfile

概念:包含一條條指令,每一條指令構建一層,基於基礎鏡像,最終構建出一個新的鏡像

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCEaaeb66674afb0deb5789c601d126bf22uploading.4e448015.gif轉存失敗重新上傳取消

 

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCEa5835960ce14916ccd47d3cba0f62293uploading.4e448015.gif轉存失敗重新上傳取消

FORM指定父鏡像

EXPOST 80 暴露端口

STOPSINGNAL SIDTERM

CMD ["nginx","-g","daemon off;"] 啓動nginx的命令

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCE294115b69b2ad616172b471fb652a96buploading.4e448015.gif轉存失敗重新上傳取消

 

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCE117f0bf47b095b460c16ef2928fec368uploading.4e448015.gif轉存失敗重新上傳取消

 

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCEff3709c70ae2125682e886f58f0996f2uploading.4e448015.gif轉存失敗重新上傳取消

 

dockerfile實現:

1.定義父鏡像 FORM centos:7

2.定義作者信息 MAINTAINER ithe<[email protected]>

3.執行安裝vim命令 RUN yum install -y vim

4.定義默認的工作目錄: WORKDIR/usr

5.定義容器啓動執行的命令:CMD/bin/bash

 

執行文件:

docker build -f ./dockerfile -t(命名)it_centos:1 .(代表尋址路徑)

 

案例:定義dockerfile 發佈springboot項目

1.編輯dockerfile

FROM java:8

MAINTAINER author <[email protected]>

ADD demo-0.0.1-SNAPSHOT.jar app.jar

CMD java -jar app.jar

2.構建鏡像

docker build -f ./springboot_dockerfile -t app .

3.啓動容器

docker run -id -p 1688:1688 app

 

服務編排:

概念:按照一定的業務規則批量管理容器

編排工具:Docker Compose 多容器分佈式部署的工具,提供命令集管理容器化應用的完整開發週期,包括服務構建,啓動,停止,

使用步驟:

1.利用Dockerfile定義運行環境鏡像

2.使用docker-compose.yml定義組成應用的各服務

3.運行docker-compose up啓動應用

 

1.安裝docker-compose

2.編寫docker-compose.yml文件

version: '3'

services:

nginx:

image: nginx

ports:

- 80:80

links:

- app

volumes:

- ./nginx/conf.d:/etc/nginx/conf.d

app:

image: app

expose:

- "1688"

3.創建nginx配置文件目錄

mkdir -p ./nginx/conf.d

4.創建nginx配置文件

vim it.conf

server {

listen 80;

access_log off;

 

location / {

proxy_pass http://app:1688;

}

 

}

5.回到docker-compose文件夾並啓動

cd ../../

docker-compose up -d(表示後臺運行)

 

Docker私有倉庫

一:私有倉庫搭建

1.拉取倉庫鏡像

docker pull registry

2.創建容器

docker run -id --name=registry -p 5000:5000 registry

測試訪問:http://ip地址:5000/v2/_catalog,成功訪問就代表創建成功

3.修改daemon.json

vim /etc/docker/daemon.json

4.添加倉庫地址

"insecure-registries":["139.196.162.249:5000"]

5.重啓docker

systemctl restart docker

啓動私有庫容器:docker start registry

6.標記鏡像爲私有倉庫的鏡像

docker tag centos:7 ip地址:5000/centos:7

7.上傳標記的鏡像

docker push ip地址:5000/centos:7

成功後:

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCEaa6c40bfe9bf8a0656a6d0e94231e7c7uploading.4e448015.gif轉存失敗重新上傳取消

從倉庫拉取鏡像

docker pull ip地址:5000/centos:7

 

 

Docker容器虛擬化與傳統虛擬機的區別

容器就是將軟件打包成獨立軟件包,用於開發、交付和部署

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCE2866225b8d9680fa6b59272cc2943138uploading.4e448015.gif轉存失敗重新上傳取消

相同點:

容器和虛擬機具有相似的資源隔離和分配優勢

不同:

容器虛擬化的是操作系統,虛擬機虛擬化的是硬件

容器只能運行同一類型系統,虛擬機可以運行不同的操作系統

 

 

 

 

服務操作:

啓動 systemctl start docker

查看狀態 systemctl status docker

停止 systemctl stop docker

重啓 systemctl restart docker

開機啓動 systemctl enable docker

 

鏡像操作:

查看鏡像:docker images

搜索鏡像:docker search redis(hub.docker.com查看版本)

拉取鏡像:docker pull redis:5.0(默認官方新版本)

刪除鏡像:docker rmi f0453552d7f2(image id)

刪除所有鏡像:docker rmi 'docker images -q

 

容器操作:

查看運行的容器:docker ps 查看正在運行的容器 docker ps -a(所有歷史的)

創建容器:docker run -it(退出立馬關閉容器) --name=c1(容器名字) ubuntu:18.04(鏡像和版本) /bin/bash

docker run -id(退出後不會關閉容器) --name=c2(容器名字)

-i保持容器運行

進入容器:docker exec 參數

啓動容器:docker start c2

停止容器:docker stop c2

刪除容器:docker rm c2

刪除所有容器:docker rm 'docker pa -aq'(查看所有容器的命令) 不能刪除正在運行的

查看容器信息:docker inspect c2

'

數據卷:

容器刪除後容器產生的數據還在嗎?

不在 ,docker產生的數據在docker容器裏 數據卷數據還在

docker容器和外部機器可以直接交換文件嗎?

不能,容器和外部機器網絡不互通 數據卷裏的數據可以交換

容器之間想要進行數據交互?

 

 

 

定義:數據卷是宿主機中的一個目錄或文件,

當容器目錄和數據卷目錄綁定後,對方修改的數據會立即同步

一個容器可以掛載多個數據卷

一個數據卷可以被多個容器掛載

uploading.4e448015.gif正在上傳…重新上傳取消WEBRESOURCE8fc3950a982c5f2c64799ce59af498e2uploading.4e448015.gif轉存失敗重新上傳取消

數據卷作用:

容器數據持久化

外部機器和容器間接通信

容器之間的數據交互

 

配置數據卷:

啓動容器時使用-v參數設置數據卷:

docker run -it --name=c1 -v /root/data(被掛載的目錄):/root/data_container(容器裏的目錄) ubuntu /bin/bash

掛載多個目錄:

docker run -it --name=c2 \

-v /root/data(被掛載的目錄):/root/data_container1(容器裏的目錄) \

-v /root/data(被掛載的目錄):/root/data_container2(容器裏的目錄)\

ubuntu /bin/bash

 

docker部署tomcat

搜索鏡像 docker search tomcat

拉取鏡像 docker pull tomcat

啓動容器並啓動項目 docker run -id --name=x_tomcat \

> -p 8080:8080 \ //將容器的8080端口映射到主機的8080端口

> -v $PWD:/user/local/tomcat/webapps\ //將主機中當前目錄掛載到容器的/user/local/tomcat/webapps中

> tomcat

 

docker部署nginx

搜索鏡像 docker search nginx

拉取鏡像 docker pull nginx

啓動容器docker run -id --name=c_nginx\

> -p 80:80 \ //映射端口

> -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf\ //映射配置文件目錄

> -v $PWD/logs:/var/log/nginx\ //映射日誌目錄

> -v $PWD/html:/usr/share/nginx/html\ //映射訪問資源目錄

> nginx

 

docker部署redis

搜索鏡像 docker search redis

拉取鏡像 docker pull redis

啓動容器docker run -id --name=c_redis -p 6379:6379 redis:5.0

 

 

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