欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker入門教程之本地打包docker鏡像教程

 更新時間:2023年06月08日 10:19:31   作者:cjcjccccc  
Docker鏡像是一個特殊的文件系統(tǒng),既提供了運行時所需的程序、庫和資源,還提供了相應的配置參數(shù),只是不包含動態(tài)數(shù)據(jù),下面這篇文章主要給大家介紹了關于Docker入門教程之本地打包docker鏡像的相關資料,需要的朋友可以參考下

什么是Docker?

Dockers是基于Go語言開發(fā)的虛擬容器技術。以前我們部署應用通常是將源代碼打包成一個jar包運行,這樣就會受到運行環(huán)境、配置環(huán)境的限制,而且程序也不能跨服務器運行。Docker基于Linux容器技術,將Java源代碼、運行環(huán)境像MySQL、redis、jdk等通通打包成一個鏡像,實現(xiàn)“一次鏡像,處處運行”。極大的提高的應用的移植性以及部署的效率。

 簡單來說,docker是一個解決了運行環(huán)境和配置問題的軟件容器,方便做持續(xù)集成并有助于整體發(fā)布的容器虛擬化技術。

容器與虛擬機的區(qū)別

  • 傳統(tǒng)虛擬機技術是虛擬出一套硬件后,在其上運行的一個完整的操作系統(tǒng),在該系統(tǒng)上在運行所需應用進程。而Docker不需要捆綁一整套的操作系統(tǒng),它只需要軟件工作所需的庫資源和設置。
  • Docker容器是在操作系統(tǒng)層面上實現(xiàn)虛擬化,直接復用本地主機的操作系統(tǒng),而傳統(tǒng)虛擬機則是在硬件層面實現(xiàn)虛擬化;Docker依賴于Linux內(nèi)核環(huán)境,其實本質(zhì)上是在已經(jīng)運行的Linux下制造一個隔離的文件環(huán)境。

優(yōu)點:

  •  更輕量:基于容器的虛擬化,僅包含業(yè)務運行所需的runtime環(huán)境。
  •  更高效:無操作系統(tǒng)虛擬化開銷。
  •  更靈活:容器隔離,devoops理念。

Docker的組成

docker中有三個基本概念:

  • 鏡像(image):一個只讀的模板,可以用來創(chuàng)建Docker容器。類似于Student類
  • 容器(Container):容器是鏡像創(chuàng)建的運行實例。容器是鏡像運行時的實體,為鏡像提供了一個標準的和隔離的運行環(huán)境。它可以被啟動、停止、刪除,每個容器之間都是隔離的。類似于stu實例對象
  • 倉庫(repository):存放鏡像文件的地方。比如maven倉庫是存放jar包的地方。

類比于--》Student stu = new Student();

docker安裝

Linux上安裝:

# 首先安裝 Docker
yum -y install docker
 
# 然后啟動 Docker 服務
service docker start
 
# 測試安裝是否成功
docker -v
    
# 配置阿里云鏡像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Windows上安裝:下載Docker Desktop,配置WSL 

docker run 的執(zhí)行流程及原理

執(zhí)行流程:

docker是一個client-server結(jié)構(gòu)的系統(tǒng),docker的守護進程運行在主機上。dockerServer接收到docker-client的命令,就會執(zhí)行這個命令。

容器基本操作

docker 中的容器就是一個輕量級的虛擬機,是鏡像運行起來的一個狀態(tài),本文就先來看看容器的基本操作。

鏡像就像是一個安裝程序,而容器則是程序運行時的一個狀態(tài)。

查看容器

#查看正在運行容器
docker ps
 
#查看所有容器
docker ps -a
 
#查看最新創(chuàng)建的容器
docker ps -l

創(chuàng)建容器

#創(chuàng)建容器
docker create 鏡像
	--創(chuàng)建一個 nginx 容器:docker create nginx
	--指定容器的name為nginx:docker create --name=nginx nginx
#創(chuàng)建并啟動一個容器
docker run 鏡像
	--docker run --name nginx1 -d -p 8080:80 nginx
	--name 含義和上文一樣,表示創(chuàng)建的容器的名字,-d 表示容器在后臺運行,-p 表示將容器的 80 端口映射到宿主機的 8080 端口

啟動關閉容器

#啟動容器
docker start id|name
#重啟容器
docker restart id|name
#關閉容器
docker stop id|name

刪除容器

#單個刪除
docker rm id|name
#批量刪除
docker rm $(docker ps -a -q)

查看容器信息、日記

#容器詳情
docker inspect id|name
 
#查看容器進程
docker top 
 
#查看你容器日記
docker logs id|name
		-f :實時日記
		-t : 顯示時間
		-tail: 控制輸出行數(shù)

容器導入導出

#導出一個已經(jīng)創(chuàng)建的容器導到一個文件
docker export -o 文件名.tar 容器id
#將文件導入為鏡像
docker import 文件名.tar 鏡像名:鏡像標簽

docker export -o image-test.tar 1ffcd3e4a201

鏡像的基本操作

鏡像是容器運行的基礎,容器是鏡像運行后的形態(tài)。鏡像是一個包含程序運行必要以來環(huán)境和代碼的只讀文件,它采用分層的文件系統(tǒng),將每一層的改變以讀寫層的形式增加到原來的只讀文件上。

查看所有鏡像

docker images

  1. TAG: TAG用于區(qū)分同一倉庫中的不同鏡像,默認為latest。
  2. IMAGE ID: IMAGE ID是鏡像的一個唯一標識符。
  3. CREATED: CREATED表示鏡像的創(chuàng)建時間。
  4. SIZE: SIZE表示鏡像的大小。
  5. REPOSITORY:倉庫名稱,倉庫一般用來存放同一類型的鏡像。倉庫的名稱由其創(chuàng)建者指定。如果沒有指定則為 <none>

 搜索鏡像

docker search name

下載鏡像

docker pull name:版本

  版本可以在Docker hub上查看 

刪除鏡像

docker rmi id|name

Dockerfile

Dockerfile是用來構(gòu)建docker鏡像的構(gòu)建文件。

其實Dockerfile就是一個普通的文本文件,其中包含了一條條的指令,每一條指令都會構(gòu)建一層。

 dockerfile指令

FROM 		#基礎鏡像,一切從這里開始構(gòu)建
MAINTAINER	#鏡像是誰寫的,姓名+郵箱
RUN			#鏡像構(gòu)建時需要運行的命令
ADD			#步驟,tomcat鏡像,這個tomcat壓縮包;添加內(nèi)容
WORKDIR		#鏡像工作目錄
VOLUME		#掛載的目錄
EXPOSE		#暴露端口配置
CMD			#指定這個容器啟動的時候要運行的命令,只有最后一個會生效,可被替代
ENTRYPOINT	#指定這個容器啟動的時候要運行的命令,可以追加命令
ONBUILD		#當構(gòu)建一個被繼承DockerFile 這個時候就會運行 ONBUILD 的指令,觸發(fā)指令
COPY		#類似ADD,將我們的文件拷貝至鏡像中
ENV			#構(gòu)建的時候設置環(huán)境變量

  1. FROM nginx 表示該鏡像的構(gòu)建,以已有的 nginx 鏡像為基礎,在該鏡像的基礎上構(gòu)建。
  2. MAINTAINER 指令用來聲明創(chuàng)建鏡像的作者信息以及郵箱信息,這個命令不是必須的。
  3. RUN 指令用來修改鏡像,算是使用比較頻繁的一個指令了,該指令可以用來安裝程序、安裝庫以及配置應用程序等,一個 RUN 指令執(zhí)行會在當前鏡像的基礎上創(chuàng)建一個新的鏡像層,接下來的指令將在這個新的鏡像層上執(zhí)行,RUN 語句有兩種不同的形式:shell 格式和 exec 格式。本案例采用的 shell 格式,shell 格式就像 linux 命令一樣,exec 格式則是一個 JSON 數(shù)組,將命令放到數(shù)組中即可。在使用 RUN 命令時,適當?shù)臅r候可以將多個 RUN 命令合并成一個,這樣可以避免在創(chuàng)建鏡像時創(chuàng)建過多的層。
  4. COPY 語句則是將鏡像上下文中的 hello.html 文件拷貝到鏡像中。

命令解釋:

  1. -t 參數(shù)用來指定鏡像的命名空間,倉庫名以及 TAG 等信息。
  2. 最后面的 . 是指鏡像構(gòu)建上下文。

本地打包docker鏡像

下載安裝Docker Desktop,配置完成后即可在windows CMD上操作docker命令

編寫一個簡單的springboot項目,提供一個helloworld接口

@RestController
public class HelloWorld {
    @GetMapping("/hello")
    public String helloImages() {
        return "hello images!";
    }
}

使用maven插件打包--install--,在target包下可以看得到生成的jar包。

 編寫Dockerfile文件

# 基礎鏡像使用java
FROM java:8
 
#作者
MAINTAINER CJC
 
#將jar包添加到容器中并更名為: hello-docker-image.jar
ADD docker-image-test-0.0.1-SNAPSHOT.jar hello-docker-image.jar
 
#運行jar包
RUN bash -c 'touch hello-docker-image.jar'
ENTRYPOINT ["java","-jar","hello-docker-image.jar"]
 
#暴露端口
EXPOSE 8080

 將jar包和dockerfile文件置于同一目錄下執(zhí)行命令,構(gòu)建鏡像:

docker build -t Name:TagName .
 
> build -t hello-docker-image:V1.0 .
 
-t參數(shù)指定構(gòu)建成后,鏡像的倉庫、標簽等,
Name 給鏡像取的名字
TagName 給鏡像取的標簽
最后的 .  表示 Dockerfile 文件在當前目錄下 

 查看鏡像:docker images

 創(chuàng)建并啟動容器:docker run -d -p 8080:8080 6e7772b68332

 docker desktop上可以看到容器正在運行:

docker數(shù)據(jù)卷操作

一般情況下,當我們需要將數(shù)據(jù)從宿主機拷貝到容器中使用的都是docker的拷貝命令。數(shù)據(jù)卷可以避免這種麻煩的操作。

數(shù)據(jù)卷可以實現(xiàn)容器和宿主機之間的數(shù)據(jù)共享,簡單來說數(shù)據(jù)卷就是在宿主機和容器之間搭建的一個映射的工作區(qū),兩者可以同步修改。

docker run -itd --name nginx -v /Users/sang/blog/docker/docker/:/usr/share/nginx/html/ -p 80:80 bc26f1ed35cf

 這樣便是將宿主機中的 /Users/sang/blog/docker/docker/ 目錄掛載到容器的 /usr/share/nginx/html/ 目錄下。接下來讀者只需要在 /Users/sang/blog/docker/docker/ 目錄下添加 html 文件,或者修改 html 文件,都能在 nginx 訪問中立馬看到效果。

查看所有的數(shù)據(jù)卷:

docker volume ls

查看數(shù)據(jù)卷詳情

docker volume inspect

刪除數(shù)據(jù)卷

docker volume rm

總結(jié)

到此這篇關于Docker入門教程之本地打包docker鏡像教程的文章就介紹到這了,更多相關本地打包docker鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker部署Apollo的實現(xiàn)步驟

    Docker部署Apollo的實現(xiàn)步驟

    眾所周知分布式配置中心在目前也可以說是企業(yè)中項目的標配了,本文主要介紹了Docker 部署Apollo的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Docker容器編排實現(xiàn)過程解析

    Docker容器編排實現(xiàn)過程解析

    這篇文章主要介紹了Docker容器編排實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Docker如何掛載mysql

    Docker如何掛載mysql

    這篇文章主要介紹了Docker如何掛載mysql問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解在docker中制作自己的JDK+tomcat鏡像

    詳解在docker中制作自己的JDK+tomcat鏡像

    這篇文章主要介紹了詳解在docker中制作自己的JDK+tomcat鏡像,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 詳解從 0 開始使用 Docker 快速搭建 Hadoop 集群環(huán)境

    詳解從 0 開始使用 Docker 快速搭建 Hadoop 集群環(huán)境

    這篇文章主要介紹了詳解從 0 開始使用 Docker 快速搭建 Hadoop 集群環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 詳解Docker中的nacos集群部署方式

    詳解Docker中的nacos集群部署方式

    在 Docker 中使用 Nacos,你可以通過拉取官方提供的 Docker 鏡像并運行容器的方式來快速部署,這篇文章主要介紹了Docker中的nacos集群部署方式,感興趣的朋友一起看看吧
    2024-01-01
  • docker形式簡易部署kibana的過程

    docker形式簡易部署kibana的過程

    這篇文章給大家介紹使用docker部署kibana服務的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Docker拉取ubuntu鏡像并建立環(huán)境的詳細過程

    Docker拉取ubuntu鏡像并建立環(huán)境的詳細過程

    在Docker實戰(zhàn)中Ubuntu是一個常見的基礎鏡像,用于構(gòu)建其他應用服務的容器,這篇文章主要給大家介紹了關于Docker拉取ubuntu鏡像并建立環(huán)境的詳細過程,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • FastAPI 部署在Docker的詳細過程

    FastAPI 部署在Docker的詳細過程

    這篇文章主要介紹了FastAPI 部署在 Docker的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • docker容器中布置靜態(tài)網(wǎng)站的實現(xiàn)

    docker容器中布置靜態(tài)網(wǎng)站的實現(xiàn)

    這篇文章主要介紹了docker容器中布置靜態(tài)網(wǎng)站的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論