成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一篇文章帶你掌握docker基礎(chǔ)知識(shí)

TANKING / 966人閱讀

摘要:和區(qū)別讓用戶可以進(jìn)入查看輸出等等操作,但是并不會(huì)另外啟動(dòng)一個(gè)進(jìn)程如果你用來退出,同時(shí)這個(gè)信號(hào)會(huì)默認(rèn)情況會(huì)啟動(dòng)另外一個(gè)進(jìn)程來進(jìn)入,這里的操作是在這個(gè)進(jìn)程下的。

走在通往docker的大道上——docker基礎(chǔ)知識(shí)匯總

最后編輯時(shí)間:2017年03月09日


1.Docker是什么

Docker是一種新的容器化技術(shù),為應(yīng)用開發(fā)和部署提供“一站式”容器解決方案,能幫助開發(fā)者高效快速的構(gòu)建應(yīng)用,實(shí)現(xiàn)“Build,Ship and Run Any App, Anywhere”,從而達(dá)到“一次構(gòu)建,到處運(yùn)行”的目的。

2.為什么Docker

相信大家都有這樣的遭遇,每次要開發(fā)新軟件或者換環(huán)境的時(shí)候,需要安裝配置一大堆的依賴。雖然有yum或者apt這類的包管理軟件幫忙,但是如果出現(xiàn)的包沖突,或者找不到包的情況,或者需要源碼編譯卻缺失依賴,這種環(huán)境部署簡直就是噩夢。

Docker就是解決上述噩夢的利器。同時(shí),Docker也解決了跨平臺(tái)部署的問題,你可以在MacOS, Windows, Linux上安裝Docker,然后下載你所需要的Docker鏡像(image)進(jìn)行程序開發(fā)。當(dāng)你的程序需要發(fā)布的時(shí)候,僅僅需要將你的Docker鏡像打包發(fā)布,不再需要搭建新環(huán)境,讓軟件開發(fā)流程變得快速簡單。

3.Docker的特色

包括但不僅限于:

物美價(jià)廉

輕量級(jí)和便攜化

低CPU 和內(nèi)存使用

啟動(dòng)、運(yùn)行、關(guān)閉速度快

可以用來作為云計(jì)算的基礎(chǔ)

對于開發(fā)和部署來說,Docker可以:

更快速的交付和部署應(yīng)用環(huán)境

更高效的資源利用率

更便捷的遷移和擴(kuò)展性

更便捷的應(yīng)用更新管理

4.Docker與虛擬機(jī)

Docker和虛擬機(jī)都是基于軟件的平臺(tái)虛擬化技術(shù),其中:

虛擬機(jī)屬于完全虛擬化,即模擬完整的底層硬件環(huán)境特權(quán)指令的執(zhí)行,客戶操作系統(tǒng)無需進(jìn)行修改。比如我們常用的VirtualBox,VMWare Workstation和Parallels Desktop等虛擬化軟件。

Docker和其它容器技術(shù)便是操作系統(tǒng)級(jí)虛擬化,即直接通過內(nèi)核創(chuàng)建虛擬的操作系統(tǒng)實(shí)例(內(nèi)核和庫),來隔離不同的進(jìn)程和資源。

也就是說,Docker容器不需要額外的虛擬機(jī)管理軟件和虛擬機(jī)操作系統(tǒng)層,直接在宿主機(jī)操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,從而達(dá)到輕量級(jí),高效的目的。

5.Docker核心概念 Docker底層組成:

Namespace:隔離技術(shù)的第一層,確保 Docker 容器內(nèi)的進(jìn)程看不到也影響不到 Docker 外部的進(jìn)程。

Control Groups:LXC 技術(shù)的關(guān)鍵組件,用于進(jìn)行運(yùn)行時(shí)的資源限制。

UnionFS(文件系統(tǒng)):容器的構(gòu)件塊,創(chuàng)建抽象層,從而實(shí)現(xiàn) Docker 的輕量級(jí)和運(yùn)行快速的特性。

Docker的主要構(gòu)成:

Docker Client:用戶和 Docker 守護(hù)進(jìn)程進(jìn)行通信的接口,也就是 docker 命令。

Docker Daemon:宿主機(jī)上用于用戶應(yīng)答用戶請求的服務(wù)。

Registry:注冊服務(wù)器,注冊服務(wù)器是存放倉庫(Repository)的具體服務(wù)器。

Docker的三元素:

Container:用于運(yùn)行應(yīng)用程序的容器,包含操作系統(tǒng)、用戶文件和元數(shù)據(jù),相當(dāng)于鏡像Images的一個(gè)運(yùn)行實(shí)例。。

Images:只讀的 Docker 容器模板,簡言之就是系統(tǒng)鏡像文件。

DockerFile:進(jìn)行鏡像創(chuàng)建的指令文件。

簡單來說,Docker 鏡像就是一個(gè)只讀的模板。例如:一個(gè)鏡像可以包含一個(gè)完整的 ubuntu 操作系統(tǒng)環(huán)境,里面僅安裝了 Apache 或用戶需要的其它應(yīng)用程序。

6.Docker安裝

Docker是建立在Linux內(nèi)核基礎(chǔ)上的,在目前的主流Linux系統(tǒng)中,都已經(jīng)原生支持了Docker且使用體驗(yàn)也最好,當(dāng)然,在Windows平臺(tái)和MacOS系統(tǒng)中也支持Docker,只是需要使用類似Boot2Docker等虛擬化工具來提供Linux支持。

關(guān)于在各種平臺(tái)上安裝Docker的方法參考 官網(wǎng) 的Docker Docs,這里不再贅述。

7.Docker基礎(chǔ)命令

Docker提供了很多命令來管理鏡像、容器和倉庫。包括:

從Docker Hub倉庫中查找search、上傳push、下載pull鏡像。

查看本地已有鏡像、容器信息的images、inspectps命令。

刪除本地鏡像和容器的rmirm命令。

基于已有容器創(chuàng)建鏡像的commit命令和基于Dockerfile創(chuàng)建鏡像build命令。

運(yùn)行、進(jìn)入容器的runexecattach命令。

鏡像的保存和導(dǎo)入命令saveload,容器的導(dǎo)出導(dǎo)入命令exportimport

具體命令的使用方法使用命令docker --help查看所有命令列表,使用docker COMMAND --help查看具體命令的信息

8.基礎(chǔ)命令詳解 1.檢查安裝 docker info

如果 Docker 沒有安裝,會(huì)提示command not found,如果 Docker 已經(jīng)成功安裝,則會(huì)有類似如下的提示:

輸入
docker info

輸出
Containers: 2
Images: 2
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 6
 Dirperm1 Supported: false
Execution Driver: native-0.2
Kernel Version: 3.13.0-24-generic
Operating System: Ubuntu 14.04 LTS
CPUs: 1
Total Memory: 979.6 MiB
Name: ubuntu
ID: PRLX:CY3O:TZ6P:4UAS:VDWM:MHWB:FB3V:TJBJ:GQ4J:Q453:GPOY:WZSI
WARNING: No swap limit support
2. 查看本地鏡像 docker images

鏡像是Docker生命周期中的“構(gòu)建”部分,可以用來創(chuàng)建 Docker 容器。

輸入 
docker images

輸出
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hello-world         latest              91c95931e552        5 days ago          910 B
3. 下載鏡像 docker pull
輸入
docker pull busybox

輸出
latest: Pulling from busybox
cf2616975b4a: Pull complete
6ce2e90b0bc7: Pull complete
8c2e06607696: Already exists
busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d
Status: Downloaded newer image for busybox:latest

busybox 是一個(gè) Linux 工具集,包括各種常用命令,例如 cat、echo ,也有各種高級(jí)命令,例如 grep、mount 等。執(zhí)行完 docker pull busybox 之后,Docker 會(huì)自動(dòng)從 Docker 官方下載 busybox 的鏡像文件。

這個(gè)過程中可以執(zhí)行 Ctrl+C,docker pull 不會(huì)因?yàn)?Ctrl+C 打斷,而回轉(zhuǎn)為后臺(tái)執(zhí)行。

4. 運(yùn)行鏡像 docker run
輸入 
docker run busybox /bin/echo Hello Docker

輸出
Hello Docker

這條命令是運(yùn)行 busybox 鏡像中的 /bin/echo 命令,參數(shù)是 Hello Docker

其他標(biāo)志:

-i 保證容器的stdin開啟
-t 為容器生成一個(gè)tty終端
-d 表示后臺(tái)運(yùn)行
--rm=true 容器終止后刪除
--name name 表示 container 的名稱
-v 將目錄掛載到 container
--privileged=true 防止沒有權(quán)限訪問掛載的目錄
-p 9998:80 指定端口映射
--link name:container 與其他 container 鏈接.
--icc=true 去除 container 之間不互通. 需要放在 run 前面.

注意,--rm 和 -d 參數(shù)不能同時(shí)使用。
5.刪除鏡像 docker rmi
docker rmi /

刪除所有未打 tag 的鏡像

docker rmi $(docker images -q | awk "/^/ { print $3 }")

刪除所有鏡像

docker rmi $(docker images -q)
6. 查看本地容器 docker ps

docker ps 查看正在運(yùn)行的容器

輸入 
docker ps

輸出
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hello-world         latest              91c95931e552        1 days ago          910 B

docker ps -a 查看所有的容器,-q 返回 id

docker ps -a -q

docker ps -n x 該命令會(huì)顯示最后x個(gè)容器,不論這些容器是運(yùn)行還是停止的。

7. 查詢輸出docker logs /

查詢?nèi)萜鞯妮敵鰞?nèi)容:

例如:通過 docker logs 命令查詢 sample_job 對應(yīng)的容器的輸出內(nèi)容。

sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")
輸入 
docker logs $sample_job

輸出
Docker
Docker
Docker
Docker

只要這個(gè)容器運(yùn)行的時(shí)間足夠長,就會(huì)輸出足夠多行的 Docker。

8. 啟動(dòng)容器docker start
docker start /
9. 停止容器docker stop
docker stop /
10. 重啟容器docker restart
docker restart /
11.刪除容器 docker rm
docker rm /

刪除所有 Docker 容器

docker rm $(docker ps -a -q)
12.保存容器docker commit
docker commit -m="A new image" --author="Aomine" 614122c0aabb aoct/apache2

將當(dāng)前的 Docker 容器保存為一個(gè)名為 aoct/apache2 的鏡像。-m指定創(chuàng)建鏡像的提交信息,--author指定鏡像作者,接著是容器ID、目標(biāo)鏡像倉庫、鏡像名。

13. 鏡像上傳docker push

創(chuàng)建docker hub賬戶,將本地的image push 到hub上,這樣其他人也可以使用了。首先我們先tag 一個(gè)image,然后將其push到我們的repo里。

docker tag id {username}/{images_name}:v1
docker push {username}/{images_name}
14. 獲取鏡像歷史docker history
docker history 

只能對本地存在的 Docker 鏡像執(zhí)行這個(gè)命令。

15.進(jìn)入容器

當(dāng)我們使用 -d參數(shù)運(yùn)行了一個(gè)Container的時(shí)候,有時(shí)候我們需要進(jìn)入這個(gè)容器進(jìn)行一些操作。例如有這樣的一個(gè)情況,我們運(yùn)行了一個(gè)app在一個(gè)容器里,我們想進(jìn)入容器看看,這個(gè)app運(yùn)行的狀態(tài),查看log。那們?nèi)绾芜M(jìn)入呢?其實(shí)有很多種方法,這里介紹兩種。

1.docker attach /
$ docker run -d --name demo ubuntu /usr/bin/top -b
$ docker attach demo
2.docker exec /
    docker exec -i -t webapp /bin/bash

docker attach 和 docker exec區(qū)別

docker attach讓用戶可以進(jìn)入Container查看輸出等等操作,但是并不會(huì)另外啟動(dòng)一個(gè)進(jìn)程! 如果你用CTRL-c來退出,同時(shí)這個(gè)信號(hào)會(huì)kill Container(默認(rèn)情況)

docker exec 會(huì)啟動(dòng)另外一個(gè)進(jìn)程來進(jìn)入Container,這里的操作是在這個(gè)進(jìn)程下的。如果你用CTRL-c來退出,不會(huì)kill 原來的Container

16.鏡像的導(dǎo)入與導(dǎo)出load & save

使用 load 從 stdin 導(dǎo)入一個(gè) tar 格式的鏡像或者倉庫,然后用 save 將 tar 鏡像輸出到 stdout。

docker save -o  或者docker save  > 
docker load -i 或者docker load < 

這兩個(gè)命令常用于多節(jié)點(diǎn)部署。

例如:

命令 # docker save -o a.tar suse
命令 # docker load -i a.tar
17.容器導(dǎo)入import

用于導(dǎo)入 URL / 文件,從本地導(dǎo)入需要 - 參數(shù)。docker import [OPTIONS] URL|- [REPOSITORY[:TAG]]、URL/-二選一。

命令# docker import http://mirrors.ustc.edu.cn/openvz/template/precreated/suse-13.1-x86-minimal.tar.gz suse:minimal  #這里使用的是ustc鏡像源。
Downloading from http://mirrors.ustc.edu.cn/openvz/template/precreated/suse-13.1-x86-minimal.tar.gz
127a9e7b9f87e4fc280c96bee9fad0a19057de38d307fe7fc1f6d35c86f1aff657.89 MB/57.89 MB
命令# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
suse                     minimal             127a9e7b9f87        2 minutes ago       149.1 MB

導(dǎo)入本地鏡像:

cat suse-13.1-x86-minimal.tar.gz |docker import - suse:minmal
18.容器導(dǎo)出export

和 import 相反,export 將容器導(dǎo)出成 tar 壓縮包。

例如

命令 # docker run -i -t -d suse:minimal /bin/bash
060f6e6c877af01313363b6506107438b9eb5ba87a7ef0625577e348a554ecca
命令 # docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
060f6e6c877a        suse:minimal        "/bin/bash"         2 seconds ago       Up 2 seconds                            fervent_ritchie
命令 # docker export -o a.tar 060f
命令 # docker export 060f > a.tar  #也可以這樣。

9.什么是Dockerfile

Dockerfile實(shí)際上是由一行行命令組成的,讓用戶可以方便的創(chuàng)建自定義鏡像。

Dockerfile大體由四部分組成:

指明基礎(chǔ)鏡像指令FROM

維護(hù)者信息指令MAINTAINER

鏡像操作指令RUN、EVN、ADD和WORKDIR等

容器啟動(dòng)時(shí)的執(zhí)行指令CMD、ENTRYPOINT和USER等

下邊就是一個(gè)Dockerfile的例子

FROM python:2.7
MAINTAINER yumengzhong <[email protected]>
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]
 1. 從dockerhub上pull下python 2.7的基礎(chǔ)鏡像。
 2. 維護(hù)者的信息
 3. copy當(dāng)前目錄到容器中的 /app目錄下  復(fù)制本地主機(jī)的(Dockerfile所在目錄的相對路徑)到容器里
 4. 指定工作路徑為/app
 5. 安裝依賴
 6. 暴露5000端口
 7. 啟動(dòng)app

這個(gè)例子是啟動(dòng)一個(gè)python flask app的Dockerfile(flask是python的一個(gè)輕量的web框架)。

下邊我就來介紹下dockerfile里常用的指令。

格式
Dockerfile 中所有的命令都是以下格式:INSTRUCTION argument
指令(INSTRUCTION)不分大小寫,但是推薦大寫。

FROM
用于指定基礎(chǔ)的images

格式為 FROM or FORM :

所有的 Dockerfile 都用該以 FROM 開頭,FROM 命令指明 Dockerfile 所創(chuàng)建的鏡像文件以什么鏡像為基礎(chǔ),FROM 以后的所有指令都會(huì)在 FROM 的基礎(chǔ)上進(jìn)行創(chuàng)建鏡像;可以在同一個(gè) Dockerfile 中多次使用 FROM 命令用于創(chuàng)建多個(gè)鏡像。

MAINTAINER
格式為 MAINTAINER 用于指定鏡像創(chuàng)建者和聯(lián)系方式。

MAINTAINER yumengzhong <[email protected]>

RUN
格式為 RUN
用于容器內(nèi)部執(zhí)行命令。每個(gè) RUN 命令相當(dāng)于在原有的鏡像基礎(chǔ)上添加了一個(gè)改動(dòng)層,原有的鏡像不會(huì)有變化。

ADD
格式為 ADD 將主機(jī)文件復(fù)制到容器中

該命令將復(fù)制指定的 到容器中的 。其中 可以是Dockerfile所在目錄的一個(gè)相對路徑,可以是文件或目錄的路徑,也可以是一個(gè)URL,還可以是一個(gè) tar 文件(自動(dòng)解壓為目錄)。

ADD /path/to/sourcefile/in/host /path/to/targetfile/in/container

COPY
格式為 COPY

復(fù)制本地主機(jī)的 (為 Dockerfile 所在目錄的相對路徑)到容器中的 。

當(dāng)使用本地目錄為源目錄時(shí),推薦使用 COPY

CMD
CMD 命令有三種格式:

CMD ["executable","param1","param2"]:推薦使用的 exec 形式。

CMD ["param1","param2"]:無可執(zhí)行程序形式

CMD command param1 param2:shell 形式。

CMD 命令用于啟動(dòng)容器時(shí)默認(rèn)執(zhí)行的命令,CMD 命令可以包含可執(zhí)行文件,也可以不包含可執(zhí)行文件:不包含可執(zhí)行文件的情況下就要用 ENTRYPOINT 指定一個(gè),然后 CMD 命令的參數(shù)就會(huì)作為ENTRYPOINT的參數(shù)。

一個(gè) Dockerfile 中只能有一個(gè)CMD,如果有多個(gè),則最后一個(gè)生效。
CMDshell 形式默認(rèn)調(diào)用 /bin/sh -c 執(zhí)行命令。
CMD 命令會(huì)被 Docker 命令行傳入的參數(shù)覆蓋:docker run busybox /bin/echo Hello Docker 會(huì)把 CMD 里的命令覆蓋。

ENTRYPOINT

ENTRYPOINT 命令也有兩種格式:

ENTRYPOINT ["executable", "param1", "param2"] :推薦使用的 exec 形式

ENTRYPOINT command param1 param2 :shell 形式

ENTRYPOINT 命令的字面意思是進(jìn)入點(diǎn),而功能也恰如其意:他可以讓你的容器表現(xiàn)得像一個(gè)可執(zhí)行程序一樣。
一個(gè) Dockerfile 中只能有一個(gè) ENTRYPOINT,如果有多個(gè),則最后一個(gè)生效。

關(guān)于 CMDENTRYPOINT 的聯(lián)系請看下面的例子

僅僅使用 ENTRYPOINT

FROM ubuntu
ENTRYPOINT ls -l
 docker build -t yumengzhong/lstest .

執(zhí)行 docker run 306cd7e8408b /etc/fstabdocker run 306cd7e8408b 結(jié)果并不會(huì)有什么差別:

命令 # docker run 306cd7e8408b /etc/fstab
total 64
drwxr-xr-x   2 root root 4096 Mar 20 05:22 bin
drwxr-xr-x   2 root root 4096 Apr 10  2014 boot
drwxr-xr-x   5 root root  360 Apr 24 02:52 dev
drwxr-xr-x  64 root root 4096 Apr 24 02:52 etc
drwxr-xr-x   2 root root 4096 Apr 10  2014 home
……

但是我們通常使用 ENTRYPOINT 作為容器的入口,使用 CMDENTRYPOINT 增加默認(rèn)選項(xiàng)

FROM ubuntu
CMD ["-l"]
ENTRYPOINT ["ls"]

然后執(zhí)行這個(gè)容器:
不加參數(shù)便會(huì)默認(rèn)有 -l參數(shù):

命令 # docker run 89dc7e6d0ac1
total 64
drwxr-xr-x   2 root root 4096 Mar 20 05:22 bin
drwxr-xr-x   2 root root 4096 Apr 10  2014 boot
drwxr-xr-x   5 root root  360 Apr 24 02:47 dev
drwxr-xr-x  64 root root 4096 Apr 24 02:47 etc
drwxr-xr-x   2 root root 4096 Apr 10  2014 home
drwxr-xr-x  12 root root 4096 Mar 20 05:21 lib
drwxr-xr-x   2 root root 4096 Mar 20 05:20 lib64
drwxr-xr-x   2 root root 4096 Mar 20 05:19 media
drwxr-xr-x   2 root root 4096 Apr 10  2014 mnt
drwxr-xr-x   2 root root 4096 Mar 20 05:19 opt
dr-xr-xr-x 386 root root    0 Apr 24 02:47 proc
drwx------   2 root root 4096 Mar 20 05:22 root
drwxr-xr-x   7 root root 4096 Mar 20 05:21 run
drwxr-xr-x   2 root root 4096 Apr 21 22:18 sbin
drwxr-xr-x   2 root root 4096 Mar 20 05:19 srv
dr-xr-xr-x  13 root root    0 Apr 24 02:47 sys
drwxrwxrwt   2 root root 4096 Mar 20 05:22 tmp
drwxr-xr-x  11 root root 4096 Apr 21 22:18 usr
drwxr-xr-x  12 root root 4096 Apr 21 22:18 var

加了 /etc/fstab 參數(shù)便會(huì)覆蓋原有的 -l 參數(shù):

命令 # docker run 89dc7e6d0ac1 /etc/fstab
/etc/fstab

EXPOSE
EXPOSE [...] 命令用來指定對外開放的端口。
例如 EXPOSE 80 3306,開放 803306 端口。

WORKDIR
WORKDIR /path/to/work/dir 配合 RUNCMD,ENTRYPOINT 命令設(shè)置當(dāng)前工作路徑。
可以設(shè)置多次,如果是相對路徑,則相對前一個(gè) WORKDIR 命令。默認(rèn)路徑為/。

例如:

FROM ubuntu
WORKDIR /etc
WORKDIR ..
WORKDIR usr
WORKDIR lib
ENTRYPOINT pwd

docker run ID 得到的結(jié)果為:/usr/lib

USER
USER 為容器內(nèi)指定 CMDRUN、ENTRYPOINT 命令運(yùn)行時(shí)的用戶名或UID。

VLOUME
VOLUME ["/data"] 允許容器訪問容器的目錄、允許容器之間互相訪問目錄。
VOLUME 僅僅是允許將某一個(gè)目錄暴露在外面,更多的操作還需要依賴 Docker 命令實(shí)現(xiàn)。

ENV
參考 export 的用法咧:
ENV LC_ALL en_US.UTF-8

10.構(gòu)建dockerfile

Dockerfile 的寫法已經(jīng)講述完畢,來看示例:

實(shí)例一

mkdir static_web
cd static_web
touch Dockerfile
然后 vi Dockerfile  開始編輯該文件
輸入 i 開始編輯

FROM nginx
MAINTAINER yumengzhong "[email protected]"
ENV REFRESHED_AT 2017-03-03
RUN echo "

hello, /usr/share/nginx/html/index.html 編輯完后 按 esc 退出編輯 然后 :wq 寫入 退出

補(bǔ)充

:q! 強(qiáng)行退出(不存盤)
:wq 強(qiáng)制性寫入文件并退出。即使文件沒有被修改也強(qiáng)制寫入,并更新文件的修改時(shí)間。
:x 寫入文件并退出。僅當(dāng)文件被修改時(shí)才寫入,并更新文件修改時(shí)間,否則不會(huì)更新文件修改時(shí)間。
ESC鍵只能切換到命令狀態(tài)

:x:wq 的真正區(qū)別
:wq 強(qiáng)制性寫入文件并退出。即使文件沒有被修改也強(qiáng)制寫入,并更新文件的修改時(shí)間。
:x 寫入文件并退出。僅當(dāng)文件被修改時(shí)才寫入,并更新文件修改時(shí)間,否則不會(huì)更新文件修改時(shí)間。

這兩者一般情況下沒什么不一樣,但是在編程方面,對編輯源文件可能會(huì)產(chǎn)生重要影響。因?yàn)槲募词箾]有修改,:wq 強(qiáng)制更新文件的修改時(shí)間,這樣會(huì)讓 make 編譯整個(gè)項(xiàng)目時(shí)以為文件被修改過了,然后就得重新編譯鏈接生成可執(zhí)行文件。這可能會(huì)產(chǎn)生讓人誤解的后果,當(dāng)然也產(chǎn)生了不必要的系統(tǒng)資源花銷。

docker build -t yumengzhong/nginx_web:v1 .

-t是為新鏡像設(shè)置倉庫和名稱,其中yumengzhong為倉庫名,nginx_web為鏡像名,:v1為標(biāo)簽(不添加為默認(rèn)latest)

docker run --name nginx_web -d -p 82:80 yumengzhong/nginx_web:v1

游覽器 192.168.99.100:82或localhost:82

實(shí)例二

#Dockerfile
FROM centos6-base
#指定centos6系統(tǒng)
MAINTAINER zhou_mfk 
#我抄的他的 Dockerfile
RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
#創(chuàng)建私鑰
RUN sed "s@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g" -i /etc/pam.d/sshd
#修復(fù)SSH登錄,否則登陸后的用戶會(huì)被秒退。
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
#創(chuàng)建root用戶的ssh文件夾
EXPOSE 22
#開放端口
RUN echo "root:redhat" | chpasswd
#root用戶改密碼為redhat
RUN yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
RUN yum install tar gzip gcc vim wget screen -y
#安裝epel和安裝一些軟件
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
#系統(tǒng)環(huán)境變量
CMD ["/usr/sbin/sshd", "-D"]
#啟動(dòng)sshd
#End
11.升級(jí)Docker

如果想升級(jí)到最新版的Docker,就用 apt-get

$ apt-get upgrade docker-engine
12.卸載Docker
$ apt-get purge docker-engine
$ apt-get autoremove # 自動(dòng)刪除依賴
$ rm -rf /var/lib/docker
參考&引用

1.Docker學(xué)習(xí)與和應(yīng)用系列
2.Flux7 Docker 系列教程
3.Docker 實(shí)踐系列
4.我的Docker筆記(補(bǔ)全ing)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26796.html

相關(guān)文章

  • 【 全干貨 】5 分鐘帶你看懂 Docker !

    摘要:本文從定義,作用,技術(shù)架構(gòu),安裝和使用等全方位帶你看懂。最后,于開發(fā)者而言提供了一種開發(fā)環(huán)境的管理辦法,與測試人員而言保證了環(huán)境的同步,于運(yùn)維人員提供了可移植的標(biāo)準(zhǔn)化部署流程。顯示上圖內(nèi)容就表明安裝完成。 作者丨唐文廣:騰訊工程師,負(fù)責(zé)無線研發(fā)部地圖測試。 導(dǎo)語:Docker,近兩年才流行起來的超輕量級(jí)虛擬機(jī),它可以讓你輕松完成持續(xù)集成、自動(dòng)交付、自動(dòng)部署,并且實(shí)現(xiàn)開發(fā)環(huán)境、測試環(huán)...

    lavnFan 評論0 收藏0
  • 基礎(chǔ)入門│帶你理解Kubernetes

    摘要:的核心是以容器為中心的管理環(huán)境。命名空間提供了名稱范圍。換句話說,確保或同類組始終可用。用于管理有狀態(tài)應(yīng)用程序,它管理一組的部署和擴(kuò)展,并提供有關(guān)這些的排序和唯一性的保證。 條分縷析帶你充分理解Kubernetes的各個(gè)細(xì)節(jié)與部分:它是什么,它如何解決容器編排問題,它包含哪些你必須掌握的關(guān)鍵對象,以及如何快速上手部署使用Kubernetes。 showImg(https://segme...

    DevWiki 評論0 收藏0
  • Docker擁抱k8s早有預(yù)兆,Docker現(xiàn)何去何從?

    摘要:導(dǎo)讀本文由及聯(lián)合創(chuàng)始人梁勝博士寫于前往參加之前。從各家容器編排方案均很不成熟的初期,到三足鼎立的編排之戰(zhàn),到如今似已全面勝利,作為整個(gè)發(fā)展歷程的參與者與見證者,回顧這幾年容器領(lǐng)域發(fā)展和的發(fā)展與選擇,梁勝博士分享了他的一些看法。 導(dǎo)讀 本文由Rancher Labs CEO及聯(lián)合創(chuàng)始人梁勝博士寫于前往參加DockerCon之前。從各家容器編排方案均很不成熟的初期,到三足鼎立的編排之戰(zhàn),到...

    dcr309duan 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<