docker命令詳解

說明 :php

[]          方括號表示 => 裏面的參數可省
grep name   任何查詢結果均可以經過 grep 進行篩選
#           註釋符
()          命令解釋
<>          必填參數

系統 :html

安裝容器 :
          yum install -y epel-relase # 安裝依賴
          yum install docker-io    # 安裝docker
容器服務 : systemctl <[start,stop,restart]> docker.service | service docker start
容器版本 : docker version

倉庫 : 倉庫是集中存放鏡像的地方[公有倉庫,私有倉庫] (註冊服務器:存放倉庫的具體服務器)mysql

公有倉庫 : Docker Hub => https://hub.docker.com/
          docker login 輸入用戶信息登陸到 => Docker Hub => 本地 .dockercfg保存用戶的認證信息
          docker search # 不須要登陸
                        # 官方的鏡像通常爲 基礎鏡像或者根鏡像 => docker.io/mysql
                        # 我的用戶的鏡像通常爲 用戶名/鏡像名稱 => sokminyo/mysql-1
          docker pull www.self.com/mysql # 指定網站拉取鏡像
自動建立 : 用戶經過 Docker Hub指定跟蹤一個目標網站上的項目,如有提交,則自動執行建立
建立和使用私有庫 :
        建立 : docker run -d -p 5000:5000 registry  # 經過 registry鏡像 來建立私有庫,默認容器地址爲 /tmp/registry,最好先拉取 docker pull registry
        建立指定 : docker run -d -p 5000:5000 -v /data/nginx/html:/tmp/registry registry # 指定路徑建立
        打上標籤 :   docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] => docker tag <33fbbf4a24e5> 127.0.0.1:5000/tt
        上傳鏡像 : docker push 127.0.0.1:5000/tt

鏡像 :linux

獲取鏡像 : docker pull <名稱>[:TAG(標籤)]  =>  docker pull php
查看鏡像 : docker images [名稱]    =>  docker images
查看詳情 : docker inspect <名稱或Id>     =>  docker inspect php [-f(指定內容),...]  docker inspect php -f {{'.Id'}}
搜索鏡像 : docker search [OPTIONS] TERM  => docker search php:7.1-fpm
刪除鏡像 : docker rmi <名稱>         =>  docker rmi [-f(強制刪除)] php:7.1-fpm   # 正在運行的鏡像沒法刪除
存出鏡像 : docker save -o <存出的文件名.格式(php.tar)> <鏡像名稱或Id> =>  docker save -o php.tar 894f8d826f6a
載入鏡像 : docker load --input php.tar(文件名稱)

容器 :nginx

新建容器 : docker create -it <鏡像名稱或ID(php:7.1-fpm)> # 默認狀況下爲不啓動
新建並啓動容器 : docker run
查看容器 : docker ps # 查看當前運行的容器  docker ps -a # 查看全部容器
運行容器 : docker run <容器名orID>
中止容器 : docker stop <容器名orID>
開啓容器 : docker start <容器名orID>
終止容器 : docker kill <容器名orID>
重啓容器 : docker restart <容器名orID>
容器日誌 : docker logs <容器名orID>
容器端口 : docker port <容器名orID>
刪除容器 : docker rm <容器名orID>
進入容器 : docker exec -it <容器名orID> /bin/bash
導出容器 : docker export <容器名orID> >文件名.格式   => docker export mysql >mysql.tar
導入容器 : docker import 文件名.格式

容器中 :sql

安裝vi|vim : apt-get install -y vi|vim
更新apt : apt-get update # 安裝其餘功能時,更新-安裝-更新

數據卷 : 供容器使用的特殊目錄 volume(卷)docker

建立 : 在運行的時候加上 -v 可使用多個
       docker run -d -p -v /data/nginx/html:/usr/share/nginx/html (將本機的文件映射到容器中的文件)
       docker run -p 8080:80 --name test_nginx -v /data/nginx/html:/usr/share/nginx/html -d docker.io/nginx
               -p      8000:80 把容器80端口映射到服務8000
               --name  設置名字
               -d      後臺運行|守護
               -v /data/nginx/html:/usr/share/nginx/html (將本機的文件映射到容器中的文件)
       more :
               -a stdin : 指定標準輸入輸出內容類型 , 可選 STDIN/STDOUT/STDERR 三項
               
               -d : 後臺運行容器 , 並返回容器ID
               
               -i : 以交互模式運行容器 , 一般與 -t 同時使用
               
               -p <port(主機)>:<port(容器)> : 端口映射  
               
               -t : 爲容器從新分配一個僞輸入終端 , 一般與 -i 同時使用
               
               --name <defineName> : 爲容器指定一個名稱
               
               --dns 8.8.8.8 : 指定容器使用的DNS服務器 , 默認和宿主一致
               
               --dns-search example.com: 指定容器DNS搜索域名 , 默認和宿主一致
               
               -h "mars": 指定容器的hostname
               
               -e username="ritchie": 設置環境變量
               
               --env-file=[]: 從指定文件讀入環境變量
               
               --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行
               
               -m :設置容器使用內存最大值
               
               --net="bridge": 指定容器的網絡鏈接類型 , 支持 bridge/host/none/container: 四種類型
               
               --link=[]: 添加連接到另外一個容器
               
               --expose=[]: 開放一個端口或一組端口
               
數據卷容器 : 容器之間共享數據(掛載在同一個文件夾中)
       docker run -it -v /dbData --name dbData php  # 刪除卷 docker rm -v dbData
       docker run -it --volumes-from dbData --name db1 php
       docker run -it --volumes-from dbData --name db2 php
數據卷遷移數據 : 備份和恢復(自行了解)

端口映射實現訪問容器 :shell

端口映射 : docker run -p 端口:端口
  自定義名稱 : docker run --name 名稱
  容器互聯 : docker run --link 容器名稱
  docker公開鏈接 : 環境變量(env) 或 更新 /etc/hosts文件

使用Dockerfile建立鏡像 : 文本格式的配置文件vim

指令 : 通常格式爲 instruction(指令) arguments(參數) , 指令包括 from , maintainer(維護者) , run , cmd 等 .
  組成部分(通常而言) : 基礎鏡像信息 , 維護者信息 , 鏡像操做指令 , 容器操做指令
      eg :
            # 第一行必須指定基於的基礎鏡像
            # FROM <image>[:<tag>]
            FROM php:7.1

            # 維護者信息
            # MAINTAINER <name>
            MAINTAINER huangzhhui <h@swoft.org>

            # ENV <key> <value> 指定一個環境變量 , 可供 RUN 命令使用 , 並在容器中保持運行 
            ENV PHPREDIS_VERSION 4.0.0
            ENV HIREDIS_VERSION 0.13.3
            ENV SWOOLE_VERSION 4.0.3

            # 鏡像操做指令(能夠有多個)
            # RUN <command>  在shell終端中運行命令,即 /bin/sh -C
            # 或者
            # RUN ["executalbe","param1","param2"] 這裏的[]非說明中的 , 使用 exec 執行
            RUN curl -sS https://getcomposer.org/installer | php \
                && mv composer.phar /usr/local/bin/composer \
                && composer self-update --clean-backups

            # 容器暴露的端口號
            # EXPOSE <port> [<port>...]
            EXPOSE 80 22 443

            # 容器操做指令
            ......

            # (只能有一個,若是有多個只會執行一個)
            # CMD ["executalbe","param1","param2"] 這裏的[]非說明中的 , 使用 exec 執行 (推薦)
            # 或者
            # CMD command param1 param2 在 /bin/sh 中執行
            # 或者
            # CMD ["param1","param2"] 提供給 entrypoint 的默認參數
            CMD /usr/sbin/nginx
  其餘指令 :
      ADD <src> <dest> : 複製指定的 src 到容器中的 dest
      COPY <src> <dest> : 複製本地的 src 到容器 dest
      ENTRYPOINT : 配置容器啓動後執行的命令 ,只能有一個 , 若是有多個只會執行一個(最後一個生效)
                   1 : ENTRYPOINT command param1 param2 在 /bin/sh 中執行
                    or
                   2 : ENTRYPOINT ["param1","param2"]
      VOLUME : VOLUME ["/data"] # 建立一個能夠從本地主機或其餘容器掛載的掛載點 , 通常用於存放數據和保持數據
      USER : USER daemon # 指定運行容器是的用戶名或UID
      WORKDIR : WORKDIR /path/to/workdir # 爲後續 RUN , CMD , ENTRYPOINT 等指令配置工做目錄 . 可多個 若是後續路徑爲相對路徑,則會基於以前的指令
                WORKDIR /a
                WORKDIR b
                WORKDIR c
                RUN pwd   # /a/b/c
      ONBUILD : ONBUILD [INSTRUCTION]
  建立鏡像 : 完成 dockerFile 後 , 可經過 docker build [option] 來建立鏡像
            可配置 .dockerignore 文件 , 來忽略 docker 路徑下的 目錄和文件

常見問題 :bash

docker組沒有 : could not change group /var/run/docker.sock to docker: group docker not found
         uname -r 查看內核
         Why:SELinux不支持 overlay2 graph driver
         Solve :
                vi /etc/sysconfig/docker,在docker裏禁用selinux-enabled=false,

掛載失敗 : /usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/b35b5d54a4bb354ff5bbf4b8906db3acce819339c8c9bf378d9e388d9dedbed7-init/merged: invalid argument.
           Solve :
                  rm -rf /var/lib/docker  # 會刪除docker images
                  vi /etc/sysconfig/docker-storage   # 指定  DOCKER_STORAGE_OPTIONS="--storage-driver overlay"
                  vi  /etc/sysconfig/docker # 刪除 --selinux-enabled

圖片介紹 :
圖片描述

相關文章
相關標籤/搜索