docker學習筆記---基本命令

[root@docker ~]# docker

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  config      Manage Docker configs
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

  

一、docker start/stop/restart/kill

啓動/中止/重啓/殺掉容器php

實例操做以下:html

[root@docker ~]# docker start myweb
[root@docker ~]# docker stop myweb
[root@docker ~]# docker restart myweb
[root@docker ~]# docker kill -s kill myweb
參數 -s  #向容器發送信號

  

二、docker run

建立並啓動一個新的容器node

經常使用參數以下:linux

-d, --detach=false #後臺運行容器,並返回容器ID -i, --interactive=false             #以交互式模式運行容器,常與-t參數同時使用 -t, --tty=false              #給容器從新分配一個僞終端,常與-i參數同時使用 -w, --workdir="", 指定容器的工做目錄 --name #給容器指定一個名稱 -e, --env=[] 指定環境變量,容器中可使用該環境變量 -m   --memory="" #指定容器使用內存的最大值 -c, --cpu-shares=0, 設置容器CPU權重,在CPU共享場景使用 -p, --publish=[], 指定容器暴露的端口 -v, --volume=[], 給容器掛載存儲卷,掛載到容器的某個目錄 --volumes-from=[], 給容器掛載其餘容器上的卷,掛載到容器的某個目錄 --net #指定容器使用的網絡類型 bridge 使用docker daemon指定的網橋 host //容器使用主機的網絡
    container:NAME_or_ID >//使用其餘容器的網路,共享IP和PORT等網絡資源
    none 容器使用本身的網絡(相似--net=bridge),可是不進行配置 --link #連接到另外一個容器 --restart="no", 指定容器中止後的重啓策略: no:容器退出時不重啓 on-failure:容器故障退出(返回值非零)時重啓 always:容器退出時老是重啓

 

實例操做以下:nginx

[root@docker ~]# docker run -d --name nginx busybox:latest
3a90679ec552a00a989a9db2734044fd9a0314b35eee9b490cdcd7e763782516 
#後臺啓動並運行一個名爲nginx的容器,運行前它會自動去docker鏡像站點下載最新的鏡像文件

[root@docker ~]# docker run -d -p 8080:8080 busybox:latest
3c4d6a2f19099deebc5c3f874a2c86a281076f52921fb27614654237da1cba4e
#後臺啓動並運名爲nginx的容器,而後將容器的80端口映射到物理機的80端口

[root@docker ~]# docker run -d -v /opt/data/:/docker/data -p 8080:8080 busybox:latest
89511e1621bb7222785deb641dfb5d7b69971e0787ecc293f47931881acd8fec
#後臺啓動並運名爲nginx的容器,而後將容器的80端口映射到物理機的80端口,而且將物理機的/opt/data目錄映射到容器的/docker/data

[root@docker ~]# docker run -dit -v /opt/data/:/docker/data -p 8080:8080 busybox:latest /bin/sh
59961b69f80b3dab22330da30e5d4363dbd98d8bb3597b8fcfa485216f33176d
[root@docker ~]# docker exec -it 59961b69f80b /bin/sh
/ # ls /docker/data/
/ # 
#以交互式模式運行容器,而後在容器內執行/bin/bash命令

    

三、docker rm

刪除容器git

經常使用參數以下:github

-f #強制刪除一個運行中的容器
-l #刪除指定的連接
-v #刪除與容器關聯和卷web

實例操做以下:docker

[root@docker ~]# docker rm -f mydocker
#強制刪除容器mydocker
[root@docker ~]# docker rm -f dockerA dockerB
#強制刪除容器dockerA,dockerB
[root@docker ~]# docker rm -v mydocker
#刪除容器,並刪除容器掛載的數據卷

 

四、docker create

建立一個新的容器但不啓動它
[root@docker ~]# docker create --name myserver busybox:latest
09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f
#建立一個名爲myserver的容器

  

五、docker exec

在運行的容器中執行命令json

經常使用參數以下:

-d #在後臺運行 -i #保持STDIN打開 -t #分配一個僞終端

實例操做以下

[root@docker ~]# docker exec -it busybox /bin/sh /server/scripts/docker.sh
hello world!!!!!!!!!!
#以交互模式執行容器中的/server/scripts/docker.sh腳本
[root@docker ~]# docker exec -it busybox /bin/sh 
root@b1a0703e41e7:/#
#以交互模式給容器分配一個僞終端鏈接

  

六、docker ps

列出容器(正在運行)

經常使用參數以下:

-a #列出全部容器包括中止的 -f #根據條件過濾顯示內容 -l #列出最近建立的容器 -n #列出最近建立的N個容器,N爲數字 -q #只顯示容器ID -s #顯示總文件大小

 

實例操做以下:

[root@docker ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
e3734caa2f63        busybox:latest      "/bin/sh"           2 hours ago         Up 2 hours          0.0.0.0:8080->8080/tcp   busybox
#列出正在運行的容器

[root@docker ~]# docker ps -n 2
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
e3734caa2f63        busybox:latest      "/bin/sh"           2 hours ago         Up 2 hours          0.0.0.0:8080->8080/tcp   busybox
81d825fbfc3b        busybox:latest      "/bin/bash"         3 hours ago         Created             0.0.0.0:8080->8080/tcp   vigorous_torvalds
#列出最近建立的2個容器

[root@docker ~]# docker ps -a -q
e3734caa2f63
81d825fbfc3b
89511e1621bb
3c4d6a2f1909
#顯示全部容器的ID

  

七、docker inspect

獲取容器的元數據

經常使用參數以下:

-f #指定返回值格式或模板文件 -s #顯示總文件大小 --type     #爲指定類型返回JSON
實例操做以下:

[root@docker ~]# docker inspect f2b851facacc
[
    {
        "Id": "f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7",
        "Created": "2019-12-15T10:01:46.932500174Z",
        "Path": "/bin/sh",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 7586,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-12-15T10:01:47.870143961Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:db8ee88ad75f6bdc74663f4992a185e2722fa29573abcc1a19186cc5ec09dceb",
        "ResolvConfPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/hostname",
        "HostsPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/hosts",
        "LogPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7-json.log",
        "Name": "/peaceful_ride",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/opt/data/:/docker/data/"
            ],
 ------------------------------省略部份內容           
#獲取容器ID爲f2b851facacc的元數據信息

[root@docker ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' f2b851facacc
172.17.0.2
#獲取容器爲f2b851facacc的IP地址

  

八、docker logs

獲取容器的日誌

經常使用參數以下:

-f #跟蹤日誌輸出 -t #顯示時間戳 --tail #只顯示最新n條容器日誌 --since  #顯示某個開始時間的全部日誌
實例操做以下:

[root@docker ~]# docker logs -f busybox #跟蹤查看容器busybox的日誌

  

九、docker port

顯示指定容器的端口映射

實例操做以下:

[root@docker ~]# docker port busybox
8080/tcp -> 0.0.0.0:8080
#顯示busybox容器的端口映射信息

    

十、docker commit

用已存在的容器從新建立一個新的鏡像

經常使用參數以下:

-a #提交的鏡像做者 -c #使用Dockerfile指令來建立鏡像 -m #提交時附上說明文字 -p     #在commit時,將容器暫停

實例操做以下:

[root@docker ~]# docker commit -a "test" -m "mynginx" busybox busybox:v1.0
sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd

[root@docker ~]# docker images |grep busybox
busybox                                             v1.0                  f4d667e471bc        24 seconds ago      1.22MB
#將容器busybox從新生成一個新的版本busybox:v1.0

   

十一、docker cp

用於容器與物理主機之間拷貝文件

實例操做以下:

[root@docker ~]# docker cp /opt/data/index.html busybox:/docker
[root@docker ~]# docker exec -it busybox /bin/ls /docker
data        index.html
#將物理主機中的/opt/data/index.html拷貝到容器busybox的/docker目錄下

[root@docker ~]# docker cp /opt/data/index.html busybox:/docker/index.php
[root@docker ~]# docker exec -it busybox /bin/ls /docker
data        index.html  index.php
#將物理主機中的/opt/data/index.html拷貝到容器busybox的/docker目錄下並更名爲index.php

[root@docker ~]# docker cp busybox:/docker /opt/
[root@docker ~]# ls /opt/
data  docker
#拷貝容器busybox:/docker目錄到物理主機中的/opt/目錄下

    

十二、docker login/logout

用於登陸與登出容器鏡像倉庫
docker login #登錄到一個Docker鏡像倉庫,若是未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub
docker logout #登出一個Docker鏡像倉庫,若是未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub

經常使用參數以下:

-u   #登錄的用戶名
-p    #登錄的密碼

實例操做以下:

[root@docker ~]# docker login -u username -p password
Login Succeeded
[root@docker ~]# docker logout
Removing login credentials for https://index.docker.io/v1/
#登陸與登出默認的容器鏡像倉庫

  

1三、docker pull/push

docker pull #從鏡像倉庫中拉取或者更新指定鏡像
docker push #將本地的鏡像上傳到鏡像倉庫,要先登錄到鏡像倉庫

實例操做以下:

[root@docker ~]# docker  pull  nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ... 
latest: Pulling from docker.io/library/nginx
f2aa67a397c4: Already exists 
3c091c23e29d: Pulling fs layer 
4a99993b8636: Pulling fs layer
#從鏡像倉庫中拉取或者更新指定鏡像,輸出信息如上
[root@docker ~]# docker push  busybox:v1.0.0
#上傳鏡像到鏡像倉庫上

  

1四、docker images

顯示系統本地容器鏡像文件

經常使用參數以下:

-a #列出全部的鏡像(含中間映像層,默認,過濾掉中間映像層); --digests #顯示鏡像的摘要信息; -f #顯示知足條件的鏡像; --format #指定返回值的模板文件; --no-trunc #顯示完整的鏡像信息; -q     #只顯示鏡像ID。

實例操做以下:

[root@docker ~]# docker images
REPOSITORY                                          TAG                   IMAGE ID            CREATED             SIZE
busybox                                             v1.0                  f4d667e471bc        8 minutes ago       1.22MB
bitnami/jenkins 
#列出本地全部的鏡像
[root@docker ~]# docker images -q 20ee805752cb 4700307f41f2 #只顯示容器ID
[root@docker ~]# docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE busybox v1.0 <none> f4d667e471bc 9 minutes ago 1.22MB bitnami/jenkins 2.176.3-debian-9-r5 sha256:3ed6e367edbfececb8d5eb81e1a95eacf188f2f39e629301170aa6b44d61fb92 efdd74a3f655 3 months ago 872MB [root@docker ~]# docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE busybox v1.0 sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd 10 minutes ago 1.22MB bitnami/jenkins 2.176.3-debian-9-r5 sha256:efdd74a3f655022fedbb3ce09b4652f3b7fdf785f75ffeb1e0adb351d40b68e9 3 months ago 872MB #能夠對比下兩個參數顯示的不一樣信息

   

1五、docker rmi

刪除鏡像

經常使用參數以下:

-f     #強制刪除

實例操做以下:

[root@docker ~]# docker images |grep busybox
REPOSITORY                 TAG                   IMAGE ID            CREATED             SIZE
busybox                    v1.0                  f4d667e471bc        12 minutes ago      1.22MB
busybox                    latest                db8ee88ad75f        4 months ago        1.22MB
[root@docker ~]# docker rmi f4d667e471bc
Untagged: busybox:v1.0
Deleted: sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd
Deleted: sha256:d7fda98509933c5c8f3ee5f3e774c817edcc15ee38960c27a4d19eef44253708
[root@docker ~]# docker images |grep busybox
REPOSITORY            TAG                   IMAGE ID            CREATED             SIZE
busybox               latest                db8ee88ad75f        4 months ago        1.22MB
#刪除一個鏡像

 

1六、docker tag

標記本地鏡像

實例操做以下:

[root@docker ~]# docker images |grep busybox
REPOSITORY                 TAG                   IMAGE ID            CREATED             SIZE
busybox                    latest                db8ee88ad75f        4 months ago        1.22MB
[root@docker ~]# docker tag busybox:latest busybox:v2
[root@docker ~]# docker images |grep busybox
REPOSITORY                 TAG                   IMAGE ID            CREATED             SIZE
busybox                    latest                db8ee88ad75f        4 months ago        1.22MB
busybox                    v2                    db8ee88ad75f        4 months ago        1.22MB
#從結果能夠看出兩個容器的ID是同樣的,只是TAG改變了,相似於linux中文件與文件的硬連接同樣,其二者的inode號相同。

  

1七、docker build :

使用Dockerfile建立鏡像

經常使用參數以下:

-f #指定要使用的Dockerfile路徑 --label=[] #設置鏡像使用的元數據; -m #設置內存最大值 --memory-swap   #設置Swap的最大值爲內存+swap,"-1"表示不限swap --no-cache #建立鏡像的過程不使用緩存 --pull #嘗試去更新鏡像的新版本 -q #安靜模式,成功後只輸出鏡像ID --rm #設置鏡像成功後刪除中間容器 --ulimit #Ulimit配置 實例操做以下: [root@docker ~]# docker build https://github.com/nginxinc/docker-nginx/

 

1八、docker history

查看指定鏡像的建立歷史

經常使用參數以下:

-H       #以可讀的格式打印鏡像大小和日期,默認爲true;
--no-trunc       #顯示完整的提交記錄;
-q       #僅列出提交記錄ID。

實例操做以下:

[root@docker ~]# docker history busybox:latest
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
db8ee88ad75f        4 months ago        /bin/sh -c #(nop)  CMD ["sh"]                   0B                  
<missing>           4 months ago        /bin/sh -c #(nop) ADD file:9ceca008111a4ddff…   1.22MB

  

1九、docker info

顯示 Docker 系統信息,包括鏡像和容器數

 

20、docker version

顯示 Docker 版本信息

實例操做以下:

[root@master ~]# docker version
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:23:03 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:25:29 2018
  OS/Arch:          linux/amd64
  Experimental:     false

  

 

 

相關文章
相關標籤/搜索