Docker run 命令

TuxedoLinux發表於2018-06-13

Docker run 命令

Docker 命令大全Docker 命令大全


docker run :建立一個新的容器並執行一個命令

語法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS說明:

  • -a stdin: 指定標準輸入輸出內容型別,可選 STDIN/STDOUT/STDERR 三項;

  • -d: 後臺執行容器,並返回容器ID;

  • -i: 以互動模式執行容器,通常與 -t 同時使用;

  • -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

  • --name="nginx-lb": 為容器指定一個名稱;

  • --dns 8.8.8.8: 指定容器使用的DNS伺服器,預設和宿主一致;

  • --dns-search example.com: 指定容器DNS搜尋域名,預設和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 設定環境變數;

  • --env-file=[]: 從指定檔案讀入環境變數;

  • --cpuset="0-2" or --cpuset="0,1,2": 繫結容器到指定CPU執行;

  • -m :設定容器使用記憶體最大值;

  • --net="bridge": 指定容器的網路連線型別,支援 bridge/host/none/container: 四種型別;

  • --link=[]: 新增連結到另一個容器;

  • --expose=[]: 開放一個埠或一組埠;

例項

使用docker映象nginx:latest以後臺模式啟動一個容器,並將容器命名為mynginx。

docker run --name mynginx -d nginx:latest

使用映象nginx:latest以後臺模式啟動一個容器,並將容器的80埠對映到主機隨機埠。

docker run -P -d nginx:latest

使用映象nginx:latest以後臺模式啟動一個容器,將容器的80埠對映到主機的80埠,主機的目錄/data對映到容器的/data。

docker run -p 80:80 -v /data:/data -d nginx:latest

使用映象nginx:latest以互動模式啟動一個容器,在容器內執行/bin/bash命令。

runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/# 



外部訪問docker容器(docker run -p/-P 指令)

2017.06.07 18:17* 字數 570 閱讀 6371評論 0

容器中可以執行一些網路應用,要讓外部也可以訪問這些應用,可以通過 -P(大寫) 或 -p (小寫) 引數來指定埠對映。
(1)當使用 -P 標記時,Docker 會隨機對映一個 49000~49900 的埠到內部容器開放的網路埠。
使用 docker ps 可以看到,本地主機的 49155 被對映到了容器的 5000 埠。此時訪問本機的 49155 埠即可訪問容器內 web 應用提供的介面。

$ sudo docker run -d -P training/webapp python app.py
$ sudo docker ps -l
CONTAINER ID  IMAGE                   COMMAND       CREATED        STATUS        PORTS                    NAMES
bc533791f3f5  training/webapp:latest  python app.py 5 seconds ago  Up 2 seconds  0.0.0.0:49155->5000/tcp  nostalgic_morse

同樣的,可以通過 docker logs 命令來檢視應用的資訊。

$ sudo docker logs -f nostalgic_morse
* Running on http://0.0.0.0:5000/
10.0.2.2 - - [23/May/2014 20:16:31] "GET / HTTP/1.1" 200 -
10.0.2.2 - - [23/May/2014 20:16:31] "GET /favicon.ico HTTP/1.1" 404 -

(2)-p(小寫)則可以指定要對映的IP和埠,但是在一個指定埠上只可以繫結一個容器。支援的格式有 hostPort:containerPortip:hostPort:containerPortip::containerPort

  • hostPort:containerPort(對映所有介面地址)
    將本地的 5000 埠對映到容器的 5000 埠,可以執行如下命令:
    $ sudo docker run -d -p 5000:5000 training/webapp python app.py 此時預設會繫結本地所有介面上的所有地址。

  • ip:hostPort:containerPort (對映指定地址的指定埠)
    指定對映使用一個特定地址,比如 localhost 地址 127.0.0.1
    $ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

  • ip::containerPort (對映指定地址的任意埠)
    繫結 localhost 的任意埠到容器的 5000 埠,本地主機會自動分配一個埠。
    sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
    還可以使用 udp 標記來指定 udp 埠
    $ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

檢視對映埠配置
使用 docker port 來檢視當前對映的埠配置,也可以檢視到繫結的地址

$ docker port nostalgic_morse 5000
127.0.0.1:49155.

注意:

  • 容器有自己的內部網路和 ip 地址(使用 docker inspect 可以獲取所有的變數,Docker 還可以有一個可變的網路配置。)
  • -p 標記可以多次使用來繫結多個埠
    例如

$ sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

原文連結:https://yeasy.gitbooks.io/docker_practice/content/network/port_mapping.html


相關文章