Linux(CentOS7)安裝Docker,鏡像拉取、使用及常用操作


 一、簡介

  Docker是一個開源的應用容器引擎;是一個輕量級容器技術; Docker支持將軟件編譯成一個鏡像;然后在鏡像中各種軟件做好配置,將鏡像發布出去,其他使用者可以直接使 用這個鏡像; 運行中的這個鏡像稱為容器,容器啟動是非常快速的。

  Docker從1.13版本之后采用時間線的方式作為版本號,分為社區版CE和企業版EE。社區版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、插件等。社區版按照stable和edge兩種方式發布,每個季度更新stable版本,如17.06,17.09;每個月份更新edge版本,如17.09,17.10。

二、核心概念

  docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統之上); docker客戶端(Client):連接docker主機進行操作; docker倉庫(Registry):用來保存各種打包好的軟件鏡像; docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中; docker容器(Container):鏡像啟動后的實例稱為一個容器;容器是獨立運行的一個或一組應用

 

 

 

 使用Docker的步驟:
1)、安裝Docker
2)、去Docker倉庫找到這個軟件對應的鏡像;
3)、使用Docker運行這個鏡像,這個鏡像就會生成一個Docker容器;
4)、對容器的啟動停止就是對軟件的啟動停止;

三、安裝docker

1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。

通過 uname -r 命令查看你當前的內核版本

 $ uname -r

2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。

$ sudo yum update

3、卸載舊版本(如果安裝過舊版本的話)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

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

5、設置yum源

//阿里源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
//穩定源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

 

 6、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

$ yum list docker-ce --showduplicates | sort -r

7、安裝docker

$ sudo yum install docker-ce  #由於repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版17.12.0
$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

 

8、啟動Docker並加入開機啟動

$ sudo systemctl start docker
$ sudo systemctl enable docker

9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)

$ docker version

 問題

1、因為之前已經安裝過舊版本的docker,在安裝的時候報錯如下:

Transaction check error:
  file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

2、卸載舊版本的包

$ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

3、再次安裝docker

$ sudo yum install docker-ce

 

四、Docker倉庫

Docker常用命令&操作

1)、鏡像操作

操作 命令 說明
檢索 docker search 關鍵字 eg: docker search redis 我們經常去docker hub上檢索鏡像的詳細信息,如鏡像的TAG。
拉取 docker pull 鏡像名:tag :tag是可選的,tag表示標簽,多為軟件的版本,默認是latest
列表 docker images 查看所有本地鏡像
刪除 docker rmi image-id 刪除指定的本地鏡像

https://hub.docker.com/

搜索對於的鏡像名,可以查看鏡像的TAG

  1. //docker hub地址,如果有特殊需要可以這里查詢版本tag
  2. https: //hub.docker.com/r/library/
     
     
     
     
     
     

1、拉取鏡像,此處舉例httpd,鏡像的ID唯一標識了鏡像,如果ID相同,說明是同一鏡像。TAG信息來區分不同發行版本,如果不指定具體標記,默認使用latest標記信息

  1.  
    //默認下載latest版本
  2.  
    docker pull httpd
  3.  
     
  4.  
    //如果需要特殊版本則加上需要的tag
  5.  
    docker pull redis: 5.0 .5-alpine3 .10
  6.  
     
  7.  
    //docker hub地址,如果有特殊需要可以這里查詢版本tag
  8.  
    https: //hub.docker.com/r/library/

2、查看鏡像,可以發現httpd已經拉取成功

docker images

3、創建一個容器並運行,將容器命名為dockerhttpd ,並把80端口映射到宿主機的8080端口,宿主機的目錄/dockerdata/httpd掛載到容器的/var/www/httpd/

docker run -it -d -p 8080:80 --name dockerhttpd -v /dockerdata/httpd:/var/www/httpd/ httpd

參數說明如下:

    -i:以交互模式運行容器,通常與-t同時使用。
    -t:為容器重新分配一個偽輸入終端,通常與-i同時使用。
    -d:后台運行容器,並返回容器ID。
    -p:端口映射,格式為“宿主機端口:容器端口”。
    --name:為容器指定一個名稱。
    -v:把宿主機上的一個目錄掛載到鏡像里,格式為“宿主機目錄:鏡像內掛載的路徑”,必須為絕對路徑。

五、安裝MySQL示例

docker pull mysql

 錯誤的啟動

  1.  
    [root@localhost ~] # docker run ‐‐name mysql01 ‐d mysql
  2.  
    42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
  3.  
     
  4.  
    mysql退出了
  5.  
    [root@localhost ~] # docker ps ‐a
  6.  
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS PORTS               NAMES
  7.  
    42f09819908b        mysql                "docker‐entrypoint.sh"    34 seconds ago      Exited 
  8.  
    ( 133 seconds ago                            mysql01
  9.  
    538bde63e500        tomcat               "catalina.sh run"        About an hour ago   Exited 
  10.  
    ( 143) About an hour ago                       compassionate_
  11.  
    goldstine
  12.  
    c4f1ac60b3fc        tomcat               "catalina.sh run"        About an hour ago   Exited 
  13.  
    ( 143) About an hour ago                       lonely_fermi
  14.  
    81ec743a5271        tomcat               "catalina.sh run"        About an hour ago   Exited 
  15.  
    ( 143) About an hour ago                       sick_ramanujan
  16.  
     
  17.  
     
  18.  
    //錯誤日志
  19.  
    [root@localhost ~] # docker logs 42f09819908b
  20.  
    error: database  is uninitialized  and password option  is  not specified 
  21.  
      You need to specify one  of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD  and 
  22.  
    MYSQL_RANDOM_ROOT_PASSWORD;這個三個參數必須指定一個

正確的啟動

  1.  
    [root@localhost ~] # docker run ‐‐name mysql01 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
  2.  
    b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
  3.  
    [root@localhost ~] # docker ps
  4.  
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS   
  5.  
               PORTS               NAMES
  6.  
    b874c56bec49        mysql                "docker‐entrypoint.sh"    4 seconds ago       Up  3 
  7.  
    seconds         3306/tcp            mysql01

幾個其他的高級操作

  1.  
    docker run ‐‐name mysql03 ‐v  /conf/ mysql: /etc/mysql/conf.d ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw 
  2.  
    ‐d  mysql:tag
  3.  
    把主機的 /conf/mysql文件夾掛載到 mysqldocker容器的 /etc/mysql/conf.d文件夾里面
  4.  
    改mysql的配置文件就只需要把mysql配置文件放在自定義的文件夾下( /conf/mysql)
  5.  
     
  6.  
    docker run ‐‐name some‐mysql ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw ‐d  mysql:tag ‐‐character‐set‐
  7.  
    server=utf8mb4 ‐‐collation‐server=utf8mb4_unicode_ci
  8.  
    指定mysql的一些配置參數

 

  1.  
    //docker hub地址,如果有特殊需要可以這里查詢版本tag
  2.  
    https: //hub.docker.com/r/library/


免責聲明!

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



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