記錄安裝配置以及使用的過程,可能會有多處摘抄,已注明照抄地址,侵刪。
是什么:個人理解,是一種移植性很強的虛擬機,支持版本控制(類似於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、手動下載:
[root@localhost 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]
[root@localhost 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
[root@localhost 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]
[root@localhost 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
[root@localhost 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
[root@localhost admin]#
查看鏡像:
[root@localhost ~]# 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、查看-進入-啟動-退出
[root@localhost 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
[root@localhost admin]# docker start stoic_villani
stoic_villani
[root@localhost 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
[root@localhost 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'.
[root@localhost admin]# docker run -t -i ubuntu /bin/bash
root@b5c0cd216bed:/# pwd
/
root@b5c0cd216bed:/# uname
Linux
root@b5c0cd216bed:/# cat /etc/issue
Ubuntu 18.04.1 LTS \n \l
root@b5c0cd216bed:/# exit
exit
[root@localhost admin]# cat /etc/issue
\S
Kernel \r on an \m
[root@localhost admin]#
9、自定義創建鏡像(驗證中)
參考地址:https://blog.csdn.net/rznice/article/details/52211620
[root@localhost 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
#創建目錄
[root@localhost admin]# mkdir mydocker
#創建鏡像必要的配置文件,內容再下面
[root@localhost admin]# touch Dockerfile
[root@localhost mydocker]# ls
Dockerfile
[root@localhost mydocker]# docker build --help
#docker build -t 新鏡像的名字 -f 自定義配置文件的目錄(目前在當前目錄) 生成后的鏡像存儲位置
[root@localhost mydocker]# docker build -t ubuntu_mine -f Dockerfile ./
Sending build context to Docker daemon 2.048kB
Successfully built d0ec321b73c6
Successfully tagged ubuntu_mine:latest
#查看自己創建的鏡像
[root@localhost 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
[root@localhost mydocker]#
Dockerfile文件的內容:
#ubuntu 是我本地存在的鏡像名稱
FROM ubuntu
#添加作者等描述信息
MAINTAINER The CentOS Test Images - test
#構建完成執行的命令
RUN mkdir -p /usr/app
RUN ls
RUN pwd
#構建過程中添加環境變量、安裝軟件等其他操作。。。
================================================================================
實踐:
docker ps
docker exec -it XXXXX(container ID) /bin/bash