Docker 學(xué)習(xí)筆記

鏡像命令

docker images

  • docker images: 查看本地的所有鏡像
  • 后面可以跟的常用參數(shù)有 :
    • -a : 列出所有的鏡像

    • -q : 只顯示鏡像 id

      image.png
  • REPOSITORY : 鏡像的倉庫源

  • TAG : 鏡像的標(biāo)簽

  • TMAGE ID : 鏡像的 id

  • CREATED : 鏡像的創(chuàng)建時(shí)間

  • SIZE : 鏡像的大小

docker search

  • docker search : 搜索鏡像
  • docker search mysql --filter=STARS=3000: 搜索 MySQL 鏡像 stars 超過 3000 的鏡像

docker pull

  • docker pull 鏡像名稱:[tag版本] : 下載鏡像, 默認(rèn)下載最新版

docker rmi

  • docker rmi -f 鏡像id : 刪除指定鏡像, 如果要?jiǎng)h除多個(gè)鏡像, 則每個(gè)鏡像 id 之間用空格隔開
  • docker rmi -f $(docker images -aq) : 刪除所有的鏡像

容器命令

  • 有了鏡像后才可以創(chuàng)建容器

新建容器并啟動

  • docker run [可選參數(shù)] 鏡像id

  • 參數(shù):

    • --name="容器名稱"
    • -d : 以后臺方式運(yùn)行
    • -it : 進(jìn)入到容器內(nèi)部, 常用的是: docker run -it centos /bin/bash
    • -p : 指定容器端口
      • -p ip:主機(jī)端口:容器端口
      • -p 主機(jī)端口:容器端口
      • -p 容器端口
      • 容器端口
    • -P : 隨機(jī)指定端口
    • -e : 環(huán)境配置, 如配置 MySQL 密碼

退出容器

  • exit : 退出并關(guān)閉容器

  • command + p + q : 退出但是不關(guān)閉容器

查看正在運(yùn)行中的容器

  • docker ps
  • docker ps -a : 查看正在運(yùn)行的容器和曾經(jīng)運(yùn)行過的容器
  • docker ps -n=3: 顯示最近新建的 3 個(gè)容器
  • docker ps -q : 只顯示容器的編號

刪除容器

  • docker rm 容器id : 刪除指定的容器, 不能刪除正在運(yùn)行的容器, 如果想要?jiǎng)h除正在運(yùn)行的, 可以使用 rm -f
  • docker rm -f $(docker ps -aq) : 刪除所有的容器
  • docker ps -a -q|xargs docker rm : 刪除所有的容器

啟動容器

  • docker start 容器id

重啟容器

  • docker restart 容器id

停止正在運(yùn)行的容器

  • docker stop 容器id

強(qiáng)制停止正在運(yùn)行的容器

  • docker kill 容器id

其他常用命令

澈醒樱看日志

  • docker logs -tf 容器id : 查看指定容器的日志

  • docker logs -tf --tail 10 容器id : 查看指定容器的最近 10 條的日志

查看容器的進(jìn)程信息

  • docker top 容器id

查看鏡像的元數(shù)據(jù)

  • docker inspect 鏡像id

進(jìn)入當(dāng)前正在運(yùn)行的容器

  • docker exec -it 容器id /bin/bash : 進(jìn)入容器后新開啟一個(gè)終端, 可以在里面進(jìn)行一些操作 (常用)
  • docker attach 容器id : 進(jìn)入當(dāng)前正在執(zhí)行的終端

從容器內(nèi)拷貝文件到主機(jī)上

  • docker cp 容器id:容器內(nèi)路徑 目的主機(jī)路徑

查看 CPU 狀態(tài)

  • docker stats

增加 tag

  • docker tag 鏡像id 鏡像名稱:版本號

commit 鏡像

  • docker commit -m='提交的描述信息' -a='作者' 容器id 目標(biāo)鏡像名:[版本]

數(shù)據(jù)卷

查看所有的數(shù)據(jù)卷

  • docker volume ls
  • 可以使用 docker inspect 容器id 來查看是否掛載成功, 在顯示的信息中查看 Mounts 部分的內(nèi)容

指定路徑掛載

  • docker run -it -v 主機(jī)目錄:容器內(nèi)目錄 鏡像名稱 /bin/bash

匿名掛載

  • docker run -it -v 容器內(nèi)目錄 鏡像名稱

具名掛載

  • 大多數(shù)情況下都使用的是具名掛載

  • docker run -it -v 隨便起的名字:容器內(nèi)目錄 鏡像名稱

  • docker run -it -v 隨便起的名字:容器內(nèi)目錄:ro 鏡像名稱 : 其中 ro 表示的是只能讀, read only, 表示的是不能在容器內(nèi)部進(jìn)行修改, 只能通過宿主機(jī)來修改

  • docker run -it -v 隨便起的名字:容器內(nèi)目錄:rw 鏡像名稱 : 其中 rw 表示的是可讀可寫, read write (默認(rèn)的)

使用 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 : 表示要生成的鏡像名稱
      • . : 表示要生成在哪個(gè)目錄下
    • 最后可以使用 docker inspect 鏡像id 來查看數(shù)據(jù)卷的詳細(xì)信息

查看指定數(shù)據(jù)卷對應(yīng)的目錄

  • docker volume inspect 具名掛載時(shí)起的名字
  • 當(dāng)掛載數(shù)據(jù)卷并且沒有指定路徑的時(shí)候,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 密碼, 可以同時(shí)掛載多個(gè)數(shù)據(jù)卷

數(shù)據(jù)卷容器

  • 可以在多個(gè)容器之間共享數(shù)據(jù)

  • 案例

    • 先開啟一個(gè) nginx01 的容器

    • 然后需要再開啟一個(gè) nginx02 的容器, 同時(shí)這兩個(gè)容器之間需要數(shù)據(jù)共享, 那就在開啟 nginx02 的時(shí)候就可以使用以下命令:

      docker run -it --name nginx02 --volumes-from nginx01 xiaosheng/centos

    • 同時(shí)還可以有其他的容器來和 nginx01 一起共享數(shù)據(jù)

    • 即便 nginx01 容器關(guān)掉或者銷毀, 并不會影響到其他容器中共享的數(shù)據(jù)

    • 只要還有一個(gè)容器在使用, 那么數(shù)據(jù)就不會消失

Dockerfile

  • dockerfile 是用來構(gòu)建 docker 鏡像的文件

步驟 :

  1. 編寫 dockerfile 文件
  2. docker build 構(gòu)建成為一個(gè)鏡像
  3. docker run 運(yùn)行鏡像
  4. docker push 發(fā)布鏡像 (可以發(fā)布到 dockerhub 或者是 阿里云鏡像倉庫)

dockerfile 文件

  • 每一個(gè)保留關(guān)鍵字 (指令) 都必須是大寫

  • 從上往下開始執(zhí)行

  • # 表示注釋

  • 每一個(gè)指令都會創(chuàng)建一個(gè)鏡像層

  • 常用指令:

    FROM              # 基礎(chǔ)鏡像
    MAINTAINER        # 鏡像作者, 一般是姓名<郵箱>
    RUN               # 構(gòu)建鏡像的時(shí)候需要運(yùn)行的命令
    ADD           # 構(gòu)建鏡像的時(shí)候, 需要添加的內(nèi)容, 比如要在 centos 鏡像中添加一個(gè) NGINX, 如果添加的是一個(gè)壓縮包的話, 會自動解壓
    WORKDIR       # 鏡像的工作目錄
    VOLUME            # 掛載的目錄
    EXPOSE            # 端口配置
    CMD           # 容器啟動的時(shí)候需要運(yùn)行的命令, 只有最后一個(gè)會生效, 這個(gè)最后一個(gè)生效, 并不是指在 dockerfile 文件中, 在 dockerfile 文件中仍然可以有多個(gè) CMD 命令, 指的是在使用 docker run 的時(shí)候, 后面不能加命令, 如果加了, 那么 docker run 后面的命令將會替換掉 dockerfile 文件中的命令
    ENTRYPOINT        # 容器啟動的時(shí)候需要運(yùn)行的命令, 可以追加命令
    ONBUILD       # 當(dāng)構(gòu)建一個(gè)被繼承的 dockerfile 的時(shí)候, 會運(yùn)行 ONBUILD 指令
    COPY          # 將文件拷貝到鏡像中
    ENV           # 構(gòu)建的時(shí)候設(shè)置環(huán)境變量
    
  • 案例 (嘗試構(gòu)建自己的 centos)

    • 編寫 dockerfile 文件

      FROM centos  # 基礎(chǔ)鏡像是 centos
      MAINTAINER xiaosheng<1029739052@qq.com> # 作者信息
      
      ENV MYPATH /usr/local # 自定義一個(gè)變量 MYPATH, 值是 /usr/local
      WORKDIR $MYPATH # 指定工作目錄, 即用戶當(dāng)進(jìn)去 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
      
    • 開始構(gòu)建

      docker build -f dockerfile文件的地址 -t 鏡像名:[版本號]

    • 使用 docker history 鏡像id 來查看鏡像的構(gòu)建歷史

發(fā)布鏡像

發(fā)布到 dockerhub

  • 注冊一個(gè) dockerhub 的賬號
  • docker login -u 用戶名, 然后輸入密碼
  • docker push 用戶名(隨便起的)/鏡像名:版本號

發(fā)布到阿里云

  • 可以先將 docker 的鏡像更換成自己的阿里云中提供的鏡像地址

  • 登錄阿里云, 進(jìn)入容器鏡像

  • 創(chuàng)建命名空間和鏡像倉庫, 創(chuàng)建倉庫的時(shí)候選擇本地倉庫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末羹唠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浅缸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袖肥,死亡現(xiàn)場離奇詭異撮抓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)栗涂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門知牌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斤程,你說我怎么就攤上這事角寸。” “怎么了忿墅?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵扁藕,是天一觀的道長。 經(jīng)常有香客問我疚脐,道長亿柑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任棍弄,我火速辦了婚禮望薄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘照卦。我一直安慰自己式矫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布役耕。 她就那樣靜靜地躺著采转,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞬痘。 梳的紋絲不亂的頭發(fā)上故慈,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機(jī)與錄音框全,去河邊找鬼察绷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛津辩,可吹牛的內(nèi)容都是我干的拆撼。 我是一名探鬼主播容劳,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼闸度!你這毒婦竟也來了竭贩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤莺禁,失蹤者是張志新(化名)和其女友劉穎留量,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哟冬,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡楼熄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浩峡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片可岂。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖红符,靈堂內(nèi)的尸體忽然破棺而出青柄,到底是詐尸還是另有隱情,我是刑警寧澤预侯,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布致开,位于F島的核電站,受9級特大地震影響萎馅,放射性物質(zhì)發(fā)生泄漏双戳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一糜芳、第九天 我趴在偏房一處隱蔽的房頂上張望飒货。 院中可真熱鬧,春花似錦峭竣、人聲如沸塘辅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扣墩。三九已至,卻和暖如春扛吞,著一層夾襖步出監(jiān)牢的瞬間呻惕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工滥比, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亚脆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓盲泛,卻偏偏與公主長得像濒持,于是被迫代替她去往敵國和親键耕。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Docker 學(xué)習(xí)目標(biāo): 掌握Docker基礎(chǔ)知識弥喉,能夠理解Docker鏡像與容器的概念 完成Docker安裝與啟...
    執(zhí)筆夢一場閱讀 3,201評論 2 10
  • 目錄 [TOC] 1. 簡介 Docker是GO語言實(shí)現(xiàn)的開源項(xiàng)目郁竟,基于Linux容器技術(shù),主要目標(biāo)是一次封裝由境,到...
    水煮魚又失敗了閱讀 265評論 0 2
  • 【版權(quán)聲明】本博客轉(zhuǎn)載自湯小洋 一、Docker簡介 1. Docker是什么蓖议? ? 產(chǎn)生背景: 開發(fā)和運(yùn)維之...
    云未聲閱讀 450評論 0 7
  • Docker應(yīng)用容器 1. 初識 Docker 我們寫的代碼會接觸到好幾個(gè)環(huán)境:開發(fā)環(huán)境虏杰、測試環(huán)境以及生產(chǎn)環(huán)境。 ...
    itlu閱讀 308評論 0 5
  • Docker應(yīng)用容器 1. 初識 Docker 我們寫的代碼會接觸到好幾個(gè)環(huán)境:開發(fā)環(huán)境勒虾、測試環(huán)境以及生產(chǎn)環(huán)境纺阔。 ...
    itlu閱讀 339評論 0 1