首頁  >  文章  >  運維  >  docker run和docker exec指令的差別是什麼

docker run和docker exec指令的差別是什麼

青灯夜游
青灯夜游原創
2021-11-25 16:44:2910779瀏覽

區別:1、“docker run”的操作對像是“鏡像”,而“docker exec”的操作對像是“容器”;2、“docker run”適用適合沒有容器運行的情況,而“docker exec”適用於在現有容器中執行命令的情況。

docker run和docker exec指令的差別是什麼

本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。

docker run 和docker exec 的差異


docker run根據映像建立一個容器並執行一個指令,操作的物件是映像;

#docker exec在執行的容器中執行指令,操作的物件是 容器

「docker run」通常是在新建立的容器中所使用的指令。它適用適合沒有容器運行的情況,您想要建立一個容器,並且要啟動它,然後在其上執行一個進程。

「docker exec」適用於在現有容器中執行指令的情況。如果您已經擁有了一個正在運行的容器,並希望更改該容器或從中獲取某些內容,那麼使用「docker exec」命令就非常合適了。


docker run 指令

語法

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

OPTIONS說明:

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

  • ##-d: 後台運行容器,並返回容器ID;-i:

     以交互模式運行容器,通常與-t 同時使用;
  • -P:

     隨機連接埠映射,容器內部連接埠
  • 隨機

    對應到主機的高埠

  • -p

    : 指定連接埠映射,格式為:主機(宿主)連接埠:

    容器連接埠
  • -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" 或 --cpuset="0,1,2"
  • :
  •  綁定容器到指定CPU運作;

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

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

--link=[]

: 加入連結到另一個容器;

--expose=[]

:

 開放一個連接埠或一組連接埠;#################--volume , -v###: ###綁定一個磁碟區###############實例#########使用docker映像nginx:latest 以後台模式啟動一個容器,並將容器命名為my-nginx。 ###
docker run --name my-nginx -p 8081:80 -d nginx:latest
############ 瀏覽器存取http://主機IP:8081,效果如下:###############使用映像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命令:

docker run -it nginx:latest /bin/bash


docker exec 命令

语法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

  • -d分离模式: 在后台运行

  • -i :  即使没有附加也保持STDIN 打开

  • -t分配一个伪终端

在容器名称 my-nginx 中开启一个交互模式的终端:

docker exec -it my-nginx /bin/bash

或者使用容器ID 721eb23901ce 开启一个交互模式的终端:

docker exec -it 721eb23901ce /bin/bash

推荐学习:《docker视频教程

以上是docker run和docker exec指令的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn