Docker入門1------概念和安裝

關於docker的介紹: https://www.cnblogs.com/neptunemoon/p/6512121.html
docker入門教程:http://www.docker.org.cn/book/docker/what-is-docker-16.html
不錯的一個命令介紹: https://blog.csdn.net/permike/article/details/51879578html

介紹

Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器上,也能夠實現虛擬化,容器是徹底使用沙箱機制,相互之間不會有任何接口。java

一個完整的Docker有如下幾個部分組成:linux

docker Client客戶端
Docker Daemon守護進程
Docker Image鏡像
Docker Container容器nginx

Docker image:

  • docker image是一個極度精簡版的Linux程序運行環境,官網的java鏡像包括的東西更少,除非是鏡像疊加方式的如centos+java7
  • docker image是須要定製化build的一個安裝包,包括基礎鏡像+應用的二進制部署包
  • docker image內不建議有運行期須要修改的配置文件
  • Dockerfile用來建立一個自定義的image,包含了用戶指定的軟件依賴等。當前目錄下包含Dockerfile,使用命令build來建立新的image
  • docker image的最佳實踐之一是儘可能重用和使用網上公開的基礎鏡像

Docker container:

  • Docker container是image的實例,共享內核
  • Docker container裏能夠運行不一樣os的image,好比Ubuntu的或者centos
  • Docker container不建議內部開啓一個sshd服務,1.3版本後新增了docker exec命令進入容器進行排查問題
  • Docker container沒有ip地址,一般不會有服務端口暴露,是一個封閉的沙盒

Docker daemon:

  • Docker daemon是建立和運行container的Linux守護進程,也是Docker 最主要的核心組件
  • Docker daemon能夠理解爲Docker container的container
  • Docker daemon能夠綁定本地端口並提供REST API服務,用來遠程訪問和控制

Docker安裝

  • 使用 root 權限登陸 Centos。確保 yum 包更新到最新。
    sudo yum update
  • 卸載舊版本(若是安裝過舊版本的話)
    yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engineweb

  • 安裝須要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2redis

  • 設置yum源
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安裝最新版本docker
    sudo yum install docker-cedocker

  • 開機自啓動
    sudo systemctl start docker
    sudo systemctl enable dockershell

  • 爲docker添加國內鏡像,加速下載鏡像:
  • 修改配置文件/etc/docker/daemon.json,若是該文件沒有則進行建立:
[root@docker ~]# cat /etc/docker/daemon.json 
{
    "dns": ["192.168.101.2","8.8.8.8"],
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

經常使用操做

#查看容器
#查看你已經下載好的鏡像
docker images

#查找鏡像
docker search XX

#下載鏡像
docker pull xx

#刪除鏡像
docker rmi xx

#開始
docker run 你的鏡像

#看日誌
docker logs 你的容器

#中止一個容器示例
docker stop 你的容器

#查看容器狀態
docker stats 你的容器

docker ps -l

鏡像操做舉例

  • 搜索鏡像:
    docker search nginx
    nginx爲鏡像名稱(鏡像名稱如:centos、nginx、redis)json

  • 拉取鏡像:
    docker pull nginxcentos

  • 列出本地鏡像:
    docker images(docker images --help)
    docker image ls -a 一樣是列出鏡像(docker image ls --help查看)

  • 刪除鏡像:
    docker rmi nginx (docker rmi image_name/image_id)
    docker image rm nginx一樣是刪除鏡像(docker image rm image_name/image_id)
    -f:force強制刪除(note:若是鏡像被容器佔用了,須要先刪除容器,才能刪除鏡像)

  • 將鏡像導出成文件:
    [ymsk@localhost main]$ docker save -o tomcat.docker.tar tomcat

  • 本地文件加載成鏡像
    docker load --input centos.tar

容器操做舉例:

  • 查看容器:
    docker ps docker ps -l

  • 查看全部的容器:
    docker ps -a

    語法

docker ps [OPTIONS]
OPTIONS說明:
-a :顯示全部的容器,包括未運行的。
-f :根據條件過濾顯示的內容。
--format :指定返回值的模板文件。
-l :顯示最近建立的容器。
-n :列出最近建立的n個容器。
--no-trunc :不截斷輸出。
-q :靜默模式,只顯示容器編號。
-s :顯示總的文件大小。
  • 啓動一個容器:
# docker run --help
Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
# docker run tomcat   #啓動一個容器並執行命令(容器是本機host的一個進程,若是進程沒有後續操做,那麼狀態將是exited)

-建立一個名稱爲mycentos的container,並執行/bin/bash:

# docker run --name mycentos centos /bin/bash
  --name:表示容器的name,後面的centos表示使用的哪一個鏡像(鏡像name)
   /bin/bash:表示執行的command
  • 容器可使用容器id和容器name來識別(與鏡像相似)
  • 容器有狀態(exited表示已經退出了)
  • 啓動容器:
    docker start mycentos
  • 關閉容器:
    docker stop mycentos
  • 刪除容器:
    docker rm mycentos
  • 上面的操做均可以使用容器的惟一標識(容器名稱或者容器id)
    -f:force強制刪除
  • 建立一個具備tty僞終端的容器:
# docker run -t --name mycentos centos /bin/bash  
[root@92f0af59184d /]#
  • 映射端口:
    docker run -d -p 8088:8080 tomcat -d是後臺執行,-p是端口映射,講docker容器中的8080端口映射到8088端口
  • 啓動完能夠看到容器列表
[root@localhost ymsk]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1d7dc2ebb9ab        tomcat              "catalina.sh run"   14 seconds ago      Up 13 seconds       0.0.0.0:8088->8080/tcp   suspicious_goldwasser
  • 能夠訪問映射的8088端口

  • 進入交互式終端容器(-i交互式,-t終端)
[root@localhost main]# docker run -p 8080:8080 -t -i tomcat /bin/bash
root@e9e88c9621a1:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work
root@e9e88c9621a1:/usr/local/tomcat# pwd
/usr/local/tomcat

更快更好更強
使用 dockerfile
使用 crontab
使用 supervisr


經常使用命令

docker   # docker 命令幫助

Commands:
    attach    Attach to a running container                 # 當前 shell 下 attach 鏈接指定運行鏡像
    build     Build an image from a Dockerfile              # 經過 Dockerfile 定製鏡像
    commit    Create a new image from a container's changes # 提交當前容器爲新的鏡像
    cp        Copy files/folders from the containers filesystem to the host path
              # 從容器中拷貝指定文件或者目錄到宿主機中
    create    Create a new container                        # 建立一個新的容器,同 run,但不啓動容器
    diff      Inspect changes on a container's filesystem   # 查看 docker 容器變化
    events    Get real time events from the server          # 從 docker 服務獲取容器實時事件
    exec      Run a command in an existing container        # 在已存在的容器上運行命令
    export    Stream the contents of a container as a tar archive   
              # 導出容器的內容流做爲一個 tar 歸檔文件[對應 import ]
    history   Show the history of an image                  # 展現一個鏡像造成歷史
    images    List images                                   # 列出系統當前鏡像
    import    Create a new filesystem image from the contents of a tarball  
              # 從tar包中的內容建立一個新的文件系統映像[對應 export]
    info      Display system-wide information               # 顯示系統相關信息
    inspect   Return low-level information on a container   # 查看容器詳細信息
    kill      Kill a running container                      # kill 指定 docker 容器
    load      Load an image from a tar archive              # 從一個 tar 包中加載一個鏡像[對應 save]
    login     Register or Login to the docker registry server   
              # 註冊或者登錄一個 docker 源服務器
    logout    Log out from a Docker registry server         # 從當前 Docker registry 退出
    logs      Fetch the logs of a container                 # 輸出當前容器日誌信息
    port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
              # 查看映射端口對應的容器內部源端口
    pause     Pause all processes within a container        # 暫停容器
    ps        List containers                               # 列出容器列表
    pull      Pull an image or a repository from the docker registry server
              # 從docker鏡像源服務器拉取指定鏡像或者庫鏡像
    push      Push an image or a repository to the docker registry server
              # 推送指定鏡像或者庫鏡像至docker源服務器
    restart   Restart a running container                   # 重啓運行的容器
    rm        Remove one or more containers                 # 移除一個或者多個容器
    rmi       Remove one or more images                 
              # 移除一個或多個鏡像[無容器使用該鏡像纔可刪除,不然需刪除相關容器纔可繼續或 -f 強制刪除]
    run       Run a command in a new container
              # 建立一個新的容器並運行一個命令
    save      Save an image to a tar archive                # 保存一個鏡像爲一個 tar 包[對應 load]
    search    Search for an image on the Docker Hub         # 在 docker hub 中搜索鏡像
    start     Start a stopped containers                    # 啓動容器
    stop      Stop a running containers                     # 中止容器
    tag       Tag an image into a repository                # 給源中鏡像打標籤
    top       Lookup the running processes of a container   # 查看容器中運行的進程信息
    unpause   Unpause a paused container                    # 取消暫停容器
    version   Show the docker version information           # 查看 docker 版本號
    wait      Block until a container stops, then print its exit code   
              # 截取容器中止時的退出狀態值
Run 'docker COMMAND --help' for more information on a command.
相關文章
相關標籤/搜索