Docker系列——Docker安裝&基礎命令

Docker 概述

Docker 是一個開源的應用容器引擎,Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面,更重要的是容器性能開銷極低。

Docker 基本概念

  • 鏡像(Image):Docker 鏡像(Image),就相當於是一個 root 文件系統。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統的 root 文件系統。
  • 容器(Container):鏡像(Image)和容器(Container)的關係,就像是面向對象程式設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。
  • 倉庫(Repository):倉庫可看成一個程式碼控制中心,用來保存鏡像。

Docker 安裝

在平時學習過程中,接觸到docker,開發也介紹,docker比虛擬機好用很多,所以自己就開始搗鼓搗鼓。docker與虛擬機相比,確實輕便許多。剛開始是在windows環境下搭建,但系統是專業版,使用網上的方法搭建,就是沒有成功。所以就用了如下這種方法。好了,那我們就開始搭建docker環境吧。

Windows Docker 安裝

1. 下載docker toolbox

下載地址:docker toolbox ,選擇docker toolbox.exe下載

2. 安裝docker toolbox

雙擊下載的安裝包,一路 next 即可。安裝後成功後,電腦桌面會出現如下圖標:

3. docker初始化

雙擊如上步驟中的圖標,會初始化docke,最後出現如下截圖,初始化完畢進入docker命令模式。

Ubuntu Docker 安裝

在windows環境學習過程中,環境時不時就出了問題,然後自己也要用到linux系統,趕上阿里雲伺服器的活動,索性就整了台伺服器,學習那就更方便了。linux系統搭建docker很簡單,我們來看。

1. apt-get update

使用命令 apt-get update 更新源

2. apt-get install docker

使用命令 apt-get install docker 安裝即可,安裝後用命令 docker run hello-world 驗證是否安裝成功,列印出以下資訊則安裝成功。

root@iZuf6hobanx6hbvtsep8ykZ:/# docker run hello-world

Unable to find image ‘hello-world:latest’ locally

latest:Pulling from library/hello-world

0e03bdcc26d7:Pull complete

Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5

Status: Downloaded newer image for hello-world:latest

Hello from Docker! This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world” image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID: //hub.docker.com/

For more examples and ideas, visit: //docs.docker.com/get-started/

Docker 基本命令

docker使用,肯定離不開命令的操作,接下來就列舉下,我近期在學習過程中用到的基本命令。

docker run 命令

創建一個新的容器並運行一個命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

  • 選項參數
    • -d: 後台運行容器,並返回容器ID;
    • -i: 以交互模式運行容器,通常與 -t 同時使用;
    • -P: 隨機埠映射,容器內部埠隨機映射到主機的埠
    • -p: 指定埠映射,格式為:主機(宿主)埠:容器埠
    • -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
    • –name=”jenkins”: 為容器指定一個名稱。

Docker start/stop/restart 命令

docker start :啟動一個或多個已經被停止的容器
docker stop :停止一個運行中的容器
docker restart :重啟容器

docker start [OPTIONS] CONTAINER [CONTAINER…]
docker stop [OPTIONS] CONTAINER [CONTAINER…]
docker restart [OPTIONS] CONTAINER [CONTAINER…]

啟動已被停止的容器jenkins

docker start jenkins

停止運行中的容器jenkins

docker stop jenkins

重啟容器jenkins

docker restart jenkins

Docker rm 命令

docker rm :刪除一個或多個容器。

Docker kill 命令

docker kill :殺掉一個運行中的容器。

  • 選項參數
    • -s :向容器發送一個訊號

Docker exec 命令

docker exec :在運行的容器中執行命令。

docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

Docker ps 命令

docker ps : 列出容器

docker ps [OPTIONS]

  • 選項參數
    • -a :顯示所有的容器,包括未運行的。
    • -f :根據條件過濾顯示的內容。
    • -l :顯示最近創建的容器。
    • -n :列出最近創建的n個容器。
    • -q :靜默模式,只顯示容器編號。
    • -s :顯示總的文件大小。

Docker cp 命令

docker cp :用於容器與主機之間的數據拷貝。

docker cp [OPTIONS] CONTAINER:SRCPATH DESTPATH|-
docker cp [OPTIONS] SRCPATH|- CONTAINER:DESTPATH

將主機/www/phpwind目錄拷貝到容器975705051af9的/www目錄下。

docker cp /www/phpwind 975705051af9:/www/

將容器975705051af9的/www目錄拷貝到主機的/tmp目錄中。

docker cp 975705051af9:/www /tmp/

Docker pull 命令

docker pull : 從鏡像倉庫中拉取或者更新指定鏡像.

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Docker images 命令

docker images : 列出本地鏡像。

docker images [OPTIONS] [REPOSITORY[:TAG]]

Docker rmi 命令

docker rmi : 刪除本地一個或多少鏡像。

docker rmi [OPTIONS] IMAGE [IMAGE…]

問題總結

1. 安裝失敗

報錯提示:Installation failed:one prerequisite is not fullfilled,如下所示:

問題原因:版本衝突。

解決辦法:用文中的windows環境安裝步驟搭建即可。

2. 啟動docker失敗

報錯提示:Looks like something went wrong in step ´Finalize´

解決辦法:到docker安裝目錄,找到start.sh啟動文件,將clear注釋掉,重新啟動即可。

STEP=”Finalize”
clear
cat << EOF

Tags: