1. 程式人生 > >全面認識Docker和基本指令

全面認識Docker和基本指令

Docker逐漸成為虛擬化技術的佼佼者,Java架構師之路接下來會推出一系列的Docker相關技術文章,Docker技術也是架構師的必備技能。

什麼是Docker

Docker 是一個開源的應用容器引擎,基於Go語言,誕生於2013年初,最初發起者是dotCloud公司,開發者可以打包應用到一個輕量級、可移植的容器中,然後釋出到主流Linux系統上執行。

為什麼用Docker

  • 持續交付和部署:使用Docker可以通過定製應用映象來實現持續整合,持續交付,部署。開發人員構建後的映象,結合持續整合系統進行整合測試,而運維人員則可以在生產環境中快速部署該映象,也可以結合持續部署系統進行自動部署

  • 更高效的資源利用:

    Docker是基於核心級的虛擬化,可以實現更高效的效能,同時對資源的額外需求很低,相比傳統虛擬機器方式,相同配置的主機能夠執行更多的應用。

  • 更輕鬆的遷移和擴充套件:Docker容器幾乎可以在任何平臺上執行,同時支援主流的作業系統發行版本。

  • 更快速的啟動時間:傳統的虛擬機器技術啟動應用服務往往需要數分鐘,而Docker容器應用,由於直接運行於宿主核心,無需啟動完整的作業系統,因此可以做到妙級,甚至毫秒級的啟動時間,大大的節約了開發,測試,部署的時間。

Docker與傳統虛擬機器差異


核心概念

  • Docker映象:類似於虛擬機器裡的映象,是一個只讀的模板,一個獨立的檔案系統,使用映象可以建立容器,可以理解為映象是容器的基石。

  • Docker容器:是由Docker映象建立的執行例項,類似於輕量級的沙箱,每個容器之間都是相互隔離的。支援的操作有啟動,停止,刪除等。

  • Docker倉庫:類似於經常使用的程式碼倉庫,如github,它是Docker集中存放映象檔案的倉所,國內也有網易,阿里等映象倉庫。                    

映象操作指令

  • 獲取映象:

    docker pull centos    (預設獲取centos最新的映象)

    docker pull centos:7 (獲取指定標籤映象)

  • 檢視本地映象:

    docker images

  • 檢視映象詳細資訊:

    docker inspect centos:7 

  • 檢視映象歷史:

    docker history centos:7

  • 刪除映象:

    A:使用標籤刪除:docker rmi centos

    B:使用ID刪除:docker rimi

  • 構建映象:

    A:使用docker commit命令

    B:使用Dockerfile構建

使用docker commit

例:構建一個帶有jdk的映象

按照如下步驟操作

[[email protected] ~]# docker run -it centos:7 /bin/bash
[[email protected]060793baf536 /]# yum install wget
[[email protected]060793baf536 /]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

[[email protected]060793baf536 /]# rpm -ivh jdk-8u131-linux-x64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_131-2000:1.8.0_131-fcs  ###
############################## [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
[[email protected]060793baf536 /]# exit
[[email protected] ~]# docker commit 060793baf536 centos/jdk:2.0

通過docker images命令可以看到新增了centos/jdk 標籤為2.0的映象

使用Dockerfile構建

實際使用中不推薦使用docker commit構建,應使用更靈活和強大的Dockerfile構建docker映象,直接舉例來認識Dockerfile。

例:構建一個帶有jdk的centos7映象

[[email protected] Dockerfile]# mkdir Dockerfile
[[email protected] Dockerfile]# cd Dockerfile

編寫Dockerfile:

FROM centos:7
MAINTAINER  Java-Road "[email protected]"

RUN mkdir /usr/local/jdk
COPY jdk-8u171-linux-x64.rpm /usr/local/jdk/
RUN rpm -ivh /usr/local/jdk/jdk-8u171-linux-x64.rpm

執行如下指令:

[[email protected] Dockerfile]# docker build -t centos/jdk .

執行結果如下:

docker images可以看到新生成的centos/jdk映象。

容器操作指令

  • 建立啟動容器:

    [[email protected] ~]# docker run centos:7 /bin/echo'hello world'

        容器執行完後直接退出

  • 互動形式建立啟動容器

    [[email protected] ~]# docker run -it centos:7 /bin/bash
    [[email protected] /]# ps
       PID TTY          TIME CMD
         1 ?        00:00:00 bash
        13 ?        00:00:00 ps
    [[email protected] /]# exit

    執行exit才能退出容器

  • 守護狀態執行容器

    [[email protected] ~]# docker run -d centos:7 /bin/sh -c "while true; do echo hello world; sleep 1; done"
  • 啟動已有的容器:

    docker start 容器ID
    例:
    [root@localhost ~]# docker start 802e3623e566
  • 停止執行的容器:

    docker stop 容器ID
    例:
    [root@localhost ~]# docker stop 802e3623e566
  • 刪除容器:

    [[email protected] ~]# docker stop 89566e38c7fb
    [[email protected] ~]# docker rm 89566e38c7fb
  • 進入執行的容器:

    [[email protected] ~]# docker exec -it cbd8b1f35dcc /bin/bash
  • 匯出容器:

    匯出容器cbd8b1f35dcc到centos_test.tar檔案

    [[email protected] ~]# docker export -o centos_test.tar cbd8b1f35dcc

    匯出的tar檔案可以在其他機器上,通過匯入來重新執行
  • 匯入容器:

    把匯出的檔案centos_test.tar通過docker import匯入變成映象

    [[email protected] ~]# docker import centos_test.tar test/centos

    通過docker images命令可以看到增加了個test/centos映象

相關推薦

全面認識Docker基本指令

Docker逐漸成為虛擬化技術的佼佼者,Java架構師之路接下來會推出一系列的Docker相關技術文章,Docker技術也是架構師的必備技能。什麼是DockerDocker 是一個開源的應用容器引擎,基於Go語言,誕生於2013年初,最初發起者是dotCloud公司,開發者可

Django的下載基本指令

  1.下載Django   pip3  install  django     #不寫版本號的話,預設使下載最新版的django   pip3  install   django == 2.1.2   

Docker學習系列(三):Ubuntu下使用Docker基本指令記錄及一些注意事項

1.Dockerhub下載映象 有兩種方式可以獲得新的映象 直接從dockerhub下載編譯好的image(該編譯過程在docker hub的雲端完成)(見3.1) 下載docekrfile檔案,在本機進行build 直接在docker

認識TaskTask的基本使用(轉)

title src demo 手動 點擊 strong esp started mage 對於多線程,我們經常使用的是Thread。在我們了解Task之前,如果我們要使用多核的功能可能就會自己來開線程,然而這種線程模型在.net 4.0之後被一種稱為基於“任務的編程模型”所

linux學習筆記:基本指令mkdir, rmdir 、rm

pytho mil 註意 folder 執行 dir 不同 情況 我們 #學習內容來自莫煩python mkdir 建立文件夾 mkdir (make directory) 就是創建一個文件夾的意思, 使用起來很簡單. $ mkdir folder2 如果你想在這個目錄給

docker概述基本命令

centos 搜索 文章 des 一個 case tfs 時間 測試 容器技術已經成為應用程序封裝和交付的核心技術   ? 容器技術的核心有以下幾個內核技術組成:     – CGroups(Control Groups)-資源管理     – NameSpace-進

docker版mysql的使用配置(1)——docker基本操作

spa uci 信息 5.5 8.0 ash 隨機 server expec 最近實在是忙成狗,其他的內容等稍微閑一點了一起更新。 這篇主要是講docker版的mysql的使用和配置信息。因為實習公司需要搞一個docker做測試環境用,還需要包括基本的依賴。最重要的是,因為

【實戰】Docker入門實踐二:Docker服務基本操作 測試Hello World

lag hit 現在 mage spa 關系 .so recommend 不能 操作環境操作系統:CentOS7.2 內存:1GB CPU:2核Docker服務常用命令docker服務操作命令如下service docker start #啟動服務 service doc

『中級篇』Docker Compose的安裝基本使用(39)

rem 關閉 端口映射 安裝docker 數據持久化 端口 映射 service lan >原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文鏈接地址:『中級篇』Docker Compose的安裝和基本使用(39) Docker Compose 是

Docker學習--docker基本認識

video 技術分享 必須 png 獲取 查看 contain bash ubuntu15 1、Docker 架構 Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。 Docker 容器通過 Docker 鏡

三分鐘掌握docker基本指令

mysql `` ren 器) ner 定義 java 3.2 cli 一下內容是我用markdown編輯的,所以排版不是太ok~ # Docker ## 1.核心概念 docker主機(Host):安裝了docker程序的機器。docker直接安裝再操作系統上。 do

docker基本命令基本操作命令

docker-教程 docker程式設計環境小書匠 docker 教程 Docker官方英文資源 docker官網:http://www.docker.com Docker windows入門:https://docs.docker.com/windows/

Docker安裝基本入門(非簡介)

一、Docker安裝 官方安裝教程(Ubuntu文件型別):Docker官方安裝 注:如果在安裝過程中不知道是否使用啦具體的介紹內容如,Ubuntu中是否啟用UFW,則可以直接檢視/etc/default/ufw檔案是否存在來判斷 二、Docker入門(Docker已安裝好)(提示許

Docker入門及基本指令

Docker概念 Docker就相當於一個Github賬號,不過最開始的工程不能自己建立,要從DockerHub這個中央倉庫pull過來,這個工程Docker稱之為image,這個image竟然是個linux系統!!這是什麼概念?!以前我可以傳傳程式碼帶Github上就覺著很厲害了,現在我竟然可以有無限個作

[Docker] Docker安裝簡單指令

Docker筆記 安裝 sudo apt install docker.io 啟動和關閉Docker服務 # 啟動Docker服務 sudo service docker start # 關閉Docker服務 sudo service docker stop 基本命令 檢視本地Docker的資訊,

【研發管理】(轉)全面認識理解 DevOps

1 什麼是DevOps 當我們談到 DevOps 時,可能討論的是:流程和管理,運維和自動化,架構和服務,以及文化和組織等等概念。那麼,到底什麼是"DevOps"呢? 隨著軟體釋出迭代的頻率越來越高,傳統的「瀑布型」(開發—測試—釋出)模式已經不能滿足快速交

初識Docker學習-Docker基本命令概念

docker的基本命令-拉取、執行、停止、刪除映象,檢視日誌等操作,以及對應的概念說明 docker的基本操作 獲取映象 執行 啟動一個容器 容器內的一些操作 停止執行中的容器 檢視執行的日

Linux基本指令快捷鍵(二)

實用指令 指定執行級別 執行級別說明: 0:關機 1:單使用者【找回丟失密碼】 2:多使用者狀態沒有網路服務 3:多使用者狀態有網路服務 4:系統未使用保留給使用者 5:圖形介面 6:系統重啟 常用執行級別是3、5,要修改預設的執行級別可改檔案  /e

組合語言之第五章至第八章知識彙總 組合語言之第五章【BX】loop指令 組合語言之第六章包含多個段的程式 組合語言之第七章更靈活的定位記憶體地址的方法 彙編實驗之第八章資料處理的兩個基本問題

      組合語言之第五章【BX】和loop指令   一:【bx】   【bx】和之前用過的【0】有些類似,都是表示記憶體單元,而它的偏移地址在bx中。段地址預設在ds中   描述一個記憶體單元 需要知道,1記憶體單元的地址,

docker基本操作docker映象中安裝自己的程式執行

1,背景   虛擬機器系統:centos 72,關閉防火牆,這裡使用臨時關閉:   setenforce 0   (永久關閉:修改/etc/sysconfig/selinux檔案,將SELINUX的值設定為disabled。)3,啟動docker服務   service do