Ubuntu中Docker安裝+docker常用命令

原文地址:https://www.cnblogs.com/zhuyunbk/p/11661033.html

1. 在Ubuntu中安裝Docker

更新ubuntu的apt源索引
sudo apt-get update
安裝包允許apt通過HTTPS使用倉庫
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
設置Docker穩定版倉庫

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) 
stable"

添加倉庫後,更新apt源索引
sudo apt-get update
安裝最新版Docker CE(社區版),不需要社區版直接去掉-ce就好了。
sudo apt-get install docker-ce
當然也可以安裝yum,然後再用yum安裝docker

安裝yum要確保安裝build-essential包
sudo apt-get install build-essential
sudo apt-get install yum
sudo yum install docker

yum和docker區別:yum和docker區別
檢查Docker CE是否安裝正確
sudo docker run hello-world
出現如下信息,表示安裝成功
 在這裏插入圖片描述
docker info查看docker存儲位置
爲了避免每次命令都輸入sudo,可以設置用戶權限,注意執行後須註銷重新登錄

sudo usermod -a -G docker $USER

2. 啓動與停止

安裝完成Docker後,默認已經啓動了docker服務,如需手動控制docker服務的啓停,可執行如下命令

  • 啓動docker
    sudo service docker start
  • 停止docker
    sudo service docker stop
  • 重啓docker
    sudo service docker restart
  • 設置開機自啓動
    systemctl enable docker

3. Docker鏡像操作

  • 什麼是Docker鏡像
      Docker 鏡像是由文件系統疊加而成(是一種文件的存儲形式)。最底端是一個文件引 導系統,即 bootfs,這很像典型的 Linux/Unix 的引導文件系統。Docker 用戶幾乎永遠不會和 引導系統有什麼交互。實際上,當一個容器啓動後,它將會被移動到內存中,而引導文件系 統則會被卸載,以留出更多的內存供磁盤鏡像使用。Docker容器啓動是需要一些文件的, 而這些文件就可以稱爲 Docker.
     在這裏插入圖片描述
     Docker 把應用程序及其依賴,打包在 image 文件裏面。只有通過這個文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根據 image 文件生成容器的實例。同一個 image 文件,可以生成多個同時運行的容器實例。

image 是二進制文件。實際開發中,一個 image 文件往往通過繼承另一個 image 文件,加上一些個性化設置而生成。舉例來說,你可以在 Ubuntu 的 image 基礎上,往裏面加入 Apache 服務器,形成你的 image。

image 文件是通用的,一臺機器的 image 文件拷貝到另一臺機器,照樣可以使用。一般來說,爲了節省時間,我們應該儘量使用別人製作好的 image 文件,而不是自己製作。即使要定製,也應該基於別人的 image 文件進行加工,而不是從零開始製作。
 爲了方便共享,image 文件製作完成後,可以上傳到網上的倉庫。Docker 的官方倉庫 Docker Hub 是最重要、最常用的 image 倉庫。此外,出售自己製作的 image 文件也是可以的。
列出鏡像
docker image ls
在這裏插入圖片描述

  • REPOSITORY:鏡像所在的倉庫名稱
  • TAG:鏡像標籤
  • IMAGEID:鏡像ID
  • CREATED:鏡像的創建日期(不是獲取該鏡像的日期)
  • SIZE:鏡像大小
     爲了區分同一個倉庫下的不同鏡像,Docker 提供了一種稱爲標籤(Tag)的功能。每個 鏡像在列出來時都帶有一個標籤,例如latest、 12.10、12.04 等等。每個標籤對組成特定鏡像的一 些鏡像層進行標記(比如,標籤 12.04 就是對所有 Ubuntu12.04 鏡像層的標記)。這種機制 使得同一個倉庫中可以存儲多個鏡像。— 版本號

我們在運行同一個倉庫中的不同鏡像時,可以通過在倉庫名後面加上一個冒號和標籤名 來指定該倉庫中的某一具體的鏡像,例如

docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash

表明從鏡像 Ubuntu:12.04 啓動一個容器,而這個鏡像的操 作系統就是 Ubuntu:12.04。在構建容器時指定倉庫的標籤也是一個好習慣。

  • 拉取鏡像
      Docker維護了鏡像倉庫,分爲共有和私有兩種,共有的官方倉庫Docker Hub(https://hub.docker.com/)是最重要最常用的鏡像倉庫。私有倉庫(Private Registry)是開發者或者企業自建的鏡像存儲庫,通常用來保存企業 內部的 Docker 鏡像,用於內部開發流程和產品的發佈、版本控制。

要想獲取某個鏡像,我們可以使用pull命令,從倉庫中拉取鏡像到本地,如
docker image pull library/hello-world
 上面代碼中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在倉庫裏面的位置,其中library是 image 文件所在的組,hello-world是 image 文件的名字。
  由於 Docker 官方提供的 image 文件,都放在library組裏面,所以它的是默認組,可以省略。因此,上面的命令可以寫成下面這樣。
docker image pull hello-world

  • 刪除鏡像
docker image rm 鏡像名或鏡像id

docker image rm hello-world

4. Docker 容器操作

  • 創建容器
    docker run [option] 鏡像名 [向啓動容器中傳入的命令]

常用可選參數說明:
-i 表示以“交互模式”運行容器
-t 表示容器啓動後會進入其命令行。加入這兩個參數後,容器創建就能登錄進去。即 分配一個僞終端。
–name 爲創建的容器命名
-v 表示目錄映射關係(前者是宿主機目錄,後者是映射到宿主機上的目錄,即 宿主機目錄:容器中目錄),可以使 用多個-v 做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然後 共享到容器上。
-d 在run後面加上-d參數,則會創建一個守護式容器在後臺運行(這樣創建容器後不 會自動登錄容器,如果只加-i -t 兩個參數,創建後就會自動進去容器)。
-p 表示端口映射,前者是宿主機端口,後者是容器內的映射端口。可以使用多個-p 做多個端口映射
-e 爲容器設置環境變量
–network=host 表示將主機的網絡環境映射到容器中,容器的網絡與主機相同

  • 交互式容器

例如,創建一個交互式容器,並命名爲myubuntu

docker run -it --name=myubuntu ubuntu /bin/bash

在容器中可以隨意執行linux命令,就是一個ubuntu的環境,當執行exit命令退出時,該容器也隨之停止。

  • 守護式容器

創建一個守護式容器:如果對於一個需要長期運行的容器來說,我們可以創建一個守護式容器。在容器內部exit退出時,容器也不會停止。
docker run -dit --name=myubuntu2 ubuntu

  • 進入已運行的容器

docker exec -it容器名或容器id 進入後執行的第一個命令

docker exec -it myubuntu2 /bin/bash
  • 查看容器

列出本機正在運行的容器
docker container ls
列出本機所有容器,包括已經終止運行的
docker container ls --all
停止與啓動容器
停止一個已經在運行的容器
docker container stop 容器名或容器id
啓動一個已經停止的容器
docker container start 容器名或容器id
kill掉一個已經在運行的容器
docker container kill 容器名或容器id
刪除容器
docker container rm 容器名或容器id

5. 將容器保存爲鏡像

我們可以通過如下命令將容器保存爲鏡像
docker commit 容器名 鏡像名

6. 鏡像備份與遷移

我們可以通過save命令將鏡像打包成文件,拷貝給別人使用
docker save -o 保存的文件名 鏡像名
如:

docker save -o ./ubuntu.tar ubuntu

在拿到鏡像文件後,可以通過load方法,將鏡像加載到本地

docker load -i ./ubuntu.tar

7.配置docker官方加速

1、可以使用一下命令直接從該鏡像加速地址進行拉取(方法一):

$ docker pull registry.docker-cn.com/library/ubuntu:16.04

缺點是每次拉取都需要加速地址。
2、永久性加速
在/etc/docker文件夾下創建daemon.json文件,默認次文件夾是不存在的,執行下邊這句話進行創建:

vi /etc/docker/daemon.json

然後將官方加速器(下邊鍵值)加入到daemon.json中。

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

注意:如果不能創建文件以及寫入內容,這是因爲可能權限不夠,代碼前面加上sudo即可.
最後重啓docker服務

service docker restart

國內鏡像地址:

#網易
http://hub-mirror.c.163.com
#ustc
https://docker.mirrors.ustc.edu.cn

此部分來源:Ubuntu配置Docker加速(官方)

8.docker logs-查看docker容器日誌

通過docker logs命令可以查看容器的日誌。
docker logs -f -t --tail 100 datacenter

命令格式:

$ docker logs [OPTIONS] CONTAINER
  Options:
        --details        顯示更多的信息
    -f, --follow         跟蹤實時日誌
        --since string   顯示自某個timestamp之後的日誌,或相對時間,如42m(即42分鐘)
        --tail string    從日誌末尾顯示多少行日誌, 默認是all
    -t, --timestamps     顯示時間戳
        --until string   顯示自某個timestamp之前的日誌,或相對時間,如42m(即42分鐘)

例子:

查看指定時間後的日誌,只顯示最後100行:
docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
查看最近30分鐘的日誌:
docker logs --since 30m CONTAINER_ID
查看某時間之後的日誌:
docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
查看某時間段日誌:
docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

注意:使用 docker ps命令查看CONTAINER_ID[容器ID]
此部分來源於:從敲下docker logs開始理解docker日誌原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章