最新Docker的安裝與使用以及常見問題 Linux Windows

Docker安裝

官方文檔

推薦免費教程1:Docker從入門到實踐 【開源地址】

推薦免費教程2: Docker — 從入門到實踐

Linux安裝

Windows安裝

  • 方式一
    • 安裝條件【官方說明】
      • 截至2020年3月,官方要求:64位的Windows 10 Pro專業版,Enterprise企業版或Education教育版(Build 15063或更高版本),另外由於使用到了Hyper-V,Win10系統需開啓硬件虛擬化百度教程
    • Docker Desktop for Windows 下載頁面下載地址
  • 方式二

不滿足方式一安裝條件的話建議安裝Linux虛擬機在其中使用docker,且可模擬真實生產環境。若你仍執迷不悟請選擇升級系統:Win10家庭版升級至Win10專業版,控制面板-系統和安全-系統-更換產品密鑰(百度祕鑰以及系統破解工具如KMSpico)

MacOS安裝

  • Docker Desktop for Mac 下載頁面下載地址
  • 與平時裝軟件一樣,拖動至應用程序即可,可能會要求輸入密碼獲取權限
  • 啓動成功後打開終端輸入docker相關命令即可使用

查看版本安裝成功

  • docker --version

鏡像加速

Ubuntu 16.04+、Debian 8+、CentOS 7、MacOS、Win10

  • 對於使用 systemd 的系統,請在 /etc/docker/daemon.json 中寫下方Json內容(若文件不存在請新建該文件)
  • MacOS 用戶,在任務欄點擊 Docker應用圖標 -> Perferences… -> Docker Engine。在輸入框中填入下方Json內容,點擊Apply & Restart按鈕,Docker 就會重啓並應用配置的鏡像地址了。
  • Win10 用戶,在系統右下角托盤 Docker 圖標內右鍵菜單選擇 Settings,打開配置窗口後左側導航菜單選擇 Docker Engine。在輸入框中填入下方Json內容,點擊Apply & Restart按鈕
{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}
  • 也可同時配置多個加速地址
{
    "registry-mirrors": [
        "https://dockerhub.azk8s.cn",
        "https://hub-mirror.c.163.com",
        "https://reg-mirror.qiniu.com/"
    ]
}
  • Ubuntu 16.04+、Debian 8+、CentOS 7需手動重新啓動服務
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

檢查加速器是否生效

  • 命令行執行docker info,如果從結果中看到了如下內容,說明配置成功。
Registry Mirrors:
 https://registry.docker-cn.com/

Docker-Compose安裝

  • Docker for Mac 、Docker for Windows 自帶 docker-compose 二進制文件,安裝 Docker 之後可以直接使用,執行docker-compose --version查看版本號測試
  • Linux 系統請使用以下方法安裝:https://www.kancloud.cn/docker_practice/docker_practice/469832

常用命令

$ docker --help

Usage:	docker COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host list          Daemon socket(s) to connect to (default [])
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  volume      Manage volumes

Commands:
  attach      Attach to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  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
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

基本命令

倉庫相關操作

docker pull     #從遠程倉庫拉取鏡像到本地
docker push     #推送本地鏡像到遠程倉庫
docker search   #在倉庫搜索鏡像
docker login    #登錄到官方倉庫Docker Hub
docker logout   #退出登錄

鏡像相關操作

docker build    #從Dockerfile構建鏡像
docker pull     #同上
docker push     #同上
docker history  #顯示鏡像的歷史信息
docker images   #列出鏡像
docker rmi      #刪除鏡像
docker tag      #給鏡像打上tag標籤
docker run      #創建容器並啓動容器
docker create   #創建容器
docker commit   #將修改後的容器生成鏡像
docker load     #從壓縮包中加載鏡像
docker import   #從歸檔文件中創建鏡像
docker save     #將鏡像保存到壓縮文件

容器相關操作

docker attach   #依附到一個正在運行的容器中
docker exec     #進到正在運行的容器中執行命令
docker cp       #在容器和本地系統間複製文件
docker update   #將一個容器內所有的進程從暫停狀態中恢復
docker ps       #列出主機中的容器
docker port     #查找一個nat到私有網口的公共口
docker top      #查看一個容器中正在運行的進程信息
docker logs     #查看日誌文件
docker diff     #檢查容器內文件系統的修改
docker status   #輸出容器的資源使用統計信息
docker wait     #阻塞直到容器終止
docker start    #啓動已創建的容器
docker pause    #暫停運行中的容器
docker unpause  #使暫停的容器恢復運行
docker stop     #停止容器運行
docker rename   #容器改名
docker restart  #容器重啓
docker kill     #關閉運行中的容器
docker rm       #刪除容器
docker export   #導出容器內容爲tar包
docker run      #同上
docker create   #同上
docker commit   #同上

其他基本命令

docker events   #從服務端獲取實時的事件
docker info     #查看系統相關信息
docker inspect  #顯示Docker對象的具體配置信息,包括容器,鏡像,網絡等
docker version  #輸出Docker的版本信息

管理命令

docker container    #容器管理
docker image        #鏡像管理
docker network      #網絡管理
docker node         #節點管理
docker plugin       #插件管理
docker secret       #管理敏感數據及普通服務配置項
docker service      #服務管理
docker stack        #棧管理
docker swarm        #集羣管理
docker system       #管理系統信息
docker volume       #卷管理

找的一些命令圖幫助大家記憶理解

59618-20170519215116432-38667527.png

20170627101219148.png

快速理解相關概念

Docker

  • Docker 使用 Google 公司推出的 Go 語言 進行開發實現,基於 Linux 內核的 cgroup,namespace,以及 AUFS 類的 Union FS 等技術,對進程進行封裝隔離,屬於 操作系統層面的虛擬化技術。由於隔離的進程獨立於宿主和其它的隔離的進程,因此也稱其爲容器

  • 對比傳統虛擬機總結

特性 容器 虛擬機
啓動 秒級 分鐘級
硬盤使用 一般爲 MB 一般爲 GB
性能 接近原生 弱於
系統支持量 單機支持上千個容器 一般幾十個
  • Docker現已成爲雲計算主流工具,你甚至可以理解爲雲計算已離不開Docker

倉庫

  • 倉庫(Repository)是集中存放鏡像的地方
  • 和Maven一樣,有公有的倉庫,也可搭建私有的,比如,VMWare HarborSonatype Nexus甚至提供了用戶界面以及一些高級功能。

鏡像

  • Docker 運行容器前需要本地存在對應的鏡像,如果本地不存在該鏡像,Docker 會從鏡像倉庫下載該鏡像
  • 鏡像與容器的關係類似於面向對象編程中的對象實例
  • 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。
  • 鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

鏡像包含操作系統完整的 root 文件系統,其體積往往是龐大的,但 Docker 設計時,就充分利用 Union FS 的技術,將其設計爲分層存儲的架構

容器

  • 容器是獨立運行的一個或一組應用,以及它們的運行態環境
  • 容器的本質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立的 命名空間。因此容器可以擁有自己的文件系統、網絡配置、進程空間,甚至自己的用戶 ID 空間。容器內的進程是運行在一個隔離的環境裏

數據卷

  • 容器消亡時,容器存儲層(例如運行服務的配置文件,數據庫數據)也隨之消亡。因此,任何保存於容器存儲層的信息都會隨容器刪除而丟失
  • 所有的文件寫入操作,都應該使用數據卷(Volume)或者綁定宿主目錄,直接對宿主(或網絡存儲)發生讀寫,避免配置文件或數據丟失

類比Maven快速理解

Docker-Compose

  • 實現一個項目,除了項目服務容器本身,往往還需要再加上後端的數據庫MySQL,中間件Redis、Elasticsearch、MQ等等。甚至可以想象一下當你的Docker中有成百上千的容器集羣需要啓動,如果一個個地啓動那肯定是無法忍受的

  • 有了Docker-Compose你只需要編寫一個文件,在這個文件裏面聲明好要啓動的容器,配置一些參數,執行一下這個文件,Docker就會按照你聲明的配置去把所有的容器啓動起來

  • 可以理解爲Docker-Compose是用來批量執行管理你的容器

Kubernetes

但是Docker-Compose只能管理當前主機上的Docker,無法去啓動其他主機上的Docker容器

  • 因此Kubernetes就是一款用來管理多主機上的Docker容器的工具,可以負責幫你啓動容器,監控容器狀態,如果容器的狀態不正常重新幫你啓動一個新的容器來提供服務,同時也提供服務之間的負載均衡,而這些東西Docker-Compose是做不到的
  • KubernetesGoogle在2014年創建管理的,是 Google 十多年大規模容器管理技術Borg 的開源版本
  • 當然Kubernetes更加強大,可以實現容器集羣的自動化部署、自動擴縮容、維護等功能。特點如下:
    • 可移植: 支持公有云,私有云,混合雲,多重雲(多個公共雲)
    • 可擴展: 模塊化,插件化,可掛載,可組合
    • 自動化: 自動部署,自動重啓,自動複製,自動伸縮/擴展

  • 作者:Exrick
  • 版權聲明:著作權歸作者所有,商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章