1. 程式人生 > 其它 >Ubuntu下docker教程安裝

Ubuntu下docker教程安裝

0. Docker簡介

0.0 什麼是Docker

Docker 是一個開源專案,為開發者和系統管理員提供了一個開放的平臺,在任何地方通過打包和執行應用程式作為一個輕量級的容器。Docker 在軟體容器內自動部署應用程式。Docker 最開始由 Solomon Hykes 作為 dotCloud 一個內部開發專案,一個企業級的 PaaS (platform as a service 服務平臺),該軟體現在由 Docker 社群和 Docker 公司維護,更多 Docker 資訊你可以訪問:https://docs.docker.com/。

0.1 關於 Docker 再多瞭解一些

Docker Images

Docker image 是 Docker container 最基本的模板。image 通用容器使系統和應用易於安裝,Docker image 是用來執行的容器,你可以找到許多 images (多種作業系統和軟體已經被安裝好了的 Docker)在這裡 https://hub.docker.com/.

Docker Container

Docker 容器(Docker Container)是一個 Image,在執行的 Docker image 上讀取和寫入。Docker 是一個聯合的檔案系統作為容器後臺,容器的任何變化,都將被儲存在一個基本 image 新的層上。我們安裝應用程式的層就是容器。每個在主機機上執行的容器都是獨立的,因此,提供了一個安全的應用平臺。

Docker Registry

Docker registry 是為 Docker images 提供的庫。它提供了公共和私有庫。公共 Docker 庫被叫做 Docker Hub。這裡我們能夠上傳 push 和 pull 我們自己的 images.

1. 在Ubuntu18.04上安裝Docker

執行如下命令:

sudo apt install docker.io

等待安裝完成後,可以使用systemctrl命令啟動和使能docker。

systemctl start docker
systemctl enable docker

可以使用

docker --version

命令檢視docker版本

我在2021年7月份安裝的docker版本是20.10.2。

2.初步使用docker

2.0 Hello-world

任何程式都是從Hello-world開始學習,用於驗證環境的正確性,我們來看一下docker裡面怎麼執行hello-world。
為了將docker作為普通/非root使用者執行,我們需要新增一個新的系統使用者。 我們將新增名為'spy_docker'的新使用者,然後將其新增到'docker'組中。

useradd -m -s /bin/bash spy_docker
passwd spy_docker

將spy_docker新增到docker組:

usermod -aG docker spy_docker

現在以“spy_docker”使用者身份登入並執行docker命令。

su - spy_docker
docker run hello-world

可以看出來執行結果正確:

從docker本地庫裡找不到hello-world然後從網上下載了hello-world庫,並執行正確。

2.1 基本使用

2.1.1 下載映象

在本節中我們展示docker的常用命令選項,例如如下下載映象,構建容器以及訪問容器。
建立新的容器,選擇一個基本映像和作業系統,例如我們建立Ubuntu映象。可以使用docker搜尋命令:

docker search ubuntu

該命令可以顯示出來所有Ubuntu映象

可以使用pull命令將基本映象下載到本地:

docker pull ubuntu


由於我之前下載過,所以該過程很快完成。
我們可以使用docker image命令顯示本地已有的映象:

docker images

2.1.2 建立和執行容器

可以使用docker create來建立容器。
docker create命令的官方文件見如下連結:
docker create命令文件
比較簡單的可以採取預設引數建立容器:

docker create --name my_ubuntu_1804 ubuntu:18.04


使用該命令建立了一個名字叫my_ubuntu_1804的容器,使用ubuntu:18.04映象,即18.04版本的ubuntu映象。
可以看出來在沒有該映象時,docker會線上下載,然後使用該映象。
由於某競賽要求用單核單執行緒1GHz的CPU和256M記憶體來執行測試程式,所以使用額外引數,建立資源受限的容器。
記憶體容易限制,從文件可以看出,用--memory或者-m指定容器可用記憶體,但是CPU的話,單核單執行緒1GHz,引數都要指定。
使用docker info命令可以檢視系統配置中有4個CPU核心可以用。可以使用--cpuset-cpus引數設定指定運行於哪些cpu之上,關於cpu的限制設定引數,列表如下:

選項 描述
--cpuset-cpus="" 允許使用的 CPU 集,值可以為 0-3,0,1
-c,--cpu-shares=0 CPU 共享權值(相對權重)
--cpu-period=0 限制 CPU CFS 的週期,範圍從 100ms~1s,即[1000, 1000000]
--cpu-quota=0 限制 CPU CFS 配額,必須不小於1ms,即 >= 1000
--cpuset-mems="" 允許在上執行的記憶體節點(MEMs),只對 NUMA 系統有效
docker create --name my_sjms_docker -m 256M --cpuset-cpus="0" --cpu-period=1000 --cpu-quota=1000 ubuntu:18.04

該命令使用ubuntu18.04映象,建立一個名字為my_sjms_docker,記憶體為256m,只使用第一個CPU,排程週期為1ms,每個週期最多排程時間1ms(不知道是不是等價於1Ghz)。

給孤獨的理想插上自由的翅膀