Docker基礎篇之快速上手(2):Docker安裝

Docker安裝

1 基本組成(三要素)

倉庫(repository)

倉庫(Repository)是集中存放鏡像文件的場所。
倉庫(Repository)和倉庫註冊服務器(Registry)是有區別的。倉庫註冊服務器上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標籤(tag)。
倉庫分爲公開倉庫(Public)和私有倉庫(Private)兩種形式。 最大的公開倉庫是 Docker
Hub(https://hub.docker.com/), 存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括阿里雲 、網易雲 等

鏡像(image)

Docker 鏡像(Image)就是一個只讀的模板。鏡像可以用來創建 Docker 容器,一個鏡像可以創建很多容器。

容器(container)

Docker 利用容器(Container)獨立運行的一個或一組應用。容器是用鏡像創建的運行實例。
它可以被啓動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。 可以把容器看做是一個簡易版的 Linux
環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。
容器的定義和鏡像幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的。

2 準備工作:

更新內核和yum庫

yum update -y (y代表yes,即是一切提示都確認通過)

1.查看系統內核版本(必須是3.10以上)

uname -r

2.安裝所需的依賴軟件包

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
在這裏插入圖片描述
由於已經更新過內核和yum庫,此處已經安裝過最新版本,該操作是爲了測試是否已經成功安裝。
3.設置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

使用以上命令設置穩定存儲庫。 您始終需要穩定的存儲庫,即使您也想從邊緣或測試存儲庫安裝構建。

3 安裝&啓動docker

1.安裝docker

yum install -y docker

2.啓動並設置爲開機啓動docker

systemctl start docker
systemctl enable docker

3.查看docker版本,確認是否安裝成功

docker --version

4.登錄阿里雲-》產品與服務-》容器鏡像服務-》鏡像加速器
在這裏插入圖片描述
按黑色部分配置或者

5.配置docker鏡像加速器
在這裏插入圖片描述

6.停止docker

systemctl stop docker

4 常用操作

1)鏡像操作

操作 命令 說明
檢索 docker search 關鍵字 去docker hub上檢索鏡像,如鏡像的tag
拉取 docker pull 鏡像名:tag :tag是可選的,tag表示標籤,多爲軟件的版本,默認是latest
列表 docker images 查看所有本地鏡像
刪除 docker rmi image-id 刪除指定的本地鏡像

2)容器操作

操作 命令 說明
運行 docker run --name container-name -d image-name –name:自定義容器名
-d:後臺運行
image-name:指定鏡像模板
列表 docker ps(查看運行中的容器) 加上-a可以查看所有容器
停止 docker stop container-name/container-id 停止當前你運行的容器
啓動 docker start container-name/container-id 啓動容器
刪除 ddocker rm container-id 刪除指定容器
端口映射 -p 6379:6379
eg:docker run -d -p6379:6379 --name myredis docker:io/redis
-p:主機端口(映射到)容器內部的端口
容器日誌 docker logs container-name/container-id
在運行的容器中執行命令 docker exec -it containerId /bin/bash
進入後查看用cat
doker exec containerId 命令(eg:java -version)

端口測試時可能由於防火牆問題不能訪問,本人沒遇到

service firewalld status 查看防火牆狀態

service firewalld stop 關閉防火牆

3)輔助命令

docker --help

docker -version

docker info

查看容器日誌,mysql容器創建時沒有指定初始值密碼會報如下錯,此時查看容器日誌可以分析得到

[root@localhost local]# docker logs 84c3f5077053
error: database is uninitialized and password option is not specified
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD

docker logs containerId

安裝jenkins時,由於掛載目錄卷用戶爲root,而jenkins用戶爲jenkins會出現如下錯誤
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied

解決方案:sudo chown -R 1000 絕對路徑

5.在docker容器上安裝*************等等

下圖ribbitmq錯誤,應該爲rabbitmq!!!
在這裏插入圖片描述
知識點總結:
鏡像和容器的關係,就像類和對象的關係類似

1.查找

docker search tomcat

2.從鏡像倉庫中拉取

docker pull tomcat:8

3.查看已經獲取的鏡像

docker images

4.列出所有正在運行的容器

docker ps -a

-a :顯示所有的容器,包括未運行的。

5.刪除容器

docker rm containerId

6.刪除鏡像

docker rmi imageId

7.創建並運行容器
tomcat8:

docker run -d --name tomcat1 -p 9000:8080 78b258e36eed

-d :後臺運行容器
–name:容器名字
9000:通知服務器(虛擬機)的端口,對外暴露
8080:tomcat對外暴露的端口
78b258e36eed:tomcat鏡像id

mysql:

docker run -d --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123 a876cc5d29e4

-e:環境變量
MYSQL_ROOT_PASSWORD=abc123:密碼
a876cc5d29e4 :鏡像id

8.啓動一個或多個已經被停止的容器

docker start containerId

6.容器數據卷

能幹嘛

容器的持久化和容器之間繼承+共享數據

數據卷

如何添加?

1.直接-v命令添加

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名

只讀:

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名

和redis的rdp和aop類似,主機修改後,容器也會同步

可以用docker inspect命令查看是否掛載成功

2.使用Dockerfile

鏡像的腳本文件,類似於linux的shell編程

docker build -f 絕對路徑 -t 鏡像名稱 .

數據卷容器

拓展:子容器繼承父容器,數據共享

容器之間配置信息的傳遞,數據卷的生命週期一直持續到沒有容器使用他爲止

命名的容器掛載數據卷,其他容器通過掛載這個(父容器)實現數據共享,掛載數據卷的容器,稱之爲數據卷容器

docker run -it --name dc02 --volumes-from zzyy/centos

7.構建鏡像

1.通過docker commit命令 容器方式構建

2.通過docker build命令 Dockerfile文件方式構建

大致流程

  1. docker從基礎鏡像運行一個容器(FROM)
  2. 執行一條指令並對容器進行修改
  3. 執行類似docker commit的操作提交一個新的鏡像層(ADD)
  4. docker再基於剛提交的鏡像運行一個新容器
  5. 執行dockerfile中的下一條指令直到所有指令都執行完成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章