一、普通指令
啟動 Docker
sudo systemctl start docker
停止 Docker
sudo systemctl stop docker
普通重啟 Docker
sudo systemctl restart docker
修改配置后重啟 Docker
sudo systemctl daemon-reload sudo systemctl restart docker
查看版本
docker version
查看Docker 信息
docker info
Docker 幫助
docker --help
二、鏡像命令
列出本機Docker上已經安裝的鏡像:
docker images
搜索Docker hub上面的鏡像
# 普通搜索,以Tomcat為例 docker search tomcat # 搜索star大於50的鏡像實例 docker search -s 50 tomcat
從Docker Hub上面下載鏡像
# 以下載tomcat為例
docker pull tomcat[:version]
刪除本地的某一個鏡像
# 以刪除tomcat為例 docker rmi tomcat[:version] # 通過鏡像ID刪除 docker rmi -f 鏡像ID # 通過鏡像ID刪除多個 docker rmi -f 鏡像名1:TAG 鏡像名2:TAG # 刪除全部 # docker images -qa : 獲取所有鏡像ID docker rmi -f $(docker images -qa)
鏡像打包與運行
#打包一個我們自己的 tomcat docker commit -a jianghai -m="package my tomcat" 要打包的鏡像ID jianghai/tomcat:1.0 # -a : 作者名稱 # -m : 打包信息 #啟動我們自己打包生成的 tomcat docker run -it -p 7700:8080 jianghai/tomcat:1.0
三、容器命令
啟動容器
# 新建並進入容器,最后一個為本地容器的ID docker run -it --name="rivercentos001" 9f38484d220f # 為容器啟一個名稱 -name="新容器名稱" # 后台運行容器,並返回容器ID,也就是啟動守護士容器 -d # 以交互模式運行容器,通常與-t同時使用. -i # 為容器重新分配一個偽終端,通過與-i同時使用 -t # 隨機端口映射 [大寫P] -P # 端口映射 [小寫P] -p
# 數據卷 加參數 ro:容器內的目錄只讀,不可寫
-v /宿主機絕對路徑目錄:/容器內目錄[:ro] 鏡像名
查看當前正在運行的Docker 容器
docker ps # 參數 # 列出當前正在運行的以及歷史上運行過的 -a # 顯示最近創建的容器 -l # 顯示最近創建的N個容器 -n # 靜默模式,只顯示容器編號 -q # 不截斷輸出 --no-trunc
退出容器
# 退出並停止
exit
# 容器不停止退出
ctrl+P+Q
啟動容器
docker start 容器ID或容器name
重啟容器
docker restart 容器ID或容器name
停止
docker stop 容器ID或容器name
強制停止
docker kill 容器ID或容器name
刪除容器
# 刪除已經停止的容器 docker rm 容器ID或容器name # 強制刪除已經停止或正在運行的容器 docker rm -f 容器ID或容器name 一次性刪除所有正在運行的容器 docker rm -f $(docker ps -qa)
重新進入容器
# 第一種方式 docker attach 容器ID或容器名稱 # 第二種方式{隔山打牛式,在宿主機向容器發送命令並獲取結果} docker exec -t 容器ID或容器名稱 ls# 列出文件列表
# 交互
docker exec -it rivertomcat /bin/bash
從容器內拷貝文件到宿主機
docker cp 容器ID或容器名稱:/文件路徑與文件名 宿主機地址 # 例,拷貝容器river的aaa文件夾下的a.txt到宿主機的當前位置 docker cp river:/aaa/a.txt .
四、日志命令
docker logs -f -t --tail 10 容器ID或容器名稱 # 加入的時間戳 -t # 跟隨最新的日志打印 -f # 輸出最后幾行的日志 --tail 行數 # 啟動一個centos,並且每兩秒在Console輸出一個Hello jianghai docker run -d --name river centos /bin/sh -c "while true;do echo hello jianghai;sleep 2;done" # 查看最后10行的日志 docker logs -f -t --tail 10 river
#查看容器內的進程 docker top 容器ID或容器名稱
五、DockerFile解析
FROM 基礎鏡像,當前新鏡像是基於哪個鏡像的。
MAINTAINER 鏡像維護者的姓名和郵箱地址。
RUN 容器構建時需要運行的命令。
EXPOSE 當前容器對外暴露出的端口。
WORKDIR 指定在創建容器后,終端默認登陸的進來工作目錄,也不是運行並登錄進來的當前目錄位置。
ENV 用來構建鏡像過程中設置環境變量。
ADD 將宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包。
COPY 類似ADD,但只是復制,不帶解壓壓縮包的功能。
VOLUME 容器數據卷,用於數據保存和持久化工作。
CMD 指定一個容器啟動時要運行的命令,DockerFile中可以有多個CMD指令,但只有最后一個會生效執行。
ENTRYPOINT
指定一個容器啟動時要運行的命令
ENTRYPOINT的作用和CMD一樣,都是在指定容器啟動程序及參數
相當於CMD的升級版本,CMD只能執行一條命令,運行時如果加一些參數是不行的.但如果把CMD替換成ENTRYPOINT就可以在Run鏡像的時候在尾部追回指令.
簡單的說如果Run鏡像的時候追回了命令,CMD會用追回的覆蓋掉舊的,ENTRYPOINT會追回執行。
ONBUILD 當構建一個被繼承的DockerFile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發。