1. 程式人生 > >【docker學習一】CentOS7.5+Docker安裝及使用「安裝、檢視、pull、建立、進入映象」

【docker學習一】CentOS7.5+Docker安裝及使用「安裝、檢視、pull、建立、進入映象」

記錄安裝配置以及使用的過程,可能會有多處摘抄,已註明照抄地址,侵刪。

 

是什麼:個人理解,是一種移植性很強的虛擬機器,支援版本控制(類似於git),同一個伺服器可以執行多個docker容器,每個docker容器都有一個獨立的虛擬環境。

本人環境:

虛擬機器:Oracle virtualBOX  

版本:cetOS7.5 mimi x64

PC系統:macOS X

 

1、基本概念

摘抄地址:https://yq.aliyun.com/articles/640826?spm=a2c4e.11163080.searchblog.26.4c1d2ec1xDONgS

基本概念主要有三個:

● 映象(Image)
   ● 一個只讀的模板,映象可以用來建立 Docker 容器
   ● 使用者基於映象來執行自己的容器。映象是基於 Union 檔案系統的層式結構
   ● 可以簡單建立或更新現有映象,或者直接下載使用其他人的。可以理解為生成容器的『原始碼』
● 容器(Container)
   ● 容器是從映象建立的執行例項,在啟動的時候建立一層可寫層作為最上層(因為映象是隻讀的)
   ● 可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺


   ● 可以把容器看做是一個簡易版的 Linux 環境(包括root使用者許可權、程序空間、使用者空間和網路空間等)和執行在其中的應用程式
● 倉庫(Registry)
   ● 集中存放映象檔案的場所,可以是公有的,也可以是私有的
   ● 最大的公開倉庫是 Docker Hub
   ● 國內的公開倉庫包括 Docker Pool 等
   ● 當用戶建立了自己的映象之後就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個映象時候,只需要從倉庫上 pull 下來就可以了

   ● Docker 倉庫的概念跟 Git 類似,註冊伺服器可以理解為 GitHub 這樣的託管服務

另外 Docker 採用的是客戶端/伺服器架構,客戶端只需要向 Docker 伺服器或守護程序發出請求即可完成各類操作。那麼問題來了,我們能用 Docker 來做什麼呢?我們可以:

● 統一、優化和加速本地開發和構建流程
● 保證不同的環境中可以得到相同的執行結果
● 建立隔離環境用於測試

Docker 可以提供的隔離有:

● 檔案系統隔離:每個容器都有自己的 root 檔案系統
● 程序隔離:每個容器都執行在自己的程序環境中
● 網路隔離:容器間的虛擬網路介面和 IP 地址都是分開的
● 資源隔離和分組:使用 cgroups 將 CPU 和記憶體之類的資源獨立分配給每個 Docker 容器

tip、centOS7 ip配置

1、檢視網絡卡命令(ifconfig):ip addr 

2、編輯配置檔案

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

3、開啟自動獲取ip修改:ONBOOT=yes

4、重啟網絡卡

systemctl restart network

2、安裝 vim(可選)

yum install vim

3、開始安裝docker

摘抄地址(測試可用)https://www.cnblogs.com/yufeng218/p/8370670.html

1、通過 uname -r 命令檢視你當前的核心版本(必須高於3.10)

2、更新yum源:sudo yum update

3、解除安裝舊版本:sudo yum remove docker docker-common docker-selinux docker-engine

4、依賴包安裝:sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、新增yum源:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、檢視版本庫: yum list docker-ce --showduplicates | sort -r

7、安裝:sudo yum install docker-ce

8、啟動並開機啟動:

sudo systemctl start docker

sudo systemctl enable docker

9、檢視是否安裝成功:docker version

4、使用

1、我申請了一個docker賬號,平時使用無需申請賬號

2、下載一個映象,或者已有的docker映象,可以用來建立容器物件。

我安裝的是centOS7,執行命令:cat /etc/issue 顯示系統為centOS7.5

3、執行完立即關閉容器

執行docker命令:docker run ubuntu echo 'Ubuntu run'

由於本地不存在名為ubuntu的映象,所以系統自動下載了一個,但是上面的命令指示啟動容器後會立即關閉。

4、啟動一個容器

a、存在則執行,不存在則下載:docker run -i -t ubuntu /bin/bash

b、手動下載:

[[email protected] mydc]# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   4722                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              118                                     [OK]
jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86…   99                                      [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   63                                      [OK]

[[email protected] mydc]# docker pull centos/mysql-57-centos7 
Using default tag: latest
latest: Pulling from centos/mysql-57-centos7
256b176beaff: Pull complete 

Digest: sha256:c8a8323721c60a49b1792d31a7892731c741d58c238d77b42f0dcf8d7c32c1b4
Status: Downloaded newer image for centos/mysql-57-centos7:latest
[[email protected] mydc]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
centos/mysql-57-centos7   latest              34300611d53e        9 days ago          445MB
ubuntu                    latest              cd6d8154f1e1        13 days ago         84.1MB

5、exit 退出容器

6、檢視

檢視容器docker ps [-a] [-l]

[[email protected] admin]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
3b89e931a7a7        ubuntu              "/bin/bash"         45 hours ago        Exited (0) 45 hours ago                       stoic_villani
12f34cfcec6d        ubuntu              "echo run"          45 hours ago        Exited (0) 45 hours ago                       stoic_bose
[[email protected] admin]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
3b89e931a7a7        ubuntu              "/bin/bash"         45 hours ago        Exited (0) 45 hours ago                       stoic_villani
[[email protected] admin]# 

檢視映象:

[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              cd6d8154f1e1        13 days ago         84.1MB

7、重新啟動停止的容器docker start [-i] 容器名

詳細命令:https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81044217

8、檢視-進入-啟動-退出

[[email protected] admin]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
3b89e931a7a7        ubuntu              "/bin/bash"         46 hours ago        Exited (0) 46 hours ago                       stoic_villani
12f34cfcec6d        ubuntu              "echo run"          46 hours ago        Exited (0) 46 hours ago                       stoic_bose
[[email protected] admin]# docker start stoic_villani
stoic_villani
[[email protected] admin]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
3b89e931a7a7        ubuntu              "/bin/bash"         46 hours ago        Up 16 seconds                                 stoic_villani
12f34cfcec6d        ubuntu              "echo run"          46 hours ago        Exited (0) 46 hours ago                       stoic_bose
[[email protected] admin]# docker run -t -i stoic_violani /bin/bash
Unable to find image 'stoic_violani:latest' locally
docker: Error response from daemon: pull access denied for stoic_violani, repository does not exist or may require 'docker login'.
See 'docker run --help'.
[[email protected] admin]# docker run -t -i ubuntu /bin/bash
[email protected]:/# pwd
/
[email protected]:/# uname
Linux
[email protected]:/# cat /etc/issue
Ubuntu 18.04.1 LTS \n \l

[email protected]:/# exit
exit
[[email protected] admin]# cat /etc/issue
\S
Kernel \r on an \m

[[email protected] admin]# 

9、自定義建立映象(驗證中)

參考地址:https://blog.csdn.net/rznice/article/details/52211620

[[email protected] mydocker]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
centos/mysql-57-centos7   latest              34300611d53e        9 days ago           445MB
ubuntu                    latest              cd6d8154f1e1        13 days ago          84.1MB
#建立目錄
[[email protected] admin]# mkdir mydocker
#建立映象必要的配置檔案,內容再下面
[[email protected] admin]# touch Dockerfile
[[email protected] mydocker]# ls
Dockerfile
[[email protected] mydocker]# docker build --help
#docker build -t 新映象的名字 -f 自定義配置檔案的目錄(目前在當前目錄) 生成後的映象儲存位置
[[email protected] mydocker]# docker build -t ubuntu_mine -f  Dockerfile  ./

Sending build context to Docker daemon  2.048kB
Successfully built d0ec321b73c6
Successfully tagged ubuntu_mine:latest
#檢視自己建立的映象
[[email protected] mydocker]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
ubuntu_mine               latest              d0ec321b73c6        About a minute ago   84.1MB
centos/mysql-57-centos7   latest              34300611d53e        9 days ago           445MB
ubuntu                    latest              cd6d8154f1e1        13 days ago          84.1MB
[[email protected] mydocker]# 

Dockerfile檔案的內容:

#ubuntu 是我本地存在的映象名稱
FROM ubuntu
#新增作者等描述資訊
MAINTAINER The CentOS Test Images - test
#構建完成執行的命令
RUN mkdir -p /usr/app
RUN ls
RUN pwd
#構建過程中新增環境變數、安裝軟體等其他操作。。。