Docker的學習1

来源:https://www.cnblogs.com/shy13138/archive/2019/09/14/11519210.html
-Advertisement-
Play Games

Docker是開源的應用容器引擎。可以理解為輕量級的虛擬機,又可以理解為開了掛的chroot。 官方解釋為docker是一個開源的項目,可以用來將任何應用以輕量級容器的形式,打包,發佈和運行。 docker架構: docker run images_name 運行容器 docker images 查 ...


Docker是開源的應用容器引擎。可以理解為輕量級的虛擬機,又可以理解為開了掛的chroot。

官方解釋為docker是一個開源的項目,可以用來將任何應用以輕量級容器的形式,打包,發佈和運行。

docker架構:

 

 

 

 

 

 

 

 

docker run images_name 運行容器

docker images 查看所有本地的容器

docker pull 獲取image

docker build -t image_name 路徑名 創建image

docker rm 刪除container

docker rmi 刪除image

docker ps 查看正在運行的容器

docker

-p 埠映射

-d 直接返回

docker cp 文件 容器id://容器內的地址 cp文件到容器內的地址,但當重啟後,文件不再容器內,這時就需要保存,保存的命令為:docker commit -m ‘message’ 容器id 新的容器名稱,這時就產生了一個新的image

docker stop 容器id 停止當前容器

docker ps -a 歷史容器

例:下載nginx鏡像並運行:

[root@localhost ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx Digest: sha256:9688d0dae8812dd2437947b756393eb0779487e361aa2ffbc3a529dca61f102c Status: Image is up to date for nginx:latest docker.io/library/nginx:latest

運行nginx鏡像:

[root@localhost ~]# docker run -p 8080:80 -d docker.io/nginx #

cad31276eaaa32efa41eb5355189b5c657a4bac22cc0da24f43fd889c8e2c883 

將本地的8080埠映射到80埠

[root@localhost ~]# netstat -anp |grep 8080 tcp6 0 0 :::8080 :::* LISTEN 1972/docker-proxy

開放8080埠

[root@localhost ~]# iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

  

通過編寫簡單的文件自創docker鏡像

1、首先建立文件夾Docker

2、在Docker文件夾下建立Dockerfile文件,並編輯:

FROM alpine:latest ##是一個專門針對docker做的一個環境 MAINTAINER xbf CMD echo "Hello Docker"

3、利用docker build 命令構建新的image

[root@localhost dockertest]# docker build -t hello_docker .

# Sending build context to Docker daemon 2.048kB

Step 1/3 : FROM alpine:latest

latest: Pulling from library/alpine

9d48c3bd43c5: Pull complete

Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb

Status: Downloaded newer image for alpine:latest

---> 961769676411

Step 2/3 : MAINTAINER xbf

---> Running in c92d0fa7be5c

Removing intermediate container c92d0fa7be5c

---> 3f3ea64dc595

Step 3/3 : CMD echo "Hello Docker"

---> Running in 6568cd66097d Removing intermediate container 6568cd66097d

---> d7cc9ec010e5

Successfully built d7cc9ec010e5

Successfully tagged hello_docker:latest

[root@localhost dockertest]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

hello_docker latest d7cc9ec010e5 9 seconds ago 5.58MB

nginx latest ab56bba91343 20 hours ago 126MB

alpine latest 961769676411 3 weeks ago 5.58MB

hello-world latest fce289e99eb9 8 months ago 1.84kB

4、利用docker run來運行此image

[root@localhost dockertest]# docker run hello_docker Hello Docker

第二個dockerfile

1、首先建立文件夾Docker2

2、在Docker2文件夾下建立Dockerfile文件,並編輯:

FROM ubuntu

MAINTAINER root

RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

RUN apt-get update && apt-get install nginx -y

COPY index.html /var/www/html

ENTRYPOINT ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

EXPOSE 80

  

3、建立www/index.html文件

touch index.html 
Hello nginx.ubuntu

4、構建新的image。

docker build -t whr/hello-nginx /dockertest/Docker2

[root@localhost Docker2]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

whr/hello-nginx latest f6efa129cd16 2 minutes ago 149MB

  

5、啟動whr/hello-nginx

[root@localhost Docker2]# docker run -d -p 80:80 whr/hello-nginx 
ada48aa3a8fef5e1feb35e5c90ff176f584cd69b8ad1af403de96cd883247599

 

Dockerfile的語法

  FROM base image

  RUN 執行命令

  ADD 添加文件

  COPY 拷貝文件

  CMD 執行命令

  EXPOSE 暴露視窗

  WORKDIR 指定路徑

  MAINTAINER 維護者

  ENV 設定環境變數

  ENTRYPOINT 容器入口

  USER 指定用戶

  VOLUME mount point

鏡像分層

Dockerfile中的每一行都會產生一個新層


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2 命令行入門 2019.9.14 五大命令行工具 二進位可執行文件 shell內置命令 解釋性腳本 shell函數 別名 1. shell函數 shell函數就是由shell自己執行的函數,在我們這裡就是由 Bash 執行的函數 我們定義了一個 fac() 函數,使用 seq 生成一串數字,用 p ...
  • 1.1 Linux 的安裝 安 裝 採 用 在 虛 擬 機 中 安 裝 , 以 方 便 不 同 班 級 授 課 時 , 需 要 重 復 安裝的情況。 1.1.1 配置虛擬機 1. 在 VMware Worksta tio n 中創建新的 虛 擬 機 ,選 擇 自 定 義 安 裝 ,點 擊 下一步 。 ...
  • 1 win10配置 Vagrant 環境 2019.9.13 Vagrant 概述 vagrant是一個操作虛擬機的工具.是一個基於Ruby的工具,用於創建和部署虛擬化開發環境。 通過命令和配置文件來管理虛擬機,很快就能完成一套開發環境的部署,並可以打包傳播,統一了開發環境,也解決了重覆配置環境的麻 ...
  • 出現問題的原因: 圖一 出現問題的界面: 圖二 按esc,無作用。 圖三 按esc,按i,依然無作用。 圖四 解決方法: (1)按esc,i無用, 在圖2按s成功到登陸界面。 (2)桌面修改為disk,重啟依然需要按s。 (3)gedit /etc/fstab 刪除了添加的自動掛載的命令。 (4)重 ...
  • 下麵就是我針對docker file同一個文件,按照layer層的個數的多少,分別構建了兩個鏡像的jenkins-master。兩者大小相差300MB。 <1> layer層數太多,沒有將命令合併為一條命令 <2> layer層數很少,將全部命令合併為一條命令 然後,分別執行構建命令 root >> ...
  • TeamViewer是一個遠程共用桌面軟體,使遠程傳輸變得簡單快速,遠程訪問安全可靠,能在任何防火牆後臺進行遠程式控制制。只需用戶在兩台電腦上同時運行這個軟體就可以開始工作。使用時關閉殺毒軟體,防止誤報被禁用! 下載地址: 鏈接:https://pan.baidu.com/s/1mZtmg8VBzDp ...
  • 一、下載地址: 官網地址:https://www.netresec.com/?page=RawCap 百度雲:鏈接:https://pan.baidu.com/s/1mWCOTRF5XicuJitBAVQH7g 提取碼:03lh 二、使用方法: cmd命令行內執行RawCap.exe如下: D:\r ...
  • 一、下載地址: 小米球官網:http://ngrok.ciqiuwl.cn/ windows上使用小米球內網穿透軟體: 鏈接:https://pan.baidu.com/s/1VE6uDLowJnCb9dRg7iHKJw 提取碼:49ln 二、使用方法: 下載解壓後,在cmd命令行下輸入: ngro ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...