如何開始docker - docker架構及創建容器

2020-12-13 linux運維菜

安裝docker很簡單,啟動服務以後要怎麼開始使用呢?

docker架構

傳統的虛擬機架構是 物理機 -> 宿主機作業系統 -> Hypervisor支持 -> 虛擬機作業系統 -> 應用程式

docker架構是 物理機 -> 宿主機作業系統 -> docker引擎 -> 應用程式(這裡面會包含鏡像作業系統的文件,但是這些只是依賴環境,裡面的內核根本就不會啟動,/boot目錄可以直接刪除掉)

因此相對與傳統的虛擬機的架構,docker顯得很輕量級。

docker的組成

docker是採用C/S模式,使用遠程API來管理創建docker。

容器的創建過程: 鏡像倉庫 ->pull 鏡像到本地 -> 本地鏡像 -> run容器 from 鏡像 -> 創建容器並執行程序->程序退出->容器退出

1、dockerd服務端(守護進程),dockerd是docker的守護進程。

在CentOS7上使用systemd管理服務即可。

啟動服務

systemctl start docker

停止服務

systemctl stop docker

重啟服務

systemctl restart docker

設置開機啟動

systemctl enable docker

2、docker客戶端

docker這個命令就是docker的客戶端,當然也有其他工具,但是這個工具基本已經 可以完成所有的工具,如果需要做自動化,可以調用這個命令,也可以使用其他的SDK工具。

docker version Client:Version: 18.09.2 API version: 1.39 Go version: go1.10.6 Git commit: 6247962 Built: Sun Feb 10 04:13:27 2019 OS/Arch: linux/amd64 Experimental: falseServer: Docker Engine - Community Engine: Version: 18.09.2 API version: 1.39 (minimum version 1.12) Go version: go1.10.6 Git commit: 6247962 Built: Sun Feb 10 03:47:25 2019 OS/Arch: linux/amd64 Experimental: false

這個工具默認是通過/var/run/docker.sock連接到dockerd服務進行操作的。

3、鏡像及倉庫

要運行容器就需要鏡像,當然也可以自己創建一個鏡像,但是比較麻煩,所以最快的方式就是從鏡像倉庫裡面直接pull鏡像下載直接運行就可以了。

下載鏡像

默認是從docker官方鏡像下載,但是速度相對比較慢,阿里雲有提供對應的鏡像服務,但是需要另外的設置,登錄阿里雲,控制臺 -> 產品與服務 -> 容器鏡像服務(點擊進入之後) -> 鏡像加速服務,操作文檔找到對應系統的,操作命令,直接複製運行既可以了。

docker pull centos:latest

查看本地鏡像

docker images

創建容器

docker run -itd centos7

查看運行中的容器

docker ps

進入容器操作

docker exec -it [容器ID] /bin/bash

進入容器之後,就有了一個新的CentOS7的環境,可以在裡面安裝對應的應用程式,不會跟宿主機上的環境衝突。

相關焦點

  • 雲計算核心技術Docker教程:Docker容器使用
    $ docker restart <容器 ID>在使用 -d 參數時,容器啟動後會進入後臺。此時想要進入容器,可以通過以下指令進入:docker attachdocker exec:推薦大家使用 docker exec 命令,因為此退出容器終端,不會導致容器的停止。如果要導出本地某個容器,可以使用 docker export 命令。
  • 【Docker】系列教程02-操作Docker容器
    本章帶大家學習容器相關的重要操作,包括創建容器、啟動容器、終止容器、進入容器後執行操作、刪除容器及通過導入導出容器實現容器遷移、容器與宿主機之間數據拷貝等。例如,啟動剛剛創建的ubuntu容器:[root@qll251 ~]# docker start eebeebeeb為剛剛創建容器的ID簡寫,此時通過docker ps查詢容器已運行:
  • Docker系列教程02-操作Docker容器
    本章帶大家學習容器相關的重要操作,包括創建容器、啟動容器、終止容器、進入容器後執行操作、刪除容器及通過導入導出容器實現容器遷移、容器與宿主機之間數據拷貝等。1、創建容器1)新建容器語法格式:docker create 語法例如:[
  • Docker 容器的網絡
    如果你通過 Docker 提供的用戶指南,你應該已經完成了構建你的第一個 Docker 容器,並且運行了示例應用。你已經構建了你自己的鏡像(images)。本部分的內容將會指導你如何對你的容器進行網絡配置。
  • docker容器的啟動方式
    容器(Container):  容器,從認識上來說,就是類創建的實例,就是依據鏡像這個模板創建出來的實體。容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立的命名空間。因此容器可以擁有自己的root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶ID 空間。
  • 用docker命令創建一個容器以及容器的暫停和恢復
    docker命令創建一個容器docker創建容器的命令是create,用法和run類似。例如:docker create --name newnginx nginx:latest,這句命令的意思是使用nginx的鏡像來創建一個名叫newnginx的容器。
  • 攻擊和審計Docker容器01
    Docker容器鏡像是一個輕量級,獨立的可執行軟體包,包含運行應用程式所需的一切:代碼,運行時,系統工具,系統庫和設置。容器鏡像在運行時成為容器,在Docker容器的情況下- 鏡像在Docker Engine上運行時成為容器。適用於基於Linux和Windows的應用程式,無論基礎架構如何,容器化軟體都將始終運行相同。容器將軟體與其環境隔離開來,並確保它可以統一工作,儘管開發和演示之間存在差異。
  • 理解docker鏡像與容器
    docker有兩個重要的概念:鏡像,容器。生成的鏡像ID為769951131a6a,使用docker images查看使用docker history命令查看創建了那些鏡像層一個鏡像可以被重複利用創建新的鏡像,這會使得鏡像可以被高效的存儲和創建。2.容器下面介紹一下創建一個容器的過程。
  • docker鏡像及容器命令
    鏡像列表基本狀態解析各個選項說明:- **REPOSITORY:**表示鏡像的倉庫源- **TAG:**鏡像的標籤- **IMAGE ID:**鏡像ID- **CREATED:**鏡像創建時間運行容器docker run <容器名>3. 查看容器列表docker ps -a4.
  • Docker容器的三種創建運行方式,一個比一個好用
    現在的項目部署運維中,使用Docker容器越來越多,Docker給我們提供創建容器的方式也有好幾種,主要是docker run命令、Dockerfile文件、docker-compose三種方式,一個比一個方便。我們來看下有幾種方式的具體用法吧。
  • 雲計算核心技術Docker教程:Docker鏡像使用
    1、從已經創建的容器中更新鏡像,並且提交這個鏡像2、使用 Dockerfile 指令來創建一個新的鏡像更新鏡像之前,我們需要使用鏡像來創建一個容器。此時 ID 為 e218edb10161 的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit 來提交容器副本。
  • 如何使用Elasticsearch和cAdvisor監控Docker容器
    容器數量與連接在 docker0 和 docker_gwbridge 上的虛擬網卡數量不一致(LCTT 譯註:當 docker 啟動時,它會在宿主機器上創建一個名為 docker0 的虛擬網絡接口)。 開啟和關閉 Swarm 節點。 收集併集中處理日誌。
  • 容器到底是個啥?(附Docker學習資源匯總)
    (4)鼓勵使用面向服務的架構Docker還鼓勵面向服務的架構和微服務架構。在用docker run命令的時候,使用-V標記可以在容器內創建一個數據卷。多次重複使用-v標記可以創建多個數據卷。如果用戶需要在多個容器之間共享一些持續更新的數據,最簡單的方式是使用數據卷容器。
  • Docker集群管理之Docker Compose
    前言:在上一篇《Docker集群管理之Docker Machine》中,我們通過源碼分析了解了Docker Machine的工作原理,使用者可以通過Docker Machine的一條命令在任意支持的平臺創建一個Docker主機,並能集中管理這些主機。Docker主機創建好之後,接下來就該考慮Docker容器部署的問題了。
  • Docker+Kubernetes是容器創建與編排調度的利器
    部署虛擬伺服器的目的之一在於快速創建新的虛擬機實例。然而從網絡存儲當中複製鏡像需要花費大量時間,這些操作會延長啟動過程,無疑會限制系統靈活性。因此我們可以選擇使用容器技術,只需要通過簡單的觀察我們便能夠發現容器技術的出現是為了解決多作業系統/應用程式堆棧的問題。
  • 誰是容器中的「戰鬥機」?Docker與Chef、LXC等容器對比
    Docker vs LXC 英文原文(By Joe McWilliams)/ 譯者:鐵威 / 原載:Docker中文社區 我關注 docker 有一段時間了,最近開始討論在公司使用,因為小夥伴們想使用 LXC ,也就是 docker 背後的那個技術。
  • 通過容器化一個Python Web應用學習Docker容器技術
    但是我們使用過程中經常會遇到這樣兩個問題:這正是Docker Volume要解決的問題:Volume機制,允許你將宿主機上指定的目錄,掛載到容器裡面進行讀取和修改。通過-vdocker ps -a的輸出結果,一共包含7列數據,分別是CONTAINER ID、IMAGE、COMMAND、CREATED、STATUS、PORTS和NAMES。
  • docker的/var/run/docker.sock參數
    歡迎訪問我的GitHub這裡分類和匯總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos關於/var/run/docker.sock參數在創建docker容器時,有時會用到/var/run/docker.sock這樣的數據卷參數,例如以下docker-compose.yml
  • 使用Docker客戶端管理容器:這些命令必須知道
    【IT168 編譯】有時候,容器管理對於不熟悉這種技術的IT人員來說可能有點「可怕」。筆者希望通過這篇文章向大家解釋我們能夠如何管理和執行一些涉及容器管理的任務,使這個主題更清晰。
  • Docker入門知識|Docker資源容器 與 VM虛擬機的區別與聯繫
    也許很多朋友一開始只希望用這個cgroup來實行作業系統層面資源隔離,從而形成linux系統下多用戶使用中的資源安全。可是GO語言出來之後,喜歡嘗鮮的程式設計師,用GO寫出了docker這大型工具。GO的新生面孔與Docker強大未來前途,一下子把高密度運算帶到了一個新高度。其實在c語言中的Namespaces是不是在Cgroup面前有點似曾相識的味道?