(1)查看要要保存的鏡像的ID
docker images
(2)保存鏡像
docker save 鏡像名/鏡像id -o /home/wzh/docker/spring-boot-docker.tar
(3)加載鏡像
docker load -i spring-boot-docker.tar
平常使用命令python
1.中止全部的container,這樣纔可以刪除其中的images:web
docker stop $(docker ps -a -q)
若是想要刪除全部container的話再加一個指令:spring
docker rm $(docker ps -a -q)
2.查看當前有些什麼imagesdocker
docker images
3.刪除images,經過image的id來指定刪除誰shell
docker rmi <image id>
想要刪除untagged images,也就是那些id爲<None>的image的話能夠用ubuntu
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
要刪除所有image的話數組
docker rmi $(docker images -q)
4進入已中止的容器緩存
sudo docker start 容器id
sudo docker exec -i -t 容器id /bin/bash
5. 重命名鏡像名tomcat
docker tag 鏡像id 重命名:tag
6. 重命名容器名bash
dokcer rename 容器ID mytomcat7:jre7
1)使用第一個交互式容器
sudo docker run -i -t ubuntu /bin/bash
-i 保證容器中STDIN是開啓的,保證持久的標準輸入
-t 爲建立的容器分配一個僞tty終端
綜上容器經過-it 提供了一個交互式的shell
1.首先Docker會檢查本地是否存在ubuntu鏡像,若是沒有,docker會鏈接官方維護的docker hub registry查看hub並下載該鏡像
2.隨後使用該鏡像再內部建立一個交互式的容器
3.登陸到該容器中以後,會顯示
user@容器id:/#
容器id名就是容器主機名
2)給容器命名
若是不給docker建立的容器指定名稱,docker會爲其隨機指定一個名稱
若是要指定特定的名稱,使用--name標誌來實現
sudo docker run --name spec_name -i -t ubuntu /bin/bash
3)從新啓動已經中止的容器
sudo docker start spec_name
也能夠經過容器id啓動已經中止運行的容器
4)使用守護式容器
sudo docker run --name daemonizer_container -d ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done"
-d 參數 使得容器會在後臺運行
5)查看容器內的進程
要查看容器內的進程,使用docker top命令
sudo docker top daemonizer_container
6)docker 統計信息
利用stats命令,顯示一個或者多個容器的統計信息
sudo docker stats daemonizer_container (或後跟空格其餘容器)
7) 在容器內部運行進程
利用docker exec命令在容器內部額外啓動新進程
容器內運行的進程有兩種類型
1.後臺任務
2.交互式任務
sudo docker exec -d daemonizer_container touch /etc/new_file
-d標誌須要運行一個後臺進程,-d標誌以後,指定的是在內部執行這個命令的容器名字和要執行的命令
sudo docker exec -i -t daemonizer_container /bin/bash
這裏和運行交互式容器同樣,在容器內建立一個新的bash會話
8)中止守護式容器
sudo docker stop daemonizer_container
或者經過容器id來中止
sudo docker stop casa123ca23
若是想要查看已經中止的容器
使用
docker ps -a
只查看正在運行的容器
docker ps
9)自動重啓容器
因爲某種錯誤而致使容器中止運行,能夠經過--restart=always標誌,讓docker自動從新啓動該容器
sudo docker run --restart=always --name daemonizer_container -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done;
10)查看容器具體信息
經過docker inspect 來獲取更多的容器信息
sudo docker inspect daemonizer_container
11)刪除容器
若是容器已經再也不使用,可使用docker rm命令來刪除 (刪除前必須保證容器已經中止運行)
刪除指定的容器
sudo docker rm 容器id
刪除全部容器(注意這裏是`(1的左邊) 而不是')
sudo docker rm `sudo docker ps -a -q`
-a 表示列出全部容器
-q 只返回容器的id
`sudo docker ps -a -q` 返回容器id的列表
12)建立一個自定義命名的最基本的容器
sudo docker run -i -t --name container_spec_name ubuntu /bin/bash
13)列出鏡像
sudo docker images
若是隻查看ubuntu相關鏡像
sudo docker images ubuntu
本地的鏡像都保存在docker宿主機的/var/lib/docker目錄下
能夠手動目錄查看
也能夠用
docker info
查看
14)從Docker hub查找可用鏡像
sudo docker search 用戶名/倉庫名
15)從Docker hub上面拉取鏡像
sudo docker pull 倉庫 例子 sudo docker pull ubuntu #未指定標籤,默認latest標籤 或者指定帶標籤的鏡像 sudo docker pull 倉庫:tag 例子 sudo docker pull ubuntu:16.04
16)從指定鏡像建立容器
sudo docker run -i -t 用戶名/倉庫名 /bin/bash
容器啓動命令:docker run --name 參數1 -p 參數2 -v 宿主機與容器交互的目錄文件 -d 後臺運行
docker run --name tomcat -p 8080:8080 -v /usr/test:/usr/local/tomcat/webapps/test -d tomcat
參數解釋:
--name tomcat 表示上一步安裝的鏡像名稱
-p 8080:8080 表示將容器的8080port映射到本機的8080port端口
-v /usr/test:/usr/local/tomcat/webapps/test 表示將本機下的usr目錄下的test文件夾映射到容器tomcat的webapps文件夾下
-d tomcat 表示在後臺守護進程的方式啓動(不進入後臺啓動),指定上一步安裝的鏡像名稱
17)構建鏡像方法
構建鏡像有兩種方法
其中Dockerfile支持DSL語法, 由指令和參數組成,支持註釋
18)登陸Docker hub
sudo docker login
登出
sudo docker logout
19)用Dockerfile構建鏡像
mkdir DOCKER
cd DOCKER
touch Dockerfile
編輯Dockerfile
FROM ubuntu:14.04 MAINTAINER jojo "12301@qq.com" RUN apt-get update && apt-get install -y python RUN echo "hello,docker" EXPOSE 80
每一條指令都會建立一個新的鏡像層並對鏡像進行提交
20)基於Dockerfile執行docker build構建新鏡像
cd DOCKER
跳到Dockerfile目錄
sudo docker build -t="jojo/docker_test" .
注意 別忘記 .表明使用當前目錄的Dockerfile進行構建
也能夠指定具體的Dockerfile位置,使用-f標誌
docker build -t="用戶名/倉庫名" -f path/to/file
21)若是構建中失敗
因爲docker構建新鏡像是分層進行的,即Dockerfile每一次構建過程都會將結果提交爲鏡像,因此在某step失敗後,可根據最近的step容器id(屏幕輸出build過程)
調試哪裏錯了
修改Dockerfile
繼續build
sudo docker run -t -i 最近build的容器id /bin/bash
22)docker build 默認利用以前成功構建的鏡像層看成緩存,若是要重頭構建鏡像,確保構建過程不使用緩存可使用--no-cache標誌
sudo docker build --no-cache -t="jojo/docker_test" .
23)查看鏡像構建層或者構建歷史
使用docker history
sudo docker history 鏡像id
查看新構建的xx鏡像的每一層以及每一層的Dockerfile指令
24)使用-p選項映射 容器特定的端口到本地的宿主機端口
docker能夠經過兩種方法在宿主機分配端口
sudo docker run -d -p 127.0.0.1:8080:80 --name container_name jojo/docker_test
上面的命令會將容器的80端口綁定到本地宿主機的127.0.0.1這個ip的8080端口上
但這會限制Docker的靈活性,所以docker 還提供了一個更簡單的方式,即-p參數,該參數能夠用來對外公開在Dockerfile中經過EXPOSE指令公開的全部端口
25)查看宿主機與容器的映射關係
docker ps -l #能夠查看端口映射
也能夠經過docker port 查看
sudo docker port 容器id 或 容器名
或者
sudo docker port 鏡像id 端口號(如80)
26)Dockerfile 指令
1.CMD
用於指定一個容器啓動時要運行的命令.相似RUN指令是鏡像被構建時要運行的命令,而CMD是指定容器被啓動時要運行的命令
sudo docker run -t -i 用戶名/倉庫名 /bin/bash 至關於 sudo docker run -t -i 用戶名/倉庫名 + CMD ["/bin/bash"]
2.WORKDIR
在容器內部設置一個工做目錄,使得CMD指令會在這個目錄下執行
WORKDIR /opt/webapp/db RUN bundle install WORKDIR /opt/webapp #最終工做目錄設置爲 /opt/webapp CMD ["rackup"]
也能夠經過-w標誌在運行時覆蓋工做目錄
sudo docker run -t -i /var/log ubuntu pwd
該命令會將容器內的工做目錄設置爲/var/log
3.ENV
ENV指令用在鏡像構建中設置環境變量
ENV RVM_PATH /home/rvm/
RVM_PATH即爲一個環境變量
ENV TARGET_DIR /opt/app
WORKDIR $TARGET_DIR
也能夠經過-e標誌在運行時來傳遞環境變量
sudo docker run -t -i -e "WEB_PORT=8080" ubuntu env
這些環境變量也會被持久化保存到 咱們的鏡像建立的任何容器中
在容器終端中運行env命令
能夠查看環境變量
4.VOLUME
VOLUME指令用來向基於鏡像建立的容器添加捲
5.ADD
ADD指令用來將構建環境下的文件和目錄複製到鏡像中
文件複製
ADD source_file target_file/to/path/source_file #構建目錄下的source_file複製到鏡像target_file/to/path/
目錄複製
ADD source_file/to/path/ target_file/to/path/ #源文件目錄位置 目的文件目錄位置
指向源文件的位置參數能夠試一個URL,或者構建上下文或者環境文件名或者目錄
不能對構建目錄或者上下文以外的文件進行ADD操做
使用URL做爲文件源
ADD http://wordpress.org/latest.zip /root/wordpress.zip
另外若是將一個歸檔文件(gzio,bzip2,xz)制定爲源文件,docker會自動將歸檔文件解開(unpack)
ADD latest.tar.gz /var/www/wordpress/
但docker不知道URL方式指定源位置中使用歸檔文件(書中所說,不肯定如今是否更新)
6.COPY
COPY與ADD類似,不一樣的是COPY只關心在構建上下文中複製本地文件,而不會去作提取和解壓工做,至關於縮水版ADD
同時COPY的複製路徑必須是一個絕對路徑,而且源路徑必須以"/"結尾,這樣docker會認爲它是目錄,若是目錄不存在,docker會自動化遞歸的建立所須要的目錄結構 至關於
mkdir -p #遞歸的建立目錄
27)push 鏡像到docker hub
這裏按照書上步驟遇到了denied: requested access to the resource is denied問題
鏡像構建完畢的時候 準備傳入本身hub發現 被拒絕
報了denied: requested access to the resource is denied異常,意思是沒有權限
解決的辦法是:使用 docker tag更名字
docker tag REPOSITORY名字 dockerhub的"用戶名/倉庫名"
docker push "用戶名/倉庫名"
28)Docker鏡像保存save、加載load
(1)查看要要保存的鏡像的ID
docker images
(2)保存鏡像
docker save 鏡像名/鏡像id -o /home/wzh/docker/spring-boot-docker.tar
(3)加載鏡像
docker load -i spring-boot-docker.tar
解決方案 參考
https://stackoverflow.com/questions/41984399/denied-requested-access-to-the-resource-is-denied-docker