docker記錄

操作docker進(jìn)程:
  1. 啟動(dòng)docker: systemctl start docker
  2. 停止docker: systemctl stop docker
  3. 重啟docker: systemctl restart docker
  4. 查看docker狀態(tài): systemtcl status docker
操作docker鏡像:
  1. 查看本地鏡像: docker images


    image.png
  2. 搜索鏡像: docker search 鏡像名稱


    image.png
  3. 下載docker鏡像: docker pull 鏡像名稱:版本


    image.png
  4. 刪除鏡像: docker rmi 鏡像id/名字:版本


    image.png
  5. 根據(jù)現(xiàn)有容器構(gòu)造出鏡像:docker commit -m "注釋" -a="作者" 容器id 鏡像名字:版本號(hào)
  6. 發(fā)布鏡像到遠(yuǎn)端:docker login / docker tag / docker push
操作docker容器:
  1. 通過鏡像創(chuàng)建并啟動(dòng)容器:
    docker run -it --name=c1 centos:7
    docker run -id --name=c1 centos:7
    -i:保持容器運(yùn)行。通常與 -t 同時(shí)使用。加入it這兩個(gè)參數(shù)后,容器創(chuàng)建后自動(dòng)進(jìn)入容器中,退出容器后,容器自動(dòng)關(guān)閉。
    -t:為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用。
    -d:以守護(hù)(后臺(tái))模式運(yùn)行容器。創(chuàng)建一個(gè)容器在后臺(tái)運(yùn)行,需要使用docker exec 進(jìn)入容器。退出后,容器不會(huì)關(guān)閉。
    -it 創(chuàng)建的容器一般稱為交互式容器, -id 創(chuàng)建的容器一般稱為守護(hù)式容器
    --name:為創(chuàng)建的容器命名。
  2. 查看正在運(yùn)行的容器: docker ps
    -a: 查看歷史運(yùn)行過的容器


    image.png
  3. 停止容器: docker stop 容器名稱
  4. 啟動(dòng)容器: docker start 容器名稱
  5. 刪除容器: docker rm 容器名字/id
  6. 查看容器信息: docker inspect 容器名稱
  7. 進(jìn)入容器: docker exec -it 名字,exit后容器不會(huì)關(guān)閉
  8. 查看容器日志: docker logs id; docker logs -f --tail=100 id
  9. 查看容器內(nèi)運(yùn)行的進(jìn)程:docker top id
  10. 查看容器內(nèi)部細(xì)節(jié):docker inspect id
  11. 拷貝容器內(nèi)文件到宿主機(jī):docker cp id:path path
數(shù)據(jù)卷:

數(shù)據(jù)卷是宿主機(jī)中的一個(gè)目錄或文件
當(dāng)容器目錄和數(shù)據(jù)卷目錄綁定后,對(duì)方的修改會(huì)立即同步
一個(gè)數(shù)據(jù)卷可以被多個(gè)容器同時(shí)掛載
一個(gè)容器也可以被掛載多個(gè)數(shù)據(jù)卷

數(shù)據(jù)卷作用:
容器數(shù)據(jù)持久化
外部機(jī)器和容器間接通信
容器之間數(shù)據(jù)交換

配置數(shù)據(jù)卷: docker run ... –v 宿主機(jī)目錄(文件):容器內(nèi)目錄(文件) ...
目錄必須是絕對(duì)路徑
如果目錄不存在,會(huì)自動(dòng)創(chuàng)建
可以掛載多個(gè)數(shù)據(jù)卷


image.png

image.png

數(shù)據(jù)卷容器:
多個(gè)容器掛載在同一個(gè)數(shù)據(jù)卷可以實(shí)現(xiàn)容器間的數(shù)據(jù)交互
數(shù)據(jù)卷容器也是做這個(gè)事的
數(shù)據(jù)卷容器掛載到數(shù)據(jù)卷上, 其他容器都掛載到數(shù)據(jù)卷容器上, 就可以實(shí)現(xiàn)多個(gè)容器的數(shù)據(jù)交互了, 但本質(zhì)上還是多個(gè)容器掛載到同一個(gè)數(shù)據(jù)卷上

  1. 創(chuàng)建啟動(dòng)c3數(shù)據(jù)卷容器,使用 –v 參數(shù) 設(shè)置數(shù)據(jù)卷
    docker run –it --name=c3 –v 容器目錄 centos:7 /bin/bash
    docker會(huì)自動(dòng)在宿主機(jī)上分配一個(gè)目錄作為數(shù)據(jù)卷
  2. 創(chuàng)建啟動(dòng) c1 c2 容器,使用 –-volumes-from 參數(shù) 掛載到c3
    docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
    docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
部署mysql案例:
  1. 搜索鏡像
    docker search mysql
  2. 拉取鏡像
    docker pull mysql:5.6
  3. 在/root目錄下創(chuàng)建mysql目錄用于存儲(chǔ)mysql數(shù)據(jù)信息
    mkdir ~/mysql
    cd ~/mysql
  4. 創(chuàng)建docker容器
    docker run -id \
    -p 3307:3306 \
    --name=c_mysql \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.6
    參數(shù)說明:
    -p 3307:3306:將容器的 3306 端口映射到宿主機(jī)的 3307 端口。
    -v $PWD/conf:/etc/mysql/conf.d:將主機(jī)當(dāng)前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。配置目錄
    -v $PWD/logs:/logs:將主機(jī)當(dāng)前目錄下的 logs 目錄掛載到容器的 /logs。日志目錄
    -v $PWD/data:/var/lib/mysql :將主機(jī)當(dāng)前目錄下的data目錄掛載到容器的 /var/lib/mysql 。數(shù)據(jù)目錄
    -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。
  5. 進(jìn)入容器,操作mysql
    docker exec –it c_mysql /bin/bash
    使用外部機(jī)器連接mysql時(shí), 需要使用宿主機(jī)的ip和端口
dockerfile

我們可以通過dockerfile中的命令去自定義鏡像, 例如我們自己寫了個(gè)springboot應(yīng)用, 想要發(fā)布到docker中, 就可以通過dockerfile構(gòu)建出對(duì)應(yīng)的鏡像, 然后再通過鏡像啟動(dòng)容器
dockerfile中的一些關(guān)鍵字:

關(guān)鍵字 作用 備注
FROM 指定父鏡像 指定dockerfile基于那個(gè)image構(gòu)建
MAINTAINER 作者信息 用來標(biāo)明這個(gè)dockerfile誰寫的
LABEL 標(biāo)簽 用來標(biāo)明dockerfile的標(biāo)簽 可以使用Label代替Maintainer 最終都是在docker image基本信息中可以查看
RUN 執(zhí)行命令 執(zhí)行一段命令 默認(rèn)是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"]
CMD 容器啟動(dòng)命令 提供啟動(dòng)容器時(shí)候的默認(rèn)命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"]
ENTRYPOINT 入口 一般在制作一些執(zhí)行就關(guān)閉的容器中會(huì)使用
COPY 復(fù)制文件 build的時(shí)候復(fù)制文件到image中
ADD 添加文件 build的時(shí)候添加文件到image中 不僅僅局限于當(dāng)前build上下文 可以來源于遠(yuǎn)程服務(wù)
ENV 環(huán)境變量 指定build時(shí)候的環(huán)境變量 可以在啟動(dòng)的容器的時(shí)候 通過-e覆蓋 格式ENV name=value
ARG 構(gòu)建參數(shù) 構(gòu)建參數(shù) 只在構(gòu)建的時(shí)候使用的參數(shù) 如果有ENV 那么ENV的相同名字的值始終覆蓋arg的參數(shù)
VOLUME 定義外部可以掛載的數(shù)據(jù)卷 指定build的image那些目錄可以啟動(dòng)的時(shí)候掛載到文件系統(tǒng)中 啟動(dòng)容器的時(shí)候使用 -v 綁定 格式 VOLUME ["目錄"]
EXPOSE 暴露端口 定義容器運(yùn)行的時(shí)候監(jiān)聽的端口 啟動(dòng)容器的使用-p來綁定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR 工作目錄 指定容器內(nèi)部的工作目錄 如果沒有創(chuàng)建則自動(dòng)創(chuàng)建 如果指定/ 使用的是絕對(duì)地址 如果不是/開頭那么是在上一條workdir的路徑的相對(duì)路徑
USER 指定執(zhí)行用戶 指定build或者啟動(dòng)的時(shí)候 用戶 在RUN CMD ENTRYPONT執(zhí)行的時(shí)候的用戶
HEALTHCHECK 健康檢查 指定監(jiān)測當(dāng)前容器的健康監(jiān)測的命令 基本上沒用 因?yàn)楹芏鄷r(shí)候 應(yīng)用本身有健康監(jiān)測機(jī)制
ONBUILD 觸發(fā)器 當(dāng)存在ONBUILD關(guān)鍵字的鏡像作為基礎(chǔ)鏡像的時(shí)候 當(dāng)執(zhí)行FROM完成之后 會(huì)執(zhí)行 ONBUILD的命令 但是不影響當(dāng)前鏡像 用處也不怎么大
STOPSIGNAL 發(fā)送信號(hào)量到宿主機(jī) 該STOPSIGNAL指令設(shè)置將發(fā)送到容器的系統(tǒng)調(diào)用信號(hào)以退出。
SHELL 指定執(zhí)行腳本的shell 指定RUN CMD ENTRYPOINT 執(zhí)行命令的時(shí)候 使用的shell

一個(gè)例子, 部署springboot項(xiàng)目:
dockerfile:

FROM java:8
ADD springboot.jar app.jar
CMD java -jar app.jar

根據(jù)dockerfile構(gòu)建鏡像:
docker build -f ./dockerfile -t app:1
-f 指定dockerfile文件
-t 給鏡像取名字
啟動(dòng)容器:
docker run -id -p 7777:8080 app

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • docker學(xué)習(xí)記錄 1.linux 部分指令熟悉日志排查,端口,進(jìn)程查看..2.docker 鏡像和容器命令鏡像...
    只猿閱讀 329評(píng)論 0 0
  • 前言 最近有一段時(shí)間沒有爬蟲相關(guān)任務(wù),不能讓這個(gè)系統(tǒng)太荒廢下去所以趁著近期任務(wù)處理差不多,重新抽出時(shí)間來整理下Sp...
    w_小迪子閱讀 781評(píng)論 0 1
  • 一.docker 是什么: 2.安裝docker 系統(tǒng):ubuntu16.04 使用腳本自動(dòng)安裝 Docker 官...
    Black_Sun閱讀 2,247評(píng)論 0 2
  • Docker 筆記來源:https://docs.docker.com/ 和 《docker 容器和容器云》 此筆...
    WunHwan閱讀 485評(píng)論 0 2
  • 一 Docker安裝步驟解析 1.1 基礎(chǔ)命令 1.1.1 Docker安裝前置任務(wù) #使用uname -r ...
    云淡風(fēng)輕Jackzz閱讀 543評(píng)論 0 0

友情鏈接更多精彩內(nèi)容