一掂骏、普通指令
啟動 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
# 數(shù)據卷 加參數(shù) ro:容器內的目錄只讀,不可寫
-v /宿主機絕對路徑目錄:/容器內目錄[:ro] 鏡像名
查看當前正在運行的Docker 容器
docker ps
# 參數(shù)
# 列出當前正在運行的以及歷史上運行過的
-a
# 顯示最近創(chuàng)建的容器
-l
# 顯示最近創(chuàng)建的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或容器名稱
# 第二種方式{隔山打牛式,在宿主機向容器發(fā)送命令并獲取結果}
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 行數(shù)
# 啟動一個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 指定在創(chuàng)建容器后,終端默認登陸的進來工作目錄,也不是運行并登錄進來的當前目錄位置寒匙。
ENV 用來構建鏡像過程中設置環(huán)境變量乌助。
ADD 將宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包。
COPY 類似ADD,但只是復制,不帶解壓壓縮包的功能很澄。
VOLUME 容器數(shù)據卷,用于數(shù)據保存和持久化工作京闰。
CMD 指定一個容器啟動時要運行的命令,DockerFile中可以有多個CMD指令,但只有最后一個會生效執(zhí)行。
ENTRYPOINT
指定一個容器啟動時要運行的命令
ENTRYPOINT的作用和CMD一樣,都是在指定容器啟動程序及參數(shù)
相當于CMD的升級版本,CMD只能執(zhí)行一條命令,運行時如果加一些參數(shù)是不行的.但如果把CMD替換成ENTRYPOINT就可以在Run鏡像的時候在尾部追回指令.
簡單的說如果Run鏡像的時候追回了命令,CMD會用追回的覆蓋掉舊的,ENTRYPOINT會追回執(zhí)行甩苛。
ONBUILD 當構建一個被繼承的DockerFile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發(fā)蹂楣。
docker查看容器掛載目錄
docker inspect 容器名 | grep Mounts -A 20
docker創(chuàng)建,查詢讯蒲,刪除數(shù)據卷
創(chuàng)建
docker volume create 數(shù)據卷名
查看數(shù)據卷列表
docker volume ls
查看數(shù)據的相關信息痊土,例如掛載位置
docker inspect volume_name
刪除數(shù)據卷1
docker volume rm volume_name
刪除數(shù)據卷2
docker volume prune volume_name
刪除兩種區(qū)別,此處不做介紹墨林,可自行搜索查看赁酝。
docker設置自動啟動
一、docker服務設置自動啟動
查看已啟動的服務
systemctl list-units --type=service
查看是否設置開機啟動
systemctl list-unit-files | grep enable
設置開機啟動
systemctl enable docker.service
關閉開機啟動
systemctl disable docker.service
二旭等、docker容器設置自動啟動
啟動時加--restart=always
docker run -tid --name isaler_v0.0.11 -p 8081:8080 --restart=always -v /alidata/iDocker/run/projectImages/isaler/v0.0.11/log:/usr/local/tomcat/logs isaler_v0.0.11
Flag Description
no 不自動重啟容器. (默認value)
on-failure 容器發(fā)生error而退出(容器退出狀態(tài)不為0)重啟容器
unless-stopped 在容器已經stop掉或Docker stoped/restarted的時候才重啟容器
always 在容器已經stop掉或Docker stoped/restarted的時候才重啟容器
如果已經過運行的項目
如果已經啟動的項目酌呆,則使用update更新:
docker update --restart=always isaler_v0.0.11
批量操作容器
docker 啟動所有的容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker 關閉所有的容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker 刪除所有的容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker 刪除所有的鏡像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
docker批量運行和停止容器
通過空格分隔幾個要停止的容器
docker container stop <CONTAINER ID> <CONTAINER ID>
查看所有容器的ID
docker container ps -aq
停止所有容器
docker container stop $(docker container ps -aq)
刪除所有容器
在刪除容器之前需要先停止正在運行的容器
docker container rm $(docker container ps -aq)