水滴公司上市首日破發,當前跌近 10%
映象命令
docker images
docker images
: 檢視本地的所有映象- 後面可以跟的常用引數有 :
-
-a : 列出所有的映象
-
-q : 只顯示映象 id
- REPOSITORY : 映象的倉庫源
- TAG : 映象的標籤
- TMAGE ID : 映象的 id
- CREATED : 映象的建立時間
- SIZE : 映象的大小
-
docker search
docker search
: 搜尋映象docker search mysql --filter=STARS=3000
: 搜尋 MySQL 映象 stars 超過 3000 的映象
docker pull
docker pull 映象名稱:[tag版本]
docker rmi
docker rmi -f 映象id
: 刪除指定映象, 如果要刪除多個映象, 則每個映象 id 之間用空格隔開docker rmi -f $(docker images -aq)
: 刪除所有的映象
容器命令
- 有了映象後才可以建立容器
新建容器並啟動
-
docker run [可選引數] 映象id
-
引數:
- –name=“容器名稱”
- -d : 以後臺方式執行
- -it : 進入到容器內部, 常用的是:
docker run -it centos /bin/bash
- -p : 指定容器埠
- -p ip:主機埠:容器埠
- -p 主機埠:容器埠
- -p 容器埠
- 容器埠
- -P : 隨機指定埠
- -e : 環境配置, 如配置 MySQL 密碼
退出容器
-
exit
: 退出並關閉容器 -
command + p + q
: 退出但是不關閉容器
檢視正在執行中的容器
docker ps
docker ps -a
: 檢視正在執行的容器和曾經執行過的容器docker ps -n=3
: 顯示最近新建的 3 個容器docker ps -q
: 只顯示容器的編號
刪除容器
docker rm 容器id
: 刪除指定的容器, 不能刪除正在執行的容器, 如果想要刪除正在執行的, 可以使用 rm -fdocker rm -f $(docker ps -aq)
: 刪除所有的容器docker ps -a -q|xargs docker rm
啟動容器
docker start 容器id
重啟容器
docker restart 容器id
停止正在執行的容器
docker stop 容器id
強制停止正在執行的容器
docker kill 容器id
其他常用命令
常看日誌
-
docker logs -tf 容器id
: 檢視指定容器的日誌 -
docker logs -tf --tail 10 容器id
: 檢視指定容器的最近 10 條的日誌
檢視容器的程序資訊
docker top 容器id
檢視映象的元資料
docker inspect 映象id
進入當前正在執行的容器
docker exec -it 容器id /bin/bash
: 進入容器後新開啟一個終端, 可以在裡面進行一些操作 (常用)docker attach 容器id
: 進入當前正在執行的終端
從容器內拷貝檔案到主機上
docker cp 容器id:容器內路徑 目的主機路徑
檢視 CPU 狀態
docker stats
增加 tag
docker tag 映象id 映象名稱:版本號
commit 映象
docker commit -m='提交的描述資訊' -a='作者' 容器id 目標映象名:[版本]
資料卷
檢視所有的資料卷
docker volume ls
- 可以使用
docker inspect 容器id
來檢視是否掛載成功, 在顯示的資訊中檢視 Mounts 部分的內容
指定路徑掛載
docker run -it -v 主機目錄:容器內目錄 映象名稱 /bin/bash
匿名掛載
docker run -it -v 容器內目錄 映象名稱
具名掛載
-
大多數情況下都使用的是具名掛載
-
docker run -it -v 隨便起的名字:容器內目錄 映象名稱
-
docker run -it -v 隨便起的名字:容器內目錄:ro 映象名稱
: 其中 ro 表示的是隻能讀, read only, 表示的是不能在容器內部進行修改, 只能通過宿主機來修改 -
docker run -it -v 隨便起的名字:容器內目錄:rw 映象名稱
: 其中 rw 表示的是可讀可寫, read write (預設的)
使用 dockerfile 來掛載
-
案例:
-
touch dockerfile
-
vim dockerfile
-
FROM centos VOLUME ['volume01', 'volume02'] CMD echo '====end======' CMD /bin/bash
-
-
docker build -f dockerfile -t xiaosheng/centos .
- -f : 表示 dockerfile 檔案的路徑
- -t : 表示要生成的映象名稱
- . : 表示要生成在哪個目錄下
-
最後可以使用
docker inspect 映象id
來檢視資料卷的詳細資訊
-
檢視指定資料卷對應的目錄
docker volume inspect 具名掛載時起的名字
- 當掛載資料卷並且沒有指定路徑的時候,
Linux
中一般都是掛載在/var/lib/docker/volume
目錄中
配置 MySQL
docker run -d -p 3306:3306 -v /home/mysql/my.conf:/etc/mysql/my.conf -v /home/mysql/data:/use/local/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
- -e 可以用來配置 MySQL 密碼, 可以同時掛載多個數據卷
資料卷容器
-
可以在多個容器之間共享資料
-
案例
-
先開啟一個 nginx01 的容器
-
然後需要再開啟一個 nginx02 的容器, 同時這兩個容器之間需要資料共享, 那就在開啟 nginx02 的時候就可以使用以下命令:
docker run -it --name nginx02 --volumes-from nginx01 xiaosheng/centos
-
同時還可以有其他的容器來和 nginx01 一起共享資料
-
即便 nginx01 容器關掉或者銷燬, 並不會影響到其他容器中共享的資料
-
只要還有一個容器在使用, 那麼資料就不會消失
-
Dockerfile
- dockerfile 是用來構建 docker 映象的檔案
步驟 :
- 編寫 dockerfile 檔案
- docker build 構建成為一個映象
- docker run 執行映象
- docker push 釋出映象 (可以釋出到 dockerhub 或者是 阿里雲映象倉庫)
dockerfile 檔案
-
每一個保留關鍵字 (指令) 都必須是大寫
-
從上往下開始執行
-
# 表示註釋
-
每一個指令都會建立一個映象層
-
常用指令:
FROM # 基礎映象 MAINTAINER # 映象作者, 一般是姓名<郵箱> RUN # 構建映象的時候需要執行的命令 ADD # 構建映象的時候, 需要新增的內容, 比如要在 centos 映象中新增一個 NGINX, 如果新增的是一個壓縮包的話, 會自動解壓 WORKDIR # 映象的工作目錄 VOLUME # 掛載的目錄 EXPOSE # 埠配置 CMD # 容器啟動的時候需要執行的命令, 只有最後一個會生效, 這個最後一個生效, 並不是指在 dockerfile 檔案中, 在 dockerfile 檔案中仍然可以有多個 CMD 命令, 指的是在使用 docker run 的時候, 後面不能加命令, 如果加了, 那麼 docker run 後面的命令將會替換掉 dockerfile 檔案中的命令 ENTRYPOINT # 容器啟動的時候需要執行的命令, 可以追加命令 ONBUILD # 當構建一個被繼承的 dockerfile 的時候, 會執行 ONBUILD 指令 COPY # 將檔案拷貝到映象中 ENV # 構建的時候設定環境變數
-
案例 (嘗試構建自己的 centos)
-
編寫 dockerfile 檔案
FROM centos # 基礎映象是 centos MAINTAINER xiaosheng<[email protected]> # 作者資訊 ENV MYPATH /usr/local # 自定義一個變數 MYPATH, 值是 /usr/local WORKDIR $MYPATH # 指定工作目錄, 即使用者當進去 centos 後所在的目錄 RUN yum -y install vim # 安裝 vim RUN yum -y install net-tools # 安裝 net-tools EXPOSE 80 # 暴露埠 CMD echo $MYPATH CMD echo "===end====" CMD /bin/bash
-
開始構建
docker build -f dockerfile檔案的地址 -t 映象名:[版本號]
-
使用
docker history 映象id
來檢視映象的構建歷史
-
釋出映象
釋出到 dockerhub
- 註冊一個 dockerhub 的賬號
docker login -u 使用者名稱
, 然後輸入密碼docker push 使用者名稱(隨便起的)/映象名:版本號
釋出到阿里雲
-
可以先將 docker 的映象更換成自己的阿里雲中提供的映象地址
-
登入阿里雲, 進入容器映象
-
建立名稱空間和映象倉庫, 建立倉庫的時候選擇本地倉庫