注冊用戶即可下載全站資源 關注Java幫幫微信公眾號
 

阿里云CentOS 7上安裝配置Docker

4
發表時間:2018-11-08 14:16來源:Java幫幫-微信公眾號

日本韩国三级aⅴ在线观看Docker 是一個開源工具,它可以讓創建和管理 Linux 容器變得簡單。容器就像是輕量級的虛擬機,并且可以以毫秒級的速度來啟動或停止。Docker 幫助系統管理員和程序員在容器中開發應用程序,并且可以擴展到成千上萬的節點。



這是一只鯨魚,它托著許多集裝箱。我們可以把宿主機可當做這只鯨魚,把相互隔離的容器可看成集裝箱,每個集裝箱中都包含自己的應用程序。

Docker與傳統虛擬區別

日本韩国三级aⅴ在线观看傳統虛擬化技術的體系架構:


Docker技術的體系架構:


容器和 VM(虛擬機)的主要區別是:

  • 容器提供了基于進程的隔離,而虛擬機提供了資源的完全隔離。

  • 日本韩国三级aⅴ在线观看虛擬機可能需要一分鐘來啟動,而容器只需要一秒鐘或更短。

  • 容器使用宿主操作系統的內核,而虛擬機使用獨立的內核。

Doker 平臺的基本構成


日本韩国三级aⅴ在线观看Docker 平臺基本上由三部分組成:

  • 客戶端:用戶使用 Docker 提供的工具(CLI 以及 API 等)來構建,上傳鏡像并發布命令來創建和啟動容器

  • 日本韩国三级aⅴ在线观看Docker 主機:從 Docker registry 上下載鏡像并啟動容器

  • Docker registry:Docker 鏡像倉庫,用于保存鏡像,并提供鏡像上傳和下載

  • 后面的文章會具體分析。

Docker 容器的狀態機

日本韩国三级aⅴ在线观看一個容器在某個時刻可能處于以下幾種狀態之一:

  • created:已經被創建 (使用 docker ps -a 命令可以列出)但是還沒有被啟動 (使用 docker ps 命令還無法列出)

  • running:運行中

  • paused:容器的進程被暫停了

  • restarting:容器的進程正在重啟過程中

  • 日本韩国三级aⅴ在线观看exited:上圖中的 stopped 狀態,表示容器之前運行過但是現在處于停止狀態(要區別于 created 狀態,它是指一個新創出的尚未運行過的容器)。可以通過 start 命令使其重新進入 running 狀態

  • 日本韩国三级aⅴ在线观看destroyed:容器被刪除了,再也不存在了

Docker 的安裝

日本韩国三级aⅴ在线观看RedHat/CentOS必須要6.6版本以上,或者7.x才能安裝docker,建議在RedHat/CentOS 7上使用docker,因為RedHat/CentOS 7的內核升級到了kernel 3.10,對lxc容器支持更好。

查看Linux內核版本(內核版本必須是3.10或者以上):

cat /proc/versionuname -alsb_release -a##無法執行命令安裝yum install -y redhat-lsb

更新YUM源:

yum update

安裝:

yum  install docker -y

檢查版本:

docker -v

安裝完成后,使用下面的命令來啟動 docker 服務,并將其設置為開機啟動:

service docker startchkconfig docker on

下載官方的 CentOS 鏡像:

docker pull centos

日本韩国三级aⅴ在线观看檢查CentOS 鏡像是否被獲取:

docker images# 刪除鏡像docker rmi <image id># 刪除鏡像(針對多個相同image id的鏡像)docker rmi repository:tag

日本韩国三级aⅴ在线观看下載完成后,你應該會看到:

[root@iZ2ze74fkxrls31tr2ia2fZ ~]# docker images centosREPOSITORY       TAG        IMAGE ID     CREATED         SIZEdocker.io/centos latest    3fa822599e103weeks ago   203.5 MB

如果看到以上輸出,說明你可以使用“docker.io/centos”這個鏡像了,或將其稱為倉庫(Repository),該鏡像有一個名為“latest”的標簽(Tag),此外還有一個名為“3fa822599e10 ”的鏡像 ID(可能您所看到的鏡像 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該鏡像只有 203.5 MB,非常小巧,而不像虛擬機的鏡像文件那樣龐大。

重命名TAG:

# ockertagIMAGEID(鏡像id) REPOSITORY:TAG(倉庫:標簽)dockertag3fa822599e10docker.io/centos:centos

啟動容器:

docker run -i -t -v /root/software/:/mnt/software/3fa822599e10 /bin/bash

命令參數說明:
docker run <相關參數> <鏡像 ID> <初始命令>

  • -i:表示以“交互模式”運行容器

  • 日本韩国三级aⅴ在线观看-t:表示容器啟動后會進入其命令行

  • -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

更多參數詳解:

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]    -d, --detach=false         指定容器運行于前臺還是后臺,默認為false    -i, --interactive=false   打開STDIN,用于控制臺交互    -t, --tty=false            分配tty設備,該可以支持終端登錄,默認為false    -u, --user=""              指定容器的用戶    -a, --attach=[]            登錄容器(必須是以docker run -d啟動的容器)  -w, --workdir=""           指定容器的工作目錄  -c, --cpu-shares=0        設置容器CPU權重,在CPU共享場景使用    -e, --env=[]               指定環境變量,容器中可以使用該環境變量    -m, --memory=""            指定容器的內存上限    -P, --publish-all=false    指定容器暴露的端口    -p, --publish=[]           指定容器暴露的端口  -h, --hostname=""          指定容器的主機名    -v, --volume=[]            給容器掛載存儲卷,掛載到容器的某個目錄  --volumes-from=[]          給容器掛載其他容器上的卷,掛載到容器的某個目錄--cap-add=[]               添加權限,權限清單詳見:http://linux.die.net/man/7/capabilities  --cap-drop=[]              刪除權限,權限清單詳見:http://linux.die.net/man/7/capabilities  --cidfile=""               運行容器后,在指定文件中寫入容器PID值,一種典型的監控系統用法  --cpuset=""                設置容器可以使用哪些CPU,此參數可以用來容器獨占CPU  --device=[]                添加主機設備給容器,相當于設備直通  --dns=[]                   指定容器的dns服務器  --dns-search=[]            指定容器的dns搜索域名,寫入到容器的/etc/resolv.conf文件  --entrypoint=""            覆蓋image的入口點  --env-file=[]              指定環境變量文件,文件格式為每行一個環境變量  --expose=[]                指定容器暴露的端口,即修改鏡像的暴露端口  --link=[]                  指定容器間的關聯,使用其他容器的IP、env等信息  --lxc-conf=[]              指定容器的配置文件,只有在指定--exec-driver=lxc時使用  --name=""                  指定容器名字,后續可以通過名字進行容器管理,links特性需要使用名字  --net="bridge"             容器網絡設置:                                bridge 使用docker daemon指定的網橋                                host     //容器使用主機的網絡                                container:NAME_or_ID  >//使用其他容器的網路,共享IP和PORT等網絡資源                                none 容器使用自己的網絡(類似--net=bridge),但是不進行配置 --privileged=false         指定容器是否為特權容器,特權容器擁有所有的capabilities  --restart="no"             指定容器停止后的重啟策略:                                no:容器退出時不重啟                                on-failure:容器故障退出(返回值非零)時重啟                                always:容器退出時總是重啟    --rm=false                 指定容器停止后自動刪除容器(不支持以docker run -d啟動的容器)  --sig-proxy=true           設置由代理接受并處理信號,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理  

Docker命令

我們可以把Docker 的命令大概地分類如下:

鏡像操作:    build     Build an image from a Dockerfile        commit    Create a new image from a container's changes        images    List images        load      Load an image from a tar archive or STDIN        pull      Pull an image or a repository from a registry        push      Push an image or a repository to a registry        rmi       Remove one or more images        search    Search the Docker Hub for images        tag       Tag an image into a repository        save      Save one or more images to a tar archive        history   顯示某鏡像的歷史        inspect   獲取鏡像的詳細信息      容器及其中應用的生命周期操作:        create    創建一個容器        kill      Kill one or more running containers        inspect   Return low-level information on a container, image or task        pause     Pause all processes within one or more containers        ps        List containers        rm        刪除一個或者多個容器        rename    Rename a container        restart   Restart a container        run       創建并啟動一個容器        start     啟動一個處于停止狀態的容器        stats     顯示容器實時的資源消耗信息        stop      停止一個處于運行狀態的容器        top       Display the running processes of a container        unpause   Unpause all processes within one or more containers        update    Update configuration of one or more containers        wait      Block until a container stops, then print its exit code        attach    Attach to a running container        exec      Run a command in a running container        port      List port mappings or a specific mapping for the container        logs      獲取容器的日志    容器文件系統操作:        cp        Copy files/folders between a container and the local filesystem        diff      Inspect changes on a container's filesystem        export    Export a container's filesystem as a tar archive        import    Import the contents from a tarball to create a filesystem image    
Docker registry 操作:    login     Log in to a Docker registry.    logout    Log out from a Docker registry.    
Volume 操作    volume    Manage Docker volumes    
網絡操作    network   Manage Docker networks    Swarm
相關操作    swarm     Manage Docker Swarm    service   Manage Docker services    node      Manage Docker Swarm nodes    系統操作:    version   Show the Docker version information    events    持續返回docker 事件    info      顯示Docker 主機系統范圍內的信息

# 查看運行中的容器docker ps# 查看所有容器docker ps -a# 退出容器按Ctrl+D 即可退出當前容器【但退出后會停止容器】# 退出不停止容器:組合鍵:Ctrl+P+Q# 啟動容器docker start 容器名或ID# 進入容器docker attach 容器名或ID# 停止容器docker stop 容器名或ID# 暫停容器docker pause 容器名或ID#繼續容器docker unpause 容器名或ID# 刪除容器docker rm 容器名或ID# 刪除全部容器--慎用docker stop $(docker ps -q) & docker rm $(docker ps -aq)#保存容器,生成鏡像docker commit 容器ID 鏡像名稱#從 host 拷貝文件到 container 里面docker cp /home/soft centos:/webapp

docker run與start的區別

日本韩国三级aⅴ在线观看docker run 只在第一次運行時使用,將鏡像放到容器中,以后再次啟動這個容器時,只需要使用命令docker start 即可。

日本韩国三级aⅴ在线观看docker run相當于執行了兩步操作:將鏡像放入容器中(docker create),然后將容器啟動,使之變成運行時容器(docker start)。

而docker start的作用是,重新啟動已存在的鏡像。也就是說,如果使用這個命令,我們必須事先知道這個容器的ID,或者這個容器的名字,我們可以使用docker ps找到這個容器的信息。

日本韩国三级aⅴ在线观看因為容器的ID是隨機碼,而容器的名字又是看似無意義的命名,我們可以使用命令:

docker rename jovial_cori  centos

日本韩国三级aⅴ在线观看給這個容器命名。這樣以后,我們再次啟動或停止容器時,就可以直接使用這個名字:

docker[stop][start]new_name

而要顯示出所有容器,包括沒有啟動的,可以使用命令:

docker ps -a

Docker配置

更改存儲目錄:

#復制docker存儲目錄rsync -aXS /var/lib/docker/. /home/docker#更改 docker 存儲文件目錄ln -s  /home/docker  /var/lib/docker

獲取IP:

docker inspect <container id>

要獲取所有容器名稱及其IP地址只需一個命令:

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

Docker 鏡像加速器

注冊個帳號

阿里云會自動為用戶分配一個鏡像加速器的地址,登錄后進入"管理中心"-->"加速器",里面有分配給你的鏡像加速器的地址以及各個環境的使用說明。

鏡像加速器地址:

如何配置鏡像加速器

針對Docker客戶端版本大于1.10.0的用戶
日本韩国三级aⅴ在线观看您可以通過修改daemon配置文件/etc/docker/daemon.json來使用加速器:

{        "registry-mirrors": ["<your accelerate address>"]}

重啟Docker Daemon:

sudo systemctl daemon-reloadsudo systemctl restart docker


文章分類: Docker
分享到:
支付寶贊助-Java幫幫社區
微信贊助-Java幫幫社區
Java幫幫公眾號生態

Java幫幫公眾號生態

總有一款適合你

Java幫幫-微信公眾號

Java幫幫-微信公眾號

將分享做到極致

Python幫幫-公眾號

Python幫幫-公眾號

人工智能,爬蟲,學習教程

大數據驛站-微信公眾號

大數據驛站-微信公眾號

一起在數據中成長

九點編程-公眾號

九點編程-公眾號

深夜九點學編程

程序員生活志-公眾號

程序員生活志-公眾號

互聯網,職場,程序員那些事兒

Java幫幫學習群生態

Java幫幫學習群生態

總有一款能幫到你

Java學習群

Java學習群

與大牛一起交流

大數據學習群

大數據學習群

在數據中成長

九點編程學習群

九點編程學習群

深夜九點學編程

python學習群

python學習群

人工智能,爬蟲

測試學習群

測試學習群

感受測試的魅力

Java幫幫生態承諾

Java幫幫生態承諾

一直堅守,不負重望

初心
勤儉
誠信
正義
分享
合作品牌 非盈利生態-優質內容分享傳播者
關于我們
友鏈申請
友鏈交換:加幫主QQ2524138991 留言即可 24小時內答復  
全站內容非商業用途,內容來源于網友,并遵循 許可,如有異議請聯系客服。
會員登錄
獲取驗證碼
登錄
登錄
我的資料
留言
回到頂部