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的不算