【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
#構建過程中新增環境變數、安裝軟體等其他操作。。。