Docker 入門


  這些天了解了現在流行的容器技術Docker,主要是參考這個系列的博客 http://www.cnblogs.com/CloudMan6/tag/Docker/ 還有Docker中文網 http://www.docker.org.cn 

  本篇博客主要講一些命令的操作,至於原理性的東西就不多講了,這些在網上都可以找到,本篇博客主要是記錄一些命令的操作,用於以后用到可以方便的查到。命令是用到的時候再查的,不過原理性的概念還是要了解的,docker這個東西使用的時候不難,沒有多少要學的。重要是了解Docker概念后,根據實際項目在進行配置即可。現在了解只是為了以后快速使用而已。

1. 安裝

  系統使用的是Debian 8.8,先配置Dockerapt源。

apt-get install apt-transport-https ca-certificates curl software-properties-common

  增加Docker 官方的GPG

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  注意后面的 -  號, 這里使用ubuntugpg

  將Docker的源添加到 /etc/apt/sources.list

add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable”

  使用Aliyun源

https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.1cbe1991CFEvea
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

  安裝Docker

apt-get update
apt-get install docker-ce

  查看是否安裝成功

service docker status
docker version

 

   

2. 加速

  由於Docker Hub的服務器是在國外,下載鏡像(image)時會比較慢,有時候網絡斷開還要重新下載,好在Docker提供私服功能,國內就有好多家公司提供了這樣的服務。這里使用 daocloud.io 提供的服務。首先在daocloud.io免費注冊一個用戶。然后在用戶管理界面哪里有個加速器( https://www.daocloud.io/mirror#accelerator-doc )

  

  運行命令后,重啟Docker即可。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://71***3.m.daocloud.io 
service docker restart

3. 運行第一個容器Docker

docker run -d -p 80:80 httpd #運行后自動從服務器上下載image,然后以后台方式運行容器。
docker images  #進行查看
docker ps #查看運行情況

  然后訪問本地的Web服務器

   

  Docker 架構圖

4. 基本操作

docker run -it centos  #下載並以命令行運行centos

  進入后,可以在里面進行操作,基本的操作跟在一台Linux主機上操作是一樣的,沒有什么區別。如果在容器(Container)里面退出的話,對應的容器也就關閉,假設進入后,還沒有退出來。新建一個控制台,然后在里面輸入docker ps 就可以查看當前真正運行的容器實例。在容器里面的所有操作,都是暫時的,如果操作后,退出容器,那么是不進行保存的。如果想保存,那么要在另外的控制台用命令保存當前運行的容器,生成一個鏡像(image).至於原理性的東西,請參考具體的文章。

  在新的控制台中輸入 docker ps 查看當前運行的容器,記住運行的Container ID,然后通過下面命令對當前運行的容器生成一個快照鏡像(Image)

docker commit 17022396134b centos-new  # docker commit ContainerID new-ContainerName

  這樣就生成一個鏡像了。由於容器是分層的,這里保存會很快。然后通過 docker images 可以查看剛才保存的鏡像。

5. 通過Dockerfile構建鏡像

  通過Dockerfile方式構建鏡像,底層通過解析Dockerfile文件一條一條命令進行docker commit 一層一層構建新鏡像。Docker的分層架構,可以具體去了解一下,設計的很好。

  創建一個簡單的Dockerfile文件

  然后在Dockerfile 文件中輸入以下內容

FROM ubuntu
RUN sed -i ‘s/archive.ubuntu/mirrors.aliyun/g’ /etc/apt/sources.list #這里用阿里雲(網易163)的開源鏡像服務器,會快一點。
RUN apt-get update && apt-get install -y vim
COPY testfile /

  命令行輸入命令

docker build -t ubuntu-with-vi-dockerfile .

  注意后面的點. 表示從當前目錄查找Dockerfile文本文件,然后鏡像構建。

  然后可以通過 docker images 查看,可以通過 docker history ubuntu-with-vi-dockerfile 查看當前鏡像的歷史修改信息。

  關於Dockerfile語法還比較多,還有很多高級操作,不過我覺得,這個在實際項目中有需要再去查,然后使用即可,這里就不展開說明。

6. 建立私服

  這個還是蠻重要的一部分,大部分實際項目都會通過這種方式進行內網部署。雖然現在很多雲服務,大部分也通過這種方式進行部署,但是通過網絡鏡像雲部署的,對於個人項目和曉欣項目比較多。稍微復雜一點的,一般公司都會自己組建服務器,即使使用雲主機,也是會部署在雲主機內網里,不大會將鏡像放到外網。

  下面就介紹如何搭建私服。

  首先下載Docker Hub上官方鏡像registry,這個也是Docker image ,是官方提供的。

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:latest

  由於使用-d參數,所以是后台運行。

docker ps

  

  可以看到私服就這樣啟動了,是不是很容易,這就是Docker容器化的優勢。

  我們對剛才下載的httpd 復制一份,命名一個新tag

docker tag httpd:latest localhost-httpd #錯誤,如果要保存在本地,需要填寫對於的域名
docker tag httpd:latest localhost:5000/myuser/httpd

  

   這樣就復制了一個,可以通過push 命令推送到本地倉庫。

  如果省略域名就會默認推送的docker.io上了。(docker push localhost-httpd:latest)

docker push localhost:5000/myuser/httpd

   

  這樣就表示推送到本地倉庫了。可以在本地的 /myregistry 查看

   

  新開了一個虛擬機,然后通過遠程下載對應的鏡像。

  

  但是發現好像不能用http,只能用https,我們需要修改一些配置。現在的最新版本修改 /etc/docker/daemon.json 這個配置文件.打開后可以看到里面有我們之前寫入的daocloud.io這個加速用的網址。我們在其后面加上如下配置:

  { “insecure-registries” : [“192.168.56.150”] } 服務器端和客戶端都要進行配置。配置后如下顯示

   

  然后 service docker restart # 重啟Docker 要注意看registry 是否還啟動着,如果沒有,要重新啟動。因為重啟Docker Dockerstop 正在運行的容器,可以試着docker start ID

  

7. 多說兩句

  其他高級使用,如使用Docker 自帶的對硬件的限制功能。使用Docker-Compose來管理Docker集群等高級功能。

  參加工作后,現在沒有很多連續的時間,很難像以前那樣做一個系列的博客文章。只能利用有空的時間,看一些比較前沿的計算,然后簡單的了解一下而已,並不能很好的深入,現在的想法是能學點就多學點,多了解一些,等實際工作中有機會用到的話,再進行深入理解。平時沒事,就看看,了解了解。

 

參考資料:

http://www.docker.org.cn/book/docker/what-is-docker-16.html 

http://www.cnblogs.com/CloudMan6/tag/Docker/ 

http://www.cnblogs.com/zuoxiaobing/p/6259029.html

http://blog.csdn.net/candcplusplus/article/details/53728507

本文地址: http://www.cnblogs.com/wunaozai/p/6936787.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM