【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、手動下載:

[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM