1. 程式人生 > >Docker安裝及基本指令的學習記錄

Docker安裝及基本指令的學習記錄

一、安裝

官網下載社群版,下載對應的win10專業版,點選get Docker即可,連結:https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe
1.虛擬機器和映象檔案位置的更改(重要,C盤吃不消玩兒的)
安裝完會發現預設安裝到C盤,所以需要進行一定的基本配置,Docker for windows點選後就會啟動Docker,預設的HV虛擬機器安裝在了C:\Users\Public\Documents\Hyper-V\Virtual hard disks,通過小娜打卡Hyper-V管理器,下面點選Hyper-V管理器下面的選單,即自己筆記本的名字,右側會出現虛擬機器,對,這貨預設叫MobyLinuxVM,右擊移動,按照移動向導選擇其他盤的位置即可(當然這裡網上大部分的教程都是通過將上述虛擬機器複製到自己想要移動到的磁碟資料夾中)。但是在後來過程中,發現上述的方法並不能真正更改,檢視Docker的客戶端,Settings中Advanced的位置還是一樣C盤,網上教程基本不能真正引用,後來終於找到解決辦法,在做完上述更改之後,還需要配置一下預設的Hyper-V中的預設資料夾(就是上述移動的目標資料夾),右擊電腦名(我這裡是MR-LIUS-COMPUTE)–>Hyper-V設定–>更改虛擬硬碟如下:
這裡寫圖片描述

2.資源映象倉庫的配置
docker預設是從dockerhub上下載映象,由於在中國,所以速度上不去,需要進行遠端倉庫位置的更改,這裡使用阿里雲的docker倉庫,進入後使用淘寶賬號登入,點選右上角的管理中心進入docker映象服務–>映象加速器,右側的內容框中就會出現類似於下圖的加速器的地址:
這裡寫圖片描述
複製這個地址,然後開啟docker中的Settings,配置Daemon中的Registry mirrors,對,就是它,貼上到這裡,Apply後Docker自動重啟,這裡在使用的時候不要忘了進行阿里雲的登入,在PowerShell中進行如下的登入操作:

# 後面的地址就是剛剛加速器的地址
docker login https://xxxx.mirror.aliyuncs.com

按照它提示輸入使用者名稱密碼進行登入即可,這個時候就可以使用映象了,比如這裡我需要下載redis映象,在dev.aliyun.com上搜索,就可以看到類似於這樣的映象地址,如下:
這裡寫圖片描述
直接複製它的映象地址獲取的指令,這裡是docker pull redis,執行這個指令即可:

# 直接下載最新版的redis版本
docker pull redis

# 也可以指定下載的redis的版本號,追加:version
docker pull redis:4.0.5-apline

可以發現速度正常。docker在倉庫拉取的映象檔案是存在於Docker中的,簡單的講就是存在於HV虛擬機器中的,不要妄想去找映象檔案,除非是Linux系統或者另外用連線windows上的HV虛擬機器進行檢視(未實踐)。

3.測試
經過上述配置基本完成,執行helloworld的案例,

docker run hello-world

如果本地虛擬機器沒有hello-world這個docker映象,會自動從配置的阿里雲docker的映象倉庫進行下載執行,會出現如下的結果:
這裡寫圖片描述

4.配置指令碼檔案模組(可省略)
在完成上述配置後,docker基本配完成,但是由於我們實在powershell或者cmd中操作,但是它們只能識別win系統命令的自動補全而不能對docker命令的自動補全,下面指令碼的配置就是完成這樣的任務。
首先以管理身份執行PowerShell.

# 1.檢查許可權,如果返回RemoteSigned轉第3步
Get-ExecutionPolicy

# 2.設定許可權,全部選擇Y
Set-ExecutionPolicy RemoteSigned

# 3.安裝模組,全部選擇Y
Install-Module posh-docker

# 4.只為PowerShell啟用該模組
Import-Module posh-docker

# 5.設定全域性作用(所有的PowerShell會話都在作用範圍)
if (-Not (Test-Path $PROFILE)) {
    New-Item $PROFILE –Type File –Force
}

Add-Content $PROFILE "`nImport-Module posh-docker"

# 6.檢視檔案是否寫入成功
Notepad $PROFILE

在第6步完成後,應該會出現如下的文字檔案
這裡寫圖片描述
完成上述配置後,Docker基本配置完成(我是這樣的),注意不要將Docker殺掉,如果不小心殺掉,可以管理員啟動CMD啟動服務:

net start com.docker.service

二、Docker指令的使用

【注意】:在對docker容器進行操作的時候,可以通過容器的名字或者ID來指定某個特定的容器例項,值得一說的是(Docker說它因此很酷),通過名字指定的話名字一定要是全稱,而通過ID來指定的話,只需要寫ID的前面的部分的ID字元,不需要寫全(前提你要保證在你釋出的Docker容器中這個ID是唯一,否則一直寫到它是唯一為止,比如有容器ID為hjgasd5sa,那麼可以直接指定hj就可以定位到這個容器,但是如果此時Docker中還有另一個容器叫做hjhgs4,那麼不能指定上述的字元,必須指定到hjg才可以),因為通過ps指令檢視各個容器例項的時候顯示ID只有12位字元也不是全的,而實際的CONTAINER ID是64位字元,這技術是啥忘了,隱約記得有這麼一種記錄識別方式。

1.docker images檢視本次執行虛擬機器上所有的docker映象;

2.docker search xxx線上查詢映象檔案,xxx是查詢的映象關鍵字,但是國內好像沒法用(好像是需要配置一下代理)。但是可以直接在dev.aliyun.com上直接找需要的映象然後直接pull拉取,前提是你已經登入了一個Docker映象倉庫,比如阿里雲

3.docker login xxx登入docker映象倉庫,可以用自帶的dockerhub(xxx表示Docker ID),也可以使用配置的aliyun(加速器地址,輸入使用者名稱、密碼),如果不指定xxx預設是官方倉庫 Docker Hub,同樣的登出Docker映象倉庫為:docker logout xxx,如果使用阿里雲必須指定倉庫加速器的地址。

4.docker run [OPTIONS] xxx [ARGS]執行由xxx映象建立的容器中並執行相關ARGS指令後終止並退出該容器,容器執行後可以通過exit指令來終止執行並退出容器,其中OPTIONS是Docker指令的可選引數(Docker自己的指令,比如-i),而後面的ARGS是指執行容器的指令(比如Linux中的ls指令)比如:

# 執行一個ubuntu容器,並且執行ubuntu的bash命令
docker run -it ubuntu bash
# 終止並且退出當前所在的容器
exit

可選引數有很多,比如:
-d 表示和終端分離後臺建立容器並列印容器ID
-P 表示將所有暴露的容器埠釋出到Docker主機上
-e 表示你如何將環境變數傳遞到容器中
–name 表示允許你指定一個容器的名字

【注意】:run指令在執行互動shell完成任何指令碼後都會退出並終止run的這個容器,除非在互動終端進行才不會終止退出。如果想要實現互動終端的功能就必須在啟動容器的時候帶上-it引數,此時如果要退出,exit指令可以幫助你退出當前的容器。

其中-i表示允許你對容器內的標準輸入 (STDIN) 進行互動,即可以操作此映象容器的指令,如Linux中ls指令;-t表示在新容器內指定一個偽終端或終端,指定這兩個引數才能進入Linux的終端控制檯

【附加的福利】在Docker中,每個容器映象執行的時候都會至少經過以下隱形的4個步驟:
1.Docker客戶端連線Docker的守護執行緒
2.Docker守護執行緒從Docker倉庫中尋找對應的映象檔案,先本地再遠端
3.Docker守護執行緒為對應的映象建立一個新的容器並執行進行輸出
4.Docker守護執行緒將容器的輸出內容輸出到Docker客戶端,Docker客戶端將它輸出到你的終端
以上就是在跑hello-world映象的內容

5.docker pull xxx拉取映象xxx,可以追加“:版本號”方式,當然一般可以先在阿里雲的Docker映象倉庫中找到需要的映象檔案然後複製它的docker拉取地址,最後回到PowerShell中貼上命令即可下載映象;除此以外Docker也提供了線上搜尋的映象的功能,可以使用

# 線上查詢與關鍵字xxx相關的映象資訊
docker search xxx

然後可以通過pull命令拉取相應的映象到HV虛擬機器中

6.docker ps [OPTIONS]可以檢視所有正在執行中的容器列表,然後可以通過docker inspect xxx檢視具體某個容器xxx的詳細資訊(這裡的xxx表示是容器的ID,可以只寫容器ID前面部分的字元,也可以寫全,比如有一個容器ID為:asgdhas3sa78a,那麼可以用docker inspect asg來檢視),可選引數如下:
-a顯示所有容器,包括未執行的
-q靜默模式,只顯示容器編號
-l顯示最近建立的容器
-n顯示最近建立的n個容器
-f根據條件過濾顯示的內容
-s顯示總的檔案大小

7.docker rmi [OPTIONS] xxxx [IMAGE...]刪除映象檔案xxxx(可以是映象的名字或者映象的ID),是刪除映象檔案(remove image,所以才是rmi),不是執行容器,注意兩者的區別(結合7、8兩個指令看),下次要用的時候還會從倉庫拉取(即下載)。可選引數主要有如下的幾個:
-f 表示強制移除映象
--no-prune 表示不刪除未加標籤的父級元素
有時在通過docker rmi指令刪除映象檔案的時候發現無法刪除,比如這裡刪除測試映象hello-world的時候,docker會報錯:

PS C:\Users\weiguo Liu> docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 102d39e1bac3 is using its referenced image f2a91732366c

這是因為容器依賴的原因(這些容器可能是活動的也可能是已經停止的狀態),即上述的過程,這個時候你必須首先移除依賴待刪除映象的容器,這裡可以通過docker -ps -a檢視所有的容器,檢視依賴此映象檔案的所有哪些,然後通過移除所有依賴該映象檔案的容器,再執行刪除映象檔案的操作才能成功,具體過程如下:

# 檢視所有的容器
docker ps -a

# 下面是輸出
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
0c44af19d764        ubuntu              "bash"              About an hour ago   Exited (0) 22 minutes ago                       hardcore_golick
fa0825a331ba        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                          admiring_engelb
4f6046251a91        hello-world         "/hello"            3 hours ago         Exited (0) 3 hours ago                          eager_allen
102d39e1bac3        hello-world         "/hello"            4 hours ago         Exited (0) 4 hours ago                          sleepy_sinoussi

# 移除依賴hello-world映象的容器(可以只寫容器ID前幾個字元)
PS C:\Users\weiguo Liu> docker rm fa
fa
PS C:\Users\weiguo Liu> docker rm 4
4
PS C:\Users\weiguo Liu> docker rm 1
1
PS C:\Users\weiguo Liu> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
0c44af19d764        ubuntu              "bash"              About an hour ago   Exited (0) 28 minutes ago                       hardcore_golick

# 最後才能刪除hello-world的映象檔案
docker rmi hello-world

或者可以方便的使用下面的指令進行刪除

docker rmi 

8.docker rm [OPTIONS] xxx [CONTAINER...]移除一個容器,可選引數主要有如下的幾個:
-f 表示強制刪除正在執行的容器
-l 表示刪除指定的連結
-v 表示移除和該容器相關區
注意和上述刪除映象檔案的區,這裡僅僅是將建立的容器移除,這些容器可以依賴一個映象檔案,容器和映象檔案之間是多對一的關係,也就是說一個映象檔案可以被多個容器依賴,每次通過docker run命令執行一個映象例項的時候都會自動建立一個容器(這就是為什麼一個映象檔案為什麼可以被多個容器依賴),這一點非常重要。對於容易移除操作的一般是針對已經停止執行的容器作這種操作,對於當前處於活動狀態的容器,先讓容器停止執行,然後才能移除:

docker stop hello-world
# xxx表示執行hello-world容器的名字或者ID
docker rm xxx

當然可以直接暴力一些,這樣是簡單一點:

docker rm -f xxx

或者直接移除所有的容器

# 務必靜默方式查詢,否則查找出大堆資訊無用,只用容器ID即可
docker rm $(docker ps -a -q)

9.docker start/stop xxx啟動指定容器xxx(容器ID或者名字,ID可以只是ID的前面部分的字元,名字必須是全稱),通常在使用docker run指令跑過映象的都會自動建立一個容器,下次再想跑這個例項的時候就可以通過這個指令來進行跑,通常情況會首先檢視一個對應映象檔案的容器ID(docker ps -a這裡必須檢視所有的容器,因為很可能之前的容器已經停止了),然後在執行上述的容器,可以通過這樣的方式來啟動或者終止一個容器,而不是重複建立同一個映象檔案的容器例項(除非真的是需要),因為上面的run指令是直接建立一個新容器來跑的。

【注意】Docker命令是可以巢狀的,用$符號來取每個命令執行的結果,比如移除所有的容器,首先要獲取所有的容器ID(docker ps -a -q),然後刪除docker rm $(docker ps -a -q)

相關推薦

Docker安裝基本指令學習記錄

一、安裝 官網下載社群版,下載對應的win10專業版,點選get Docker即可,連結:https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe 1.虛擬機器

Docker入門基本指令

Docker概念 Docker就相當於一個Github賬號,不過最開始的工程不能自己建立,要從DockerHub這個中央倉庫pull過來,這個工程Docker稱之為image,這個image竟然是個linux系統!!這是什麼概念?!以前我可以傳傳程式碼帶Github上就覺著很厲害了,現在我竟然可以有無限個作

docker學習一】CentOS7.5+Docker安裝使用「安裝、檢視、pull、建立、進入映象」

記錄安裝配置以及使用的過程,可能會有多處摘抄,已註明照抄地址,侵刪。   是什麼:個人理解,是一種移植性很強的虛擬機器,支援版本控制(類似於git),同一個伺服器可以執行多個docker容器,每個docker容器都有一個獨立的虛擬環境。 本人環境: 虛擬機器:Oracle

windows下docker安裝常用命令學習

兩個 inf tar 分享圖片 ear inux bash 登錄 clas docker search 鏡像名   本文主要介紹Docker在Windows下的安裝。關於Docker的介紹和文檔在其官網中可以找到:http://www.docker.com

SQL server數據庫的在server 2008R2上的安裝基本管理

server 數據庫 SQL server數據庫的在server 2008R2上的安裝及基本管理(一)選擇SQL的數據庫的鏡像文件雙擊setup.ext 執行安裝程序這裏選擇安裝項,並選擇全新安裝安裝的環境監測全部通過因為這裏是使用的破解版的鏡像,所以會自動生成密鑰再一次檢測安裝環境

docker安裝加速配置

console epo client target centos sha 版本 json uname 需要centos7版本[[email protected]/* */ ~]# uname -r3.10.0-514.el7.x86_64 第一步:更新當前軟件

redis 在Windows下的安裝基本操作(更新中~~~)

有用 redis 安裝 abc nbsp com inux eas pan 安裝目錄 Redis 安裝 Window 下安裝 下載地址:https://github.com/MSOpenTech/redis/releases。 Redis 支持 32 位和 64 位。這個需

緩存系列之三:redis安裝基本數據類型命令使用

pytho children tile 指令 sed eject 檢測 install 文件的 一:Redis是一個開源的key-value存儲系統。與Memcached類似,Redis將大部分數據存儲在內存中,支持的數據類型包括:字符串、哈希表、鏈表、集合、有序集合以及基

Linux運維之道之RHEL7系統安裝基本命令

達內linux雲計算運維admin安裝RHEL7系統1.準備系統光盤: ---插入RHEL7光盤,引導安裝程序; ---設置主機,將光盤設為第一引導設備 ----從RHEL7光盤啟動主機 ---檢測光盤的完整性 ---從ISO鏡像啟動時,建議跳過檢測;2.安裝過程: ----配置安裝程

window版docker安裝配置

刪除 下載 log 網上 拉取 def 配置 .cn 創建 1、下載docker,並安裝(網上教程很多,不做介紹),生成 VirtualBox2、打開VirtualBox ---default3、安裝鏡像centos 、mysql、php、nginx 安裝方式:

MySQL的安裝基本操作

mysql 數據庫 linux 楊書凡 MySQL是一個真正的多線程、多用戶的SQL數據庫服務,憑借其高性能、高可靠性和易於使用的特性,成為服務器領域中最受歡迎的開源數據庫系統。目前,由Oracle公司負責開發和維護MySQL的編譯安裝? ? 為了保證MySQL數據庫功能的完整性、可定制性,一

hadoop單機版安裝基本功能演示

lis fs基本操作 map jdk1 linu logs tput open etc 本文所使用的Linux發行版本為:CentOS Linux release 7.4.1708 (Core) hadoop單機版安裝 準備工作 創建用戶 useradd -m hado

docker安裝問題處理

run clas ins sudo 設置 虛擬 內心 color 用戶 1.在Ubuntu的命令行中輸入 sudo apt-get install docker.io 2.如果切換到了root用戶下 apt-get install docker.io 3.對於新安

20165221 Linux安裝命令入門學習

ubuntu 技術分享 .com 聯想筆記本 linux安裝 strong 命令 學習 www. 安裝過程 按照圖文教程,進行操作,遇到如下問題。 1.安裝ubuntu時從官網下載不成功。 最後在同學的幫助下,通過中文版網址入口進入,完成下載。 2.BIOS未恢復出廠設

雲計算:Docker安裝本地鏡像倉庫配置

docker images pull# **Docker的安裝及如何配置從國內鏡像中拖取需要的images到本地使用**實驗環境: OS:CentOS7.0 -X64 上網環境:通過代理服務器上網 1.首先下載docker安裝包docker-engine-1.7.1-1.el7.centos.x86

git安裝基本用法

directory .com http 安裝客戶端 direct 基本用法 git 鼠標右鍵 tortoise 安裝: 1先安裝客戶端,選擇默認路徑,直接下一步就可以了 2安裝圖形化客戶端,選擇默認路徑安裝完成 基本用法: 1同步coding上的文件   在桌面上點擊鼠標

CentOS7環境下GitLab安裝基本配置

tro 用戶 etc 進入 註意 AD centos systemctl rpm -ivh   新實驗室要求重新建設GitLab,對於我來講,是第一次有機會當元老參與實驗室的建設。下面分享我自己的實測經驗: 1. 安裝依賴軟件並設置開機啟動 yum install curl

了解Katalon的安裝基本使用(for mac)

studio san oid 時間 通過 view 自動 req 工作 一、整體了解: 2018 top 6的自動化測試工具(網上了解): 1. Selenium 2. Katalon Studio 3. UFT 4. Watir 5. IBM Rational Fun

基於CentOS7的MySQL-5.7的安裝基本操作

結構化 不存在 pro 啟動 extra ans mysql- ncurses eve 基於CentOS7的MySQL-5.7的安裝及基本操作 簡介 數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨著信息技術和市場的發展,特別

CentOS 7下MongoDB 3.6 的安裝基本操作

進程命令 san documents 獲得 運行 配置 imp 步驟 code 一、MongoDB簡介 MongoDB是一款跨平臺、面向文檔的數據庫,可以實現高性能,高可用性,並且能夠輕松擴展。MongoDB 是由C++語言編寫的,是一個基於分布式文件存儲的開源數據庫系