Docker容器常用操作命令(鏡像的上傳、下載、導入、導出、創建、刪除、修改、啟動等)詳解


1、docker鏡像下載

docker pull [options] name [:tag@digest]

 name后邊可以跟鏡像標簽或者鏡像摘要(其實就是鏡像的版本),如果不加任何東西,則會默認是在docker hub中下載:latest(最新版)的

 參數詳情:

名稱

默認

描述

--all-tags, a

 

下載倉庫所有鏡像

--disable-content-trust

true

跳過鏡像校驗

--platform

 

設置鏡像所屬平台, 如果有多個鏡像服務.

 

2、查看當前docker鏡像

docker images [options] [repository[:tag]]

 images后邊可以加要查看的鏡像名稱和版本

 

3、運行鏡像

docker run [options] image [:tag] [command] [arg...]

建議使用:docker run -dit [id]

參數說明:

 -d, --detach=false 指定容器運行於前台還是后台,默認為false

 -i, --interactive=false 打開STDIN,用於控制台交互

 -t, --tty=false 分配tty設備,該可以支持終端登錄,默認為false

 -u, --user="" 指定容器的用戶

 -a, --attach=[] 登錄容器(必須是以docker run -d啟動的容器)

 -w, --workdir="" 指定容器的工作目錄

 -c, --cpu-shares=0 設置容器CPU權重,在CPU共享場景使用

 -e, --env=[] 指定環境變量,容器中可以使用該環境變量

 -m, --memory="" 指定容器的內存上限

 -P, --publish-all=false 指定容器暴露的端口

 -p, --publish=[] 指定容器暴露的端口

 -h, --hostname="" 指定容器的主機名

 -v, --volume=[] 給容器掛載存儲卷,掛載到容器的某個目錄

 --volumes-from=[] 給容器掛載其他容器上的卷,掛載到容器的某個目錄

 --cap-add=[] 添加權限,權限清單詳見:http://linux.die.net/man/7/capabilities

 --cap-drop=[] 刪除權限,權限清單詳見:http://linux.die.net/man/7/capabilities

 --cidfile="" 運行容器后,在指定文件中寫入容器PID值,一種典型的監控系統用法

 --cpuset="" 設置容器可以使用哪些CPU,此參數可以用來容器獨占CPU

 --device=[] 添加主機設備給容器,相當於設備直通

 --dns=[] 指定容器的dns服務器

 --dns-search=[] 指定容器的dns搜索域名,寫入到容器的/etc/resolv.conf文件

 --entrypoint="" 覆蓋image的入口點

 --env-file=[] 指定環境變量文件,文件格式為每行一個環境變量

 --expose=[] 指定容器暴露的端口,即修改鏡像的暴露端口

 --link=[] 指定容器間的關聯,使用其他容器的IP、env等信息

 --lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc時使用

 --name="" 指定容器名字,后續可以通過名字進行容器管理,links特性需要使用名字

 --net="bridge" 容器網絡設置:

 bridge 使用docker daemon指定的網橋

 host //容器使用主機的網絡

 container:NAME_or_ID >//使用其他容器的網路,共享IP和PORT等網絡資源

 none 容器使用自己的網絡(類似--net=bridge),但是不進行配置

 --privileged=false 指定容器是否為特權容器,特權容器擁有所有的capabilities

 --restart="no" 指定容器停止后的重啟策略:

 no:容器退出時不重啟

 on-failure:容器故障退出(返回值非零)時重啟

 always:容器退出時總是重啟

 --rm=false 指定容器停止后自動刪除容器(不支持以docker run -d啟動的容器)

 --sig-proxy=true 設置由代理接受並處理信號,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

 

4、查看正在運行的docker容器

docker ps

 -a :顯示所有的容器,包括未運行的。

 -q :靜默模式,只顯示容器編號。

 -f :根據條件過濾顯示的內容。

 --format :指定返回值的模板文件。

 -l :顯示最近創建的容器。

 -n :列出最近創建的n個容器。

 --no-trunc :不截斷輸出。

 -s :顯示總的文件大小。

 

5、進入docker容器內部的shell

docker exec -it [name] bash

 -d,以后台方式執行命令;

 -e,設置環境變量

 -i,交互模式

 -t,設置TTY

 -u,用戶名或UID,例如myuser:myusergroup

 

6、docker build 構建鏡像

docker build [OPTIONS] PATH | URL | -

OPTIONS說明:

 -f :指定要使用的Dockerfile路徑;

 -m :設置內存最大值;

 --tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。

 --build-arg=[] :設置鏡像創建時的變量;

 --cpu-shares :設置 cpu 使用權重;

 --cpu-period :限制 CPU CFS周期;

 --cpu-quota :限制 CPU CFS配額;

 --cpuset-cpus :指定使用的CPU id;

 --cpuset-mems :指定使用的內存 id;

 --disable-content-trust :忽略校驗,默認開啟;

 --force-rm :設置鏡像過程中刪除中間容器;

 --isolation :使用容器隔離技術;

 --label=[] :設置鏡像使用的元數據;

 --memory-swap :設置Swap的最大值為內存+swap,"-1"表示不限swap;

 --no-cache :創建鏡像的過程不使用緩存;

 --pull :嘗試去更新鏡像的新版本;

 --quiet, -q :安靜模式,成功后只輸出鏡像 ID;

 --rm :設置鏡像成功后刪除中間容器;

 --shm-size :設置/dev/shm的大小,默認值是64M;

 --ulimit :Ulimit配置。

 --network: 默認 default。在構建期間設置RUN指令的網絡模式

 

7、docker刪除容器

1)首先查看系統現有的容器

docker ps -a

很多是測試產生的容器,現在將他們刪除,執行:

docker rm [c9b077c1e8b2 97b22f5efeca]

 c9b077c1e8b2、97b22f5efeca為要刪除容器的id

 

2)刪除正在運行中的容器

此時id為 ae32dddeadbf 的容器正在運行中

我們直接刪除它是會報錯的:

 

這時加上參數 -f (強制刪除)即可

docker rm -f ae32dddeadbf

 

 

3)刪除所有的容器

先停止所有運行中的容器:

docker stop $(docker ps -q)

 

再查看所有的容器:

docker ps -aq

 

刪除所有的容器:

docker rm $(docker ps -aq)

 

8、docker刪除鏡像

先查看當前鏡像:

docker images

 

刪除鏡像:

docker rmi ceshicopy2

 ok,已經刪除

需要注意的是,刪除鏡像時,必須保證沒有容器正在基於此鏡像運行着,所以需要先刪除基於此鏡像的容器,再刪除鏡像

 

9、docker鏡像的導入導出

先查看當前鏡像

docker images

 

1)docker鏡像的導出

docker save

用法:docker save > 【目標文件】 【源鏡像名】

示例:

docker save > nginx.tar hub.c.163.com/library/nginx

 

2)docker鏡像的導入

docker load

用法:docker load < 【導入的鏡像】

示例:

docker load < nginx.tar

 

10、docker容器的導入導出

查看當前容器

docker ps -a

 

1)容器的導出

docker export

用法:docker export > 【目標文件】 【源鏡像名】

示例:

docker export > jpress.tar 8bf49fa5ca97

 

2)容器的導入

docker import

用法:docker import 【導入的容器】 【導入后修改的名字】

示例:

docker import jpress.tar jpress:1

注意:

容器導入后也會形成鏡像,然后再運行此鏡像即可!

 

11、保存修改后的容器內容

docker commit  [容器id]  [修改后的名字:tag]

示例:

docker commit 03b79d8cef9d jpmysql

已經生成新的鏡像,基於修改后的容器。

直接運行即可

 

12、鏡像上傳至私有倉庫

docker push [OPTIONS] NAME[:TAG]

示例:

1、首先登錄docker hub

docker login

 

2、上傳鏡像

docker push runningrookie/ubuntu:16.04

注意:上傳此鏡像前,需要先把鏡像的名稱改為[用戶名]/ubuntu:[tag]格式,前邊一定要是自己登錄賬號的用戶名;

注意:[用戶名]表示你的用戶名,/ubuntu表示這個叫ubuntu的存儲庫,后邊的:[tag]才是你上傳到docker hub后顯示的標簽名稱。

 

3、進入docker hub查看

 

13、docker容器設置開機自啟

1、用法:

啟動時加--restart=always參數

 

2、示例:

docker run --restart=always .....

如果創建時未指定 --restart=always ,可通過update 命令設置:

docker update --restart=always xxx

若想要關閉自啟動,可執行

docker update --restart=no xxx

 

3、參數:

 no  不自動重啟容器. (默認值)

 on-failure  容器發生error而退出(容器退出狀態不為0)重啟容器,可以指定重啟的最大次數,如:on-failure:10

 unless-stopped  在容器已經stop掉或Docker stoped/restarted的時候才重啟容器

 always  在容器已經stop掉或Docker stoped/restarted的時候才重啟容器,手動stop的不算


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM