01-Docker入門篇章

Step1:了解Docker

開源的容器平臺:Golang https://github.com/docker/docker
Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平臺 -- Docker Hub Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式。Docker 客戶端會與 Docker 守護(hù)進(jìn)程進(jìn)行通信。Docker 守護(hù)進(jìn)程會處理復(fù)雜繁重的任務(wù),例如建立、運行、發(fā)布你的 Docker 容器。Docker 客戶端和守護(hù)進(jìn)程可以運行在同一個系統(tǒng)上,當(dāng)然你也可以使用 Docker 客戶端去連接一個遠(yuǎn)程的 Docker 守護(hù)進(jìn)程。Docker 客戶端和守護(hù)進(jìn)程之間通過 socket 或者 > RESTful API 進(jìn)行通信。

安裝

我的是centos7.2安裝請參考官方的Install的文字文檔

Step2:Docker基本命令

查看
$docker search centos
下載
$docker pull centos
使用阿里云的鏡像 阿里云鏡像

- 打開管理界面
- 我的加速器
  $sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
  $sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/$docker daemon --registry-> mirror=https://***.mirror.aliyuncs.com|g" /etc/systemd/system/docker.service
  $sudo systemctl daemon-reload
  $sudo service docker restart

Step3:創(chuàng)建容器

  #docker run centos
  #docker run 鏡像(如果沒有這個鏡像,就回去自動下載它)
  創(chuàng)建容器并執(zhí)行一個命令
  #docker run centos ls
  查看正在運行的容器
  #docker ps
  查看所有得容器
  #docker ps -a(-all)

Step4:管理容器

  *基于一個鏡像可以創(chuàng)建很多容器
  創(chuàng)建容器加名字
  #docker run --name demo-server centos /bin/echo 'demo'
  查看容器
  #docker ps -a
  移除容器
  #docker rm (容器ID|name)
  查看日志
  #docker logs demo-server(容器名字)

官方的命令文檔:Doc

Step5:帶互動的容器

  Docker Run
  使用方法:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  創(chuàng)建一個新的容器

  #參數(shù)optios:
  
   帶互動的容器,可以進(jìn)入容器運行內(nèi)部:
   -i, --interactive                 Keep STDIN open even if not attached
    大家都知道tty是什么東西了吧
   -t, --tty                         Allocate a pseudo-TTY
  
  官方一個互動案例:

我的


官方案例:

Step6:后臺運行一個容器

  運行后臺:
  -d, --detach                      Run container in background and print container ID    
  停止運行
  #docker stop (id|name)
  刪除所有已經(jīng)停止的容器
  #docker rm $(docker ps -a -q)

Step7:退出容器后,重新進(jìn)入可交互的容器

退出容器
#exit
退出后重新進(jìn)入可以交互的container
#docker attach (id|name)

Step8:基于當(dāng)前centos的nodejs環(huán)境進(jìn)行提交容器

##添加
[官方文檔](https://docs.docker.com/engine/reference/commandline/commit/)
當(dāng)我們修改了容器后,我們想把這個作為一個新的鏡像進(jìn)行發(fā)布
這里我把centos安裝了nodejs環(huán)境的作為一個images進(jìn)行提交

#!當(dāng)然如果你想學(xué)習(xí)Nodejs,那么在我的博客中請轉(zhuǎn)移到Nodejs分類目錄;

#docker commit -a zhaojunlike -m 'test-commit nodejs' nodejs-test zhaojunlike/nodejs-test:latest
#

移除

官方文檔

#docker rmi [id|name]

文檔部分提交鏡像說明

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes

Options:
 -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
 -c, --change value     Apply Dockerfile instruction to the created image (default [])
     --help             Print usage
 -m, --message string   Commit message
 -p, --pause            Pause container during commit (default true)

查看鏡像

#docker images
接下來我們使用自己的鏡像
#docker run zhaojunlike/nodejs-test node -e 'console.log(1)'
輸出結(jié)果:1
#

Step9:如何使用Dockerfile 創(chuàng)建鏡像

官方文檔

Dockerfile中,我們使用指令去指定一些操作的配置,建議對比官方文檔,沒毛病

指令說明:

  • FROM:
- FROM <image>
- FROM <image>:<tag>
- FROM <image>@<digest>
  • MAINTAINER
作者
  • RUN
-  RUN <command> (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows)
-  RUN ["executable", "param1", "param2"] (exec form)
  • CMD

指令太多了,官方文檔每一個解釋都相當(dāng)完善

現(xiàn)在我寫好了一個Dockerfile文件我們?nèi)?gòu)建他
官方文檔

由于個人愚昧,我貼了一端安裝nginx的代碼

#FROM 基于餒個鏡像進(jìn)行創(chuàng)建,這里我們基于我們已經(jīng)安裝好的centos
 FROM centos
 MAINTAINER zhaojunlike
 #當(dāng)然這里肯定不是這么寫的,我只是測試一下
 RUN yum install zlib-devel pcre-devel gcc wget make -y
 RUN wget http://nginx.org/download/nginx-1.10.2.tar.gz
 RUN mkdir /home/tmp
 RUN tar -zxf /nginx-1.10.2.tar.gz -C /home/tmp
 RUN cd /home/tmp/nginx-1.10.2 && ./configure --prefix=/usr/local/nginx1.10.2/
 RUN cd /home/tmp/nginx-1.10.2 &&  make && make install
 RUN /usr/local/nginx1.10.2/sbin/nginx

然后進(jìn)行鏡像構(gòu)建

#[root@localhost myDocker]# docker build --tag zhaojunlike:centos-nginx-install .
之所以是. docker會自動去當(dāng)前目錄找Dockerfile這個文件

當(dāng)中的過程就是把sh全部丟進(jìn)去了。



在build成功后我們可以

#docker images 就可以看到我們的鏡像了

but這些是什么鬼,可能是我在build很多次都不成功產(chǎn)生的cache
我要去rmi掉

# docker rm $(docker ps -a -q)

然后我們看看餒
docker真心爽



媽媽再也不容擔(dān)心,環(huán)境安裝麻煩啦。
不過接下來得問題,是讓我自己去訪問這個鏡像里面得nginx web,那么下一篇應(yīng)該是如何守護(hù)進(jìn)程跑容器,如何進(jìn)行網(wǎng)絡(luò)管理了吧

附頁

docker hub 成千上萬的容器,大部分都是其他開發(fā)者上傳的,我們也去上傳一個。

官方文檔

具體工作請看完文檔吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,772評論 0 120
  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,524評論 0 27
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)???..
    sessionboy閱讀 4,034評論 2 49
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,876評論 15 147
  • 今天說到跑步,我都沒臉看了,之前懷孕時,天天晚飯后堅持散步半個鐘,結(jié)果產(chǎn)后就像一堆爛泥一樣癱瘓在那里一動不動,腹部...
    咿呀作語閱讀 342評論 2 3

友情鏈接更多精彩內(nèi)容