Mac 安裝Docker環境(一)
入門Docker,你要下載什麼?註冊什麼?
+ Docker.app你肯定是要下載的!
+ 註冊Docker官方賬號,你需要它!
Docker安裝好,賬號也註冊後,點選桌面頂欄的Docker圖示,點選sign in,登陸你的Docker賬號。
+ 註冊DaoCloud賬號,獲取加速服務!
不可否認,有時直接從Docker官方往本地pull映象會十分緩慢。。。這時我們可以通過國內的Docker服務提供商免費獲取加速pull映象服務,阿里網易好像都有這種服務,我選擇的是DaoCloud:點我註冊DaoCloud賬號
註冊後登陸DaoCloud,找到這個按鈕:
接著,按照它的步驟,為自己新增Docker加速服務
+ 到此準備工作結束,進入下一部分!
要想入門Docker,首先你需要理解Docker!
我也不扯淡了,直接上我對Docker的理解:(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
Docker,可以說是一個終端命令列的虛擬機器,但更準確的說法,其實應該是一個虛擬環境。比如,你想要在PC上無縫使用Linux麼?那麼虛擬機器並不是你唯一的出路,你還有Docker!我更願意稱Docker為一個容器,當然這只是Docker的一個狹義解釋,Docker不止是一個容器。Docker包含3個重要概念:
- 一個,是映象(Image),映象是靜態的、可以被使用者互相分享的檔案。我們玩過雙系統和虛擬機器的人都知道,首先你需要一個.iso映象,才能安裝系統。Docker中的映象也是這個東西,映象是靜態的,你不能對他操作,只能pull別人的映象或者push自己的映象。
- 還有一個,是容器(Container),前面說過,映象是靜態不可操作的,只能被分享和下載,那什麼是能被操作的呢?就是容器裡!容器可以理解為映象的動態狀態,也就是我們虛擬機器中系統裝好後的狀態,其實這麼說是不對的,容器最符合的描述應該是Linux的iso檔案的
Live CD
模式,比如我們玩雙系統時都進入過Live CD
模式,不安裝系統而直接進入系統,很神奇是吧,Docker的容器就是這個概念,只不過更加輕量更加迅速便捷。但是Live CD
的害處就是你關機後作出的修改安裝的軟體全部gg,容器也是一樣,一旦被直接推出,之前安裝的gcc啊vim啊啥的就會全部gg掉。如果要儲存修改,就需要將當前容器封裝成一個新的映象,這樣下次啟動這個新的映象後之前作出的修改還都在。 - 最後,是倉庫(Repository)。各位在前面看到我寫的pull和push什麼的,有沒有暈?不知道各位對於git熟悉不熟悉,Docker中的倉庫很像git的程式碼倉庫,你可以pull自己之前push到自己倉庫的映象到本地,也可以pull別人push到公共倉庫的映象到自己本地。說白了就是百度雲盤,你可以上傳(push)自己做好環境的Docker上去,也可以下載(pull)自己雲端的映象到本地。同時,我們知道百度雲最大的特點就是分享(你懂的嘿嘿嘿),類比Docker,如果你得到百度雲分享連結(別人的映象名字、標籤和別人的使用者名稱),你還可以下載(pull)別人分享的映象到自己的本地,別人也可以下載(pull)你的映象,因為Docker倉庫都是公共的。當然,每個免費使用者有一個名額把自己的一個映象設為私有,也就是禁止被分享給別人,類比百度雲上你自己儲存的而沒有被生成分享連結的小姐姐。
接下來來張高大上的概念圖,各位看個熱鬧2333
接下來就是實戰了!開啟你的iTerm2!(我是iTerm2黨2333,開啟普通terminal也行,這個不影響)
+ 檢視Docker版本資訊
終端輸入命令檢視版本
docker version或者docker -v
Client:
Version:18.03.0-ce
API version:1.37
Go version:go1.9.4
Git commit:0520e24
Built:Wed Mar 21 23:06:22 2018
OS/Arch:darwin/amd64
Experimental:false
Orchestrator:swarm
Server:
Engine:
Version:18.03.0-ce
API version:1.37 (minimum version 1.12)
Go version:go1.9.4
Git commit:0520e24
Built:Wed Mar 21 23:14:32 2018
OS/Arch:linux/amd64
這是我的版本
+ 是時候pull你的第一個映象下來的!
Docker安裝好後是不會自帶映象的,你需要從倉庫自己pull一個映象下來,自己製作自己的映象也是一個道理,你可以通過在已有的映象基礎上生成自己的映象或者看一下這篇部落格: 隨便百度的如何建立自己Docker映象得到的教程
Docker映象官方好像只提供Linux,這個很容易想,windows和mac是要交錢的吧大概?
搜尋ubuntu的Docker映象docker search ubuntu
,這個如果你想要什麼centos,直接改就行,不區分寫法,我的返回結果:
~$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating s... 6636 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 131 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 105 [OK]
ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 86 [OK]
ubuntu-upstart Upstart is an event-based replacement for ... 80 [OK]
neurodebian NeuroDebian provides neuroscience research... 40 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components... 31 [OK]
...
//omitted by sgy(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
...
拉取官方最新版的ubuntu映象:docker pull ubuntu:latest
,其中的latest是一個標籤(tag),表示是當前最新版本。你應該得到的資訊,類似這樣的
~$ docker pull ubuntu:latest
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
aed158d74952: Pull complete
773ae8273d14: Pull complete
d1d487w88782: Pull complete
cd3d6cd6c0cf: Pull complete
8d73bu79120c: Pull complete
Digest: sha256:35bc48a1ca97c3f74rhf378hj92hd82j29i4hf4hf84nf0dhnsid232de8d8
Status: Downloaded newer image for docker.io/ubuntu:latest
你輸入的命令實際上相當於docker pull registry.hub.docker.com/ubuntu:latest
命令,即從註冊伺服器registry.hub.docker.com
中的名為ubuntu
的倉庫中下載標籤為latest
的映象。
由於我的lab統一要求,ubuntu需要14.04版本,所以我在hub裡面搜了搜,找到了一個使用者分享的14.04 64位純淨映象(base image),下面將他的映象扒下來
~$ docker pull chug/ubuntu14.04x64
這個使用者還有很多其他版本的ubuntu系統,12 13 14的32位64位都有,全是純淨映象。
+ 檢視你本地的映象倉庫!
把初始映象拉下來後,就可以啟動它了,不過,可以先使用docker images
命令檢視你自己的本地映象,我隨便找了個例子,你的也應該是類似這樣的:
~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu 16.04 e4415b714b62 11 days ago 128.1 MB
docker.io/ubuntu latest e4415b714b62 11 days ago 128.1 MB
docker.io/ubuntu 12.04 aefa163f7a7e 11 days ago 103.5 MB
docker.io/centos latest 0584b3d2cf6d 3 weeks ago 196.5 MB
從網上一個教程中找到以下說法,比我說的好,那就看這個吧!
在列出資訊中,可以看到幾個欄位資訊:
- 來自於哪個倉庫,比如 ubuntu
- 映象的標記,比如 16.04
- 它的 ID 號(唯一),比如e4415b714b62
- 建立時間
- 映象大小
其中映象的 ID 唯一標識了映象,注意到 ubuntu:16.04 和 ubuntu:latest具有相同的映象 ID ,說明它們實際上是同一映象。 TAG 資訊用來標記來自同一個倉庫的不同映象。例如 ubuntu 倉庫中有多個映象,通過 TAG 資訊來區分發行版本,例如10.04 、 12.04 、 12.10 、 13.04 、 14.04 等。例如可以使用
docker run -t -i ubuntu:16.04 /bin/bash
命令指定使用映象ubuntu:16.04
來啟動一個容器。如果不指定具體的標記,則預設使用latest
標記資訊。privileged 許可權 docker run --privileged -ti unbuntu:16.04 讓使用者擁有root許可權 甚至可以在docker 中執行docker
-e設定環境變數 -v 移除與容器關聯的空間。
+ 啟動你的映象並盡情安裝軟體吧!
以下內容均以我自己pull下來的chug的初始映象為例:
現在你已經有一個初始的映象了,注意這個裡面是什麼都沒有的,連vim都沒裝,是精簡到不能再精簡的映象了。
首先啟動它:
~$ docker run -it chug/ubuntu14.04x64 /bin/bash
root@aa97ba3292ce:/#
-it 表示執行在互動模式,是-i -t的縮寫,即-it是兩個引數:-i和-t。前者表示開啟並保持stdout,後者表示分配一個終端(pseudo-tty)一般這個模式就是可以啟動bash,然後和容器有命令列的互動
可以看到我們終端的字頭變成[email protected]:/#
了,這就意味著我們的映象已經建立了一個容器例項。現在我們可以對這個“ubuntu系統”進行操作了
比如安裝vim:
[email protected]:/# apt-get install vim
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
file libexpat1 libffi6 libgpm2 libmagic1 libpython2.7 libpython2.7-minimal libpython2.7-stdlib libsqlite3-0 libssl1.0.0 mime-support vim-common vim-runtime
Suggested packages:
gpm ctags vim-doc vim-scripts
The following NEW packages will be installed:
file libexpat1 libffi6 libgpm2 libmagic1 libpython2.7 libpython2.7-minimal libpython2.7-stdlib libsqlite3-0 libssl1.0.0 mime-support vim vim-common vim-runtime
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 10.7 MB of archives.
After this operation, 50.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]
- 看到我沒有用sudo,是因為本來就已經是超級使用者(root)狀態了。
同理按照我自己的需求,我安裝了gcc和gdb
+ 想退出容器?很簡單!
如果使用exit,命令退出,則容器的狀態處於Exit,而不是後臺執行。如果想讓容器一直執行,而不是停止,可以使用快捷鍵 ctrl+p ctrl+q 退出,此時容器的狀態為Up。
檢視當前正在執行的容器:
~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa97ba3292ce chug/ubuntu14.04x64 "/bin/bash" 7 minutes ago Up 7 minutes relaxed_hoover
看到當前有一個ID為aa97ba3292ce的容器(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
啟動、停止、重啟容器aa97ba3292ce的命令:
~$ docker start aa97ba3292ce
~$ docker stop aa97ba3292ce
~$ docker restart aa97ba3292ce
後臺啟動一個容器後,如果想進入到這個容器,可以使用attach命令:
~$ docker attach aa97ba3292ce
+ 軟體裝完,想儲存環境?commit幫你!
將容器轉化為一個映象,即執行commit操作,完成後可使用docker images
檢視
root@aa97ba3292ce:/#exit //先退出容器
~$ docker commit -m "ubuntu with vim" -a "sgy" aa97ba3292ce sgy/ubuntu:vim
~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sgy/ubuntu vim 52166e4475ed 5 seconds ago 358.1 MB
chug/ubuntu14.04x64 latest 0584b3d2cf6d 9 days ago 196.5 MB
其中,-m指定說明資訊;-a指定使用者資訊;aa97ba3292ce代表容器的id;sgy/ubuntu:vim指定目標映象的使用者名稱、倉庫名和 tag 資訊。我這裡都是為了部落格瞎編的使用者名稱,我自己的使用者名稱也不是sgy,你執行命令的時候使用自己註冊Docker時的使用者名稱。
此時Docker中就有了我們新建的映象sgy/ubuntu:vim,此映象和原有的ubuntu映象區別在於多了個vim工具。此時我們利用新映象建立的容器,本身就自帶vim了。
啟動新建立的映象,可以看到vim已經自帶了。
~$ docker run -it sgy/ubuntu:vim /bin/bash
[email protected]:/# vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Apr 4 2017 18:14:54)
...
//omitted by sgy(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
...
利用exit退出容器。此時Docker引擎中就有了兩個容器,可使用docker ps -a
檢視。
+ 想要刪除容器或者映象?用這個!
如果想刪除容器或者映象,可以使用rm命令,注意:刪除映象前必須先刪除以此映象為基礎的容器(哪怕是已經停止的容器),否則無法刪除該映象,會報錯Failed to remove image (e4415b714b62): Error response from daemon: conflict: unable to delete e4415b714b62 (cannot be forced) - image has dependent child images
類似這種。
~$ docker rm container_id
~$ docker rmi image_id
- 有的時候儘管刪除了全部容器,映象還是無法刪除,這時點選mac頂欄中的docker logo,選擇restart,然後再試一次rmi,應該就沒問題了。(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
+ 附上一張高大上的Docker命令圖
+ 一次配置,到處使用?那就push到hub上吧!
因為之前已經在Docker.app中登陸了Docker賬號,所以現在直接
~$ docker push sgy/ubuntu:vim
- 1
就可以了!
下次到了機房,在ubuntu系統中安裝Docker,配置好加速器,啟動Docker,docker login
登陸自己的賬號,然後直接~$ docker pull sgy/ubuntu:vim
就可以把你push到hub的已經配置好的環境的映象給扒下來。做完實驗,再push上去就ok了!
Docker中安裝gcc、gdb時遇到的問題
+ add-apt-repository: command not found
14.04系統解決辦法:
apt-get install software-properties-common
- 1
older版本的系統:
apt-get install python-software-properties
- 1
+ Docker中使用gdb無法進入斷點,無法除錯
加上--privileged
引數
~$ docker run -it --privileged sgy/ubuntu:vim /bin/bash
- 1
結語
到此本文就結束了,我說得很清楚,這只是一篇入門教程,可以讓你從“一問三不知”到達“一問一不知”的狀態,再高層次?那就靠自己了!
hope my blog will be of assistance, peace out : )
References
防止系統自動遮蔽,以下連結都被我做了處理,去掉’#’就能正常訪問了
[1] h#ttps://zhuanlan.zhihu.com/p/23599229
[2] h#ttps://zhuanlan.zhihu.com/p/22259092
[3] h#ttp://cpper.info/2016/12/03/docker-image-introduction.html
[4] h#ttp://blog.csdn.net/ture_dream/article/details/52651746
[5] h#ttp://www.leesven.com/2254.html
[6] h#ttps://askubuntu.com/questions/778318/how-do-i-install-gcc-6-latest-6-1-on-ubuntu-14-04-lts-make-c14-the-default
[7] h#ttp://blog.qiniu.com/archives/805
[8] h#ttp://blog.csdn.net/ziren235/article/details/78064936?locationNum=5&fps=1
[9] h#ttps://segmentfault.com/a/1190000002766882
[10] h#ttp://blog.csdn.net/jiang_xinxing/article/details/58025417
[11] h#ttp://blog.csdn.net/yyw794/article/details/78048372
[12] h#ttp://p.primeton.com/articles/549ad953e13823790300009d
相關推薦
Mac 安裝Docker環境(一)
入門Docker,你要下載什麼?註冊什麼?+ Docker.app你肯定是要下載的!+ 註冊Docker官方賬號,你需要它!Docker安裝好,賬號也註冊後,點選桌面頂欄的Docker圖示,點選sign in,登陸你的Docker賬號。+ 註冊DaoCloud賬號,獲取加速服
Docker實戰(十一):Docker安裝ELK環境(二)
Docker安裝ELK環境(二) 日誌收集系統架構 日誌收集系統架構簡介 Logstash Agent/Flume:採集各個業務系統的日誌,然後傳送給Redis/Kafka訊息佇列。 Redis/Kafka:接收使用者日誌的訊息佇列,臨時儲存
win10系統docker學習(一)——docker安裝
tle png 問題: 方案 start htm 完成後 系統 mage windows系統中目前有兩種安裝docker的方式,分別為boot2docker和docker toolbox。按照官方說明和實際安裝過程來講,推薦使用docker toolbox方
windows環境下搭建Java開發環境(一):jdk安裝和配置
變量 win jns jdk安裝 分享 tool 直接 www. 技術 一、資源下載 官網:http://www.oracle.com/technetwork/java/javase/downloads/index.html 本人安裝的是jdk1.8,百度雲資源:鏈
測試環境docker化(一)—基於ndp部署模式的docker基礎鏡像制作
XML spl nec 快速部署 onf 問題 java 加載 ons 本文來自網易雲社區作者:孫婷婷背景我所在測試項目組目前的測試環境只有一套,在項目版本叠代過程中,開發或產品偶爾會在測試環境進行數據校驗,QA人數在不斷增加,各個人員在負責不同模塊工作時也會產生臟數據,導
Docker系列(一):容器監控工具Weave Scope安裝
管理功能 http ges 支持 mage www -i 自己 redis。 項目進行容器化之後,配套的基礎設施包括監控、編排、管理等都需要進行一並完善。這裏也是自己一邊學習一邊進行記錄。 Weave Scope 的最大特點是會自動生成一張 Docker 容器地圖,讓我們能
docker學習(一):docker安裝和架構
本筆記根據51CTO的CloudMan博主的部落格而記錄的。 本節主要學習 docker安裝和解除安裝 docker的架構 一、Docker的安裝和解除安裝 Docker的安裝 1、安裝之前,要先把舊版的Docker給解除安裝了,以下是Docker官網上的安裝前解除安裝Dock
Vagrant 搭建跨平臺的 PHP 開發環境 (一)安裝 ubuntu 虛擬機器
Vagrant是一個軟體,可以自動化虛擬機器的安裝和配置流程,支援 VirtualBox 、VMware 、AWS 作為虛擬機器以 VirtualBox 為例,步驟如下: Windows 10 系統中 需要關閉 Hyper-v , 小米筆記本中 biso 中找不到 虛擬化配置,關閉 Hyper-v 就可以了
Vagrant 搭建跨平臺的 PHP 開發環境 (一)安裝 ubuntu 虛擬機
刪除 des 添加 ans com 操作系統 nsh list 找不到 Vagrant是一個軟件,可以自動化虛擬機的安裝和配置流程,支持 VirtualBox 、VMware 、AWS 作為虛擬機以 VirtualBox 為例,步驟如下: Windows 10 系統中 需要
Docker容器(一)-- 基本概念及安裝
1.docker簡介 1.1 雲端計算簡介 什麼是雲端計算: 雲端計算是一種資源的服務模式,該模式可以實現隨時隨地、便捷按需地從可配置計算資源共享池中獲取所需的資源(如網路、伺服器、儲存、應用及服務),資源能夠快速供應並釋放,大大減少了資源管理工作
搭建heron環境(一)安裝JDK
1. 到oracle下載1.8版本的jdk 2. 修改/etc/profile, 並儲存。 新增如下幾行 JAVA_HOME=/usr/jdk1.8.0_101
用centOS 7安裝cadence搭建適合IC Design的科研環境(一)——相關知識準備
這篇部落格記錄我在用centOS搭建適合模擬積體電路設計的科研環境的過程,主要內容從我的OneNote筆記中整理,一是為了從雜亂的筆記中篩選出有價值的資訊,二是希望能幫助更多像我一樣的新手少走彎路。 過程中所需要的一些背景知識我儘量附上鍊接或參考,如有差錯,還
docker學習(一)在centos7上安裝與啟動docker
CentOS Docker 安裝 1、Docker支援以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提條件 目前,CentOS 僅發行版本中的核心支援 Docker。 1、Docker 執行在 CentOS
Docker實踐(一)應用場景和安裝
隨著網際網路的發展,容器技術越來越得到大規模應用廠家的重視。Docker作為paas平臺的容器,最近幾年引起眾多技術人士的關注,並且也越來越流行。 一、Docker是什麼 Docker 是一個開源的
centos 下 docker 的 安裝與使用 (一)
一. docker Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。 從上面Docker的lo
一步步教你如何在Ubuntu虛擬機器中安裝QEMU並模擬模擬arm 開發環境(一)uImage u-boot
初次接觸qemu是因為工作的需要,有時候下了班,可能需要在家研究一些東西,因為博主用到arm環境,這時候博主比較小氣,不願花錢買開發板,當然博主在這裡給大家的建議是,如果要真正學懂arm構架的相關知識,還是單獨買一塊arm的開發板,慢慢摸索吧,畢竟這才是最好的學習方法,如果
Mac自帶Apache搭建PHP開發環境(一)phpinfo
命令列: 開啟apache服務:sudo apachectl start 停止apache服務:sudo apachectl stop 重啟服務:sudo apachectl restart 檢視版
搭建環境(一)Ubuntu14.04安裝英偉達顯示卡
本來打算自己在英偉達官網下載驅動,無意中在系統的附加驅動裡搜到有現成的,so,直接切換, 那個X.Org Xserver 是集顯使用的驅動,這也是後面悲劇禍根。 更改過程大概七八分鐘的樣子,然後提示你重新啟動, 然後我就被困在登入介面了,輸入密碼跳一下
(轉)Windows10下的docker安裝與入門 (一)使用docker toolbox安裝docker
查看 ads 而不是 tar bubuko 安裝docker install 流行 移植 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相
Jenkins教程——從安裝到部署Docker服務(一)安裝Jenkins
前言 寫了好久Jenkins的指令碼了,寫得雖然不是太好,但是可以基本滿足需要,最近比較忙,這個月也沒怎麼更新部落格,開始更新Jenkins這個系列的文章,打算從安裝Jenkins -> 流水線工程HelloWorld->宣告式流水線語法 -> 流水線構建微服務映象並部署 ,大體上會分這幾部