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

資訊專(zhuān)欄INFORMATION COLUMN

Docker學(xué)習(xí)筆記-基礎(chǔ)命令

BicycleWarrior / 2766人閱讀

摘要:備份數(shù)據(jù)卷容器中的內(nèi)容,可以參考以下命令恢復(fù)則使用下面的命令基礎(chǔ)命令網(wǎng)絡(luò)配置目前提供了映射容器端口到宿主主機(jī)和容器互聯(lián)的機(jī)制為容器提供網(wǎng)絡(luò)服務(wù)。

基礎(chǔ)命令 - 鏡像管理 獲取鏡像

使用docker pull命令從網(wǎng)絡(luò)上下載鏡像。

docker pull NAME[:TAG]

例如

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu

43db9dbdcb30: Downloading 1.494 MB/49.33 MB
2dc64e8f8d4f: Download complete
670a583e1b50: Download complete
43db9dbdcb30: Pull complete
2dc64e8f8d4f: Pull complete
670a583e1b50: Pull complete
183b0bfcd10e: Pull complete
Digest: sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54b
Status: Downloaded newer image for ubuntu:latest

不指定Tag的時(shí)候默認(rèn)使用:latest,因此,上述命令實(shí)際上是docker pull ubuntu:latest。

查看鏡像信息

使用docker images可以列出本地主機(jī)上已有的鏡像列表。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 latest              fe1a2c2228f4        2 days ago          364 MB
mongo               latest              87bde25ffc68        2 days ago          326.7 MB
ubuntu              latest              42118e3df429        9 days ago          124.8 MB
redis               latest              4465e4bcad80        6 weeks ago         185.7 MB
nginx               latest              0d409d33b27e        8 weeks ago         182.8 MB

還可以使用docker inspect命令查看單個(gè)鏡像的詳細(xì)信息

$ docker inspect ubuntu
[
    {
        "Id": "sha256:42118e3df429f09ca581a9deb3df274601930e428e452f7e4e9f1833c56a100a",
        "RepoTags": [
            "ubuntu:latest"
        ],
        "RepoDigests": [
            "ubuntu@sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54b"
        ],
          },
          ...
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:ea9f151abb7e06353e73172dad421235611d4f6d0560ec95db26e0dc240642c1",
                "sha256:0185b3091e8ee299850b096aeb9693d7132f50622d20ea18f88b6a73e9a3309c",
                "sha256:98305c1a8f5e5666d42b578043e3266f19e22512daa8c6b44c480b177f0bf006",
                "sha256:9a39129ae0ac2fccf7814b8e29dde5002734c1699d4e9176061d66f5b1afc95c"
            ]
        }
    }
]

查看單項(xiàng)信息

$ docker inspect -f {{".Config.Hostname"}} ubuntu
827f45722fd6
搜索鏡像

使用docker search命令搜索遠(yuǎn)程倉(cāng)庫(kù)中共享的鏡像。

docker search TERM

例如搜索名稱(chēng)為mysql的鏡像

$ docker search mysql
NAME                DESCRIPTION                 STARS  OFFICIAL  AUTOMATED
mysql               MySQL is a widely used...   2763   [OK]
mysql/mysql-server  Optimized MySQL Server...   178    [OK]
刪除鏡像

使用docker rmi命令刪除鏡像。

docker rmi IMAGE [IMAGE...]

其中IMAGE可以是鏡像標(biāo)簽或者ID。

例如

docker rmi ubuntu
docker rmi php:7.0.1
創(chuàng)建鏡像

創(chuàng)建鏡像有三種方法:

基于已有鏡像創(chuàng)建

基于本地模板導(dǎo)入

基于Dockerfile創(chuàng)建

使用已有鏡像創(chuàng)建

該方法主要使用docker commit命令。

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

包含以下主要選項(xiàng)

-a --author="",作者信息

-m --message="",提交信息

-p --pause=true,提價(jià)時(shí)暫停容器運(yùn)行

例如

$ docker run -i -t ubuntu:latest /bin/bash
root@5a86b68c4e6a:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@5a86b68c4e6a:~# exit
exit

$ docker commit -m "create a new images" -a "mylxsw" 5a86b68c4e6a test-cont
sha256:68f1237c24a744b05a934f1317ead38fc68061ade7981eaae158a2ba8da02a9b

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test-cont           latest              68f1237c24a7        3 seconds ago       124.8 MB
php                 latest              fe1a2c2228f4        2 days ago          364 MB
mongo               latest              87bde25ffc68        2 days ago          326.7 MB
ubuntu              latest              42118e3df429        9 days ago          124.8 MB
redis               latest              4465e4bcad80        6 weeks ago         185.7 MB
nginx               latest              0d409d33b27e        8 weeks ago         182.8 MB
基于本地模板導(dǎo)入 基于Dockerfile創(chuàng)建 保存鏡像文件

使用docker save命令保存鏡像文件為本地文件。

docker save -o ubuntu_latest.tar ubuntu:latest
載入鏡像

使用docker load從本地文件再導(dǎo)入鏡像壓縮包到本地鏡像倉(cāng)庫(kù)。

docker load --input ubuntu_latest.tar
692b4b3b88ff: Loading layer  2.56 kB/2.56 kB
Loaded image: ubuntu:latest
上傳鏡像

上傳鏡像使用docker push命令。

docker push NAME[:TAG]

默認(rèn)上傳鏡像到DockerHub官方倉(cāng)庫(kù)。

基礎(chǔ)命令 - 容器 創(chuàng)建容器

使用docker create命令創(chuàng)建一個(gè)容器,使用該命令創(chuàng)建的容器處于停止?fàn)顟B(tài),需要使用docker start命令啟動(dòng)容器。

docker create -it ubuntu:latest

例如:

$ docker create -it ubuntu
ddb96bff9de60765a5c10ef91c684e206866a095ec1dae2dbc66924b65d26602
$ docker ps -a
CONTAINER ID    IMAGE     COMMAND      CREATED         STATUS   PORTS    NAMES
ddb96bff9de6    ubuntu   "/bin/bash"  10 seconds ago   Created           grave_shaw

也可以直接使用docker run命令創(chuàng)建并啟動(dòng)一個(gè)新的容器,等價(jià)于執(zhí)行命令docker createdocker start

$ docker run ubuntu /bin/echo "Hello world"
Hello world

下面的命令讓docker啟動(dòng)一個(gè)bash終端,允許用于與其進(jìn)行交互

$ docker run -i -t ubuntu /bin/bash
root@d808be915a22:/#

-t選項(xiàng)讓docker分配一個(gè)偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上,-i則讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi)。

大多數(shù)情況下,我們希望容器以后臺(tái)守護(hù)進(jìn)程的形式運(yùn)行,可以使用-d選項(xiàng)。

$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1;done"
1927a78fd6e6ca32dbf6a8efe86d83162dd974e6302d930a1766b44142f33804
$ docker ps
CONTAINER ID   IMAGE    COMMAND                  CREATED       STATUS    PORTS    NAMES
1927a78fd6e6   ubuntu  "/bin/sh -c "while tr"   3 seconds ago  Up 2 seconds prickly_mcclintock
$ docker logs prickly_mcclintock
hello world
hello world
hello world
終止容器

使用docker stop命令終止運(yùn)行中的容器。

$ docker stop prickly_mcclintock
prickly_mcclintock

容器終止后可以使用docker start命令再次啟動(dòng),也可以對(duì)運(yùn)行的容器執(zhí)行docker restart使其重啟。

進(jìn)入容器

使用-d選項(xiàng)啟動(dòng)容器后,容器會(huì)進(jìn)入后臺(tái)運(yùn)行,用戶無(wú)法查看容器中的信息。有時(shí)候需要進(jìn)入容器進(jìn)行操作,可以使用docker attach命令以及docker exec命令,nsenter等工具。

attach命令

docker attach命令是Docker自帶的命令,使用的時(shí)候并不太方便,當(dāng)多個(gè)窗口attach到同一個(gè)容器,所有窗口都會(huì)同步顯示。某一個(gè)窗口堵塞,其它創(chuàng)建窗口就無(wú)法繼續(xù)進(jìn)行操作了。

docker attach prickly_mcclintock

使用docker attach之后,如果使用Ctrl+C退出,則容器也會(huì)退出運(yùn)行

exec命令

Docker提供了一個(gè)更加方便的工具exec,使用它可以直接在容器內(nèi)運(yùn)行命令。

$ docker exec -it 9b3d /bin/bash
root@9b3d40ebc289:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
刪除容器

使用docker rm命令刪除處于終止?fàn)顟B(tài)的容器。

docker rm [OPTIONS] CONTAINER [CONTAINER...]

-f --force=false 強(qiáng)制終止并刪除一個(gè)運(yùn)行中的容器

-l --link=false 刪除容器的連接,但是保留容器

-v --volumes=false 刪除容器掛載的數(shù)據(jù)卷

導(dǎo)出容器

使用導(dǎo)入容器命令可以實(shí)現(xiàn)將一個(gè)已經(jīng)創(chuàng)建的容器導(dǎo)出到一個(gè)文件,一般可以用于容器的遷移。

docker export CONTAINER

例如

docker export 9b3d40 > container-migrate.tar

可以將導(dǎo)出的文件傳輸?shù)狡渌鼨C(jī)器上再進(jìn)行導(dǎo)入。

導(dǎo)入容器

使用docker import命令導(dǎo)入容器作為鏡像。

$ cat container-migrate.tar| docker import - test/ubuntu
sha256:7cae85635deaacdca3120196d9d068d6fc9980b73b2c904b80354a4ece3ceed5
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/ubuntu         latest              7cae85635dea        4 seconds ago       109.9 MB
基礎(chǔ)命令 - 數(shù)據(jù)管理

容器數(shù)據(jù)管理主要有兩種方式:

數(shù)據(jù)卷

數(shù)據(jù)卷容器

數(shù)據(jù)卷

數(shù)據(jù)卷是一個(gè)可以供容器使用的特殊目錄,它繞過(guò)了文件系統(tǒng),提供了以下特性

在容器之間共享和重用

修改立馬生效

對(duì)數(shù)據(jù)卷的更新不會(huì)影響鏡像

卷會(huì)一直存在,直到?jīng)]有容器使用

在運(yùn)行容器的時(shí)候,使用-v選項(xiàng)創(chuàng)建數(shù)據(jù)卷,可以多次使用,創(chuàng)建多個(gè)數(shù)據(jù)卷。

$ docker run -i -t --name test-vol -v /Users/mylxsw/Downloads:/opt/aicode ubuntu /bin/bash
root@7ab155e22ec7:/# ls /opt/aicode/
PHP2016@DevLink  container-migrate.tar  removeDocker.sh  test-cont.tar  ubuntu-test.tar

上述命令將本地的/Users/mylxsw/Downloads目錄映射到了容器的/opt/aicode目錄。

可以指定:ro,設(shè)置映射目錄為只讀: -v /Users/mylxsw/Downloads:/opt/aicode:ro,同時(shí),-v也支持掛載單個(gè)文件到容器。

數(shù)據(jù)卷容器

如果用戶需要在容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡(jiǎn)單的方法是使用數(shù)據(jù)卷容器。數(shù)據(jù)卷容器實(shí)際上就是一個(gè)普通的容器,專(zhuān)美提供數(shù)據(jù)卷供其他容器使用。

$ docker run -it -v /backup --name backup ubuntu
root@be8de791d367:/#

上述命令創(chuàng)建了一個(gè)用來(lái)作為數(shù)據(jù)卷的容器,接下來(lái)創(chuàng)建幾個(gè)server容器,用于向該數(shù)據(jù)卷寫(xiě)入數(shù)據(jù),寫(xiě)入數(shù)據(jù)后,多個(gè)容器之間是互通的。

$ docker run -it --volumes-from backup --name server1 ubuntu

使用--volumes-from指定要數(shù)據(jù)卷容器。

備份數(shù)據(jù)卷容器中的內(nèi)容,可以參考以下命令

docker run --volumes-from backup -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /backup

恢復(fù)則使用下面的命令

docker run -v /backup --name backup2 ubuntu /bin/bash
docker run --volumes-from backup2 -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar
基礎(chǔ)命令 - 網(wǎng)絡(luò)配置

Docker目前提供了映射容器端口到宿主主機(jī)容器互聯(lián)的機(jī)制為容器提供網(wǎng)絡(luò)服務(wù)。

端口映射

容器中運(yùn)行了網(wǎng)絡(luò)服務(wù),我們可以通過(guò)-P或者-p參數(shù)指定端口映射。

-P Docker會(huì)隨機(jī)映射一個(gè)49000-49900之間的端口到容器內(nèi)部的開(kāi)放端口。

-p 可以指定要映射的端口,格式為ip:hostPort:containerPort,可以多次使用-p指定多個(gè)映射的端口。

例如:

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
docker run -d -p 5000:5000 training/webapp python app.py
docker run -d -p 5000:5000/udp training/webapp python app.py
docker run -d -P training/webapp python app.py

使用docker port [容器名稱(chēng)] 容器內(nèi)端口 查看端口映射綁定的地址。

docker port nostalgic_morse 5000
容器互聯(lián)通信

容器的鏈接(linking)系統(tǒng)是除了端口映射外的另一種容器應(yīng)用之間交互的方式,它會(huì)在源和接收容器之間創(chuàng)建一個(gè)隧道,接收容器可以看到源容器指定的信息。

容器之間互聯(lián)通過(guò)--link參數(shù)指定,格式為--link name:alias,其中name為要鏈接到的容器的名稱(chēng),alias為這個(gè)連接的別名。

docker run -d --name mysql-demo -e MYSQL_ROOT_PASSWORD=root mysql
docker run --rm --name web --link mysql-demo:db ubuntu env

使用docker ps可以看到容器的連接。

Docker會(huì)在兩個(gè)互聯(lián)的容器之間創(chuàng)建一個(gè)安全的隧道,而且不用映射端口到宿主主機(jī)。Docker中通過(guò)兩種方式為容器公開(kāi)連接信息:

環(huán)境變量 環(huán)境變量的方式采用連接別名的大寫(xiě)前綴開(kāi)頭,比如前面的例子中,所有以DB_開(kāi)頭的環(huán)境變量。

更新/ect/hosts文件 Docker也會(huì)添加host信息到父容器的/etc/hosts文件

查看/etc/hosts文件:

docker run --rm --name web --link mysql-demo:db -i -t ubuntu /bin/bash

Dockerfile

Dockerfile是一個(gè)文本格式的配置文件,用戶可以使用Dockerfile快速創(chuàng)建自定義的鏡像。

基本結(jié)構(gòu)

一般來(lái)說(shuō),Dockerfile分為四部分:

基礎(chǔ)鏡像信息

維護(hù)者信息

鏡像操作指令

容器啟動(dòng)時(shí)執(zhí)行的指令

指令

指令一般格式為INSTRUCTION arguments。

FROM

格式為FROM 。第一條指令必須為FROM指令,指定了基礎(chǔ)鏡像。

FROM ubuntu:latest
MAINTAINER

格式為MAINTAINER 指定維護(hù)者信息。

MAINTAINER mylxsw [email protected]
RUN

格式為RUN 或者RUN ["executable", "param1", "param2"...]。每條指令將在當(dāng)前鏡像的基礎(chǔ)上執(zhí)行,并提交為新的鏡像。

格式RUN 時(shí)將在shell終端中執(zhí)行命令,也就是/bin/sh -c中執(zhí)行,而RUN ["executable", "param1", "param2"...]則使用exec執(zhí)行。

CMD

該命令提供容器啟動(dòng)時(shí)執(zhí)行的命令,每個(gè)Dockerfile中只能與一條CMD命令,如果指定了多條,則只有最后一條會(huì)被執(zhí)行。如果用戶啟動(dòng)容器的時(shí)候指定了運(yùn)行的命令,則會(huì)覆蓋CMD指令。

格式支持三種:

CMD ["executable", "param1", "param2"] 使用exec執(zhí)行

CMD command param1 param2 使用/bin/sh -c執(zhí)行

CMD ["param1", "param2"] 提供給ENTRYPOINT的默認(rèn)參數(shù)

EXPOSE

格式為EXPOSE [...],該指令用于告訴Docker容器要暴露的端口號(hào),供互聯(lián)系統(tǒng)使用。

EXPOSE 22 80 8443

上述指令暴露了22, 80, 8443端口供互聯(lián)的系統(tǒng)使用,使用的時(shí)候可以指定-P或者-p參數(shù)進(jìn)行端口映射。

ENV

格式為ENV 。指定一個(gè)環(huán)境變量,會(huì)被后續(xù)的RUN指令使用,并且在容器運(yùn)行時(shí)保持。

比如:

ENV PG_MAJOR 9.3
ENV PG_VERSION 9.35
ADD

格式為ADD 。該命令復(fù)制指定的,其中可以是Dockerfile所在目錄的一個(gè)相對(duì)路徑(文件或目錄),也可以是網(wǎng)絡(luò)上的資源路徑或者是tar包。

如果是tar包的話,會(huì)在dest位置自動(dòng)解壓為目錄。

COPY

格式為COPY ,復(fù)制本地主機(jī)的到容器的,目標(biāo)路徑不存在則自動(dòng)創(chuàng)建。使用本地目錄為源目錄時(shí),推薦使用COPY。

注意,ADD命令和COPY命令基本上是一樣的,只不過(guò)是ADD命令可以復(fù)制網(wǎng)絡(luò)資源,同時(shí)會(huì)對(duì)壓縮包進(jìn)行自動(dòng)解壓,而COPY則是單純的復(fù)制本地文件(目錄)。

ENTRYPOINT

配置容器啟動(dòng)后執(zhí)行的命令,并且不會(huì)被docker run提供的參數(shù)覆蓋。每個(gè)Dockerfile中只能有一個(gè)ENTRYPOINT,當(dāng)指定多個(gè)的時(shí)候,只有最后一個(gè)生效。

格式有兩種:

ENTRYPOINT ["executable", "param1", "param2"]

ENTRYPOINT command param1 param2

VOLUME

格式為VOLUME ["/data"],創(chuàng)建一個(gè)可以從本地主機(jī)或其它容器掛載的掛載點(diǎn),一般用來(lái)存放數(shù)據(jù)庫(kù)和需要保持的數(shù)據(jù)等。

USER

格式為USER daemon,用于指定運(yùn)行容器時(shí)的用戶名或者UID,后續(xù)的RUN命令也會(huì)使用指定的用戶。

WORKDIR

格式為WORKDIR /path/to/workdir,用于為后續(xù)的RUN,CMD,ENTRYPOINT指令配置工作目錄。

可以多次使用,如果后續(xù)指定的路徑是相對(duì)路徑,則會(huì)基于前面的路徑。

WORKDIR /a
WORKDIR b
RUN pwd

則最后得到的路徑是/a/b。

ONBUILD

指定基于該鏡像創(chuàng)建新的鏡像時(shí)自動(dòng)執(zhí)行的命令。格式為ONBUILD [INSTRUCTION]。

創(chuàng)建鏡像

編寫(xiě)完Dockerfile之后,就可以通過(guò)docker build命令構(gòu)建一個(gè)鏡像了。

可以通過(guò).dockerignore指定忽略的文件和目錄,類(lèi)似于git中的.gitignore文件。

比如

docker build -t build_repo/first_image /tmp/docker_builder


參考:

Docker技術(shù)入門(mén)與實(shí)戰(zhàn) 楊保衛(wèi) 戴王劍 曹亞倫編著

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

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

相關(guān)文章

  • CentOS學(xué)習(xí)筆記 - 8. docker 編譯基于gofabric8的java應(yīng)用鏡像

    摘要:所以這里一般就是執(zhí)行啟動(dòng)我們應(yīng)用的那條命令。編譯運(yùn)行編譯好的鏡像打開(kāi)瀏覽器進(jìn)行測(cè)試 編譯docker鏡像 1.加速docker鏡像下載速度 取決于網(wǎng)絡(luò)速度,如果不慢的話,可以先不裝 https://www.daocloud.io/mirror#accelerator-doc 執(zhí)行下面的命令配置加速器 curl -sSL https://get.daocloud.io/daotools...

    BingqiChen 評(píng)論0 收藏0
  • CentOS學(xué)習(xí)筆記 - 8. docker 編譯基于gofabric8的java應(yīng)用鏡像

    摘要:所以這里一般就是執(zhí)行啟動(dòng)我們應(yīng)用的那條命令。編譯運(yùn)行編譯好的鏡像打開(kāi)瀏覽器進(jìn)行測(cè)試 編譯docker鏡像 1.加速docker鏡像下載速度 取決于網(wǎng)絡(luò)速度,如果不慢的話,可以先不裝 https://www.daocloud.io/mirror#accelerator-doc 執(zhí)行下面的命令配置加速器 curl -sSL https://get.daocloud.io/daotools...

    tianhang 評(píng)論0 收藏0
  • 慕課網(wǎng)_《Docker入門(mén)》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期六說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。必填用于執(zhí)行命令,當(dāng)執(zhí)行完畢后,將產(chǎn)生一個(gè)新的文件層。可選指定此鏡像啟動(dòng)時(shí)默認(rèn)執(zhí)行命令。可選用于指定需要暴露的網(wǎng)絡(luò)端口號(hào)。可選向鏡像中掛載一個(gè)卷組。 時(shí)間:2017年09月16日星期六說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無(wú) 學(xué)習(xí)源碼:無(wú) 第一章:課程簡(jiǎn)介 1-1 課程介紹 Docke...

    CoorChice 評(píng)論0 收藏0
  • Dockerfile 與 Compose 環(huán)境搭建學(xué)習(xí)筆記(一)

    摘要:的主要作用是自己根據(jù)基礎(chǔ)鏡像,重新定制鏡像,而不是直接從官方倉(cāng)庫(kù)拿現(xiàn)成的使用。以接下來(lái)要構(gòu)建的環(huán)境來(lái)說(shuō)明下,下面我將要搭建一個(gè)的開(kāi)發(fā)環(huán)境,需要進(jìn)行配合。它的主要作用是持久化數(shù)據(jù),避免容器銷(xiāo)毀后內(nèi)部數(shù)據(jù)丟失暴露到宿主機(jī)的端口。 以前一直使用 Vagrant 作為自己的開(kāi)發(fā)環(huán)境,并且在上家公司也推行大家采用 Vagrant 作為開(kāi)發(fā)環(huán)境,保障公司使用的是同一套開(kāi)發(fā)環(huán)境。隨著docker的流...

    TZLLOG 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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