2. docker容器管理


  1. 鏡像管理
  2. 容器管理
  3. 網(wǎng)絡(luò)管理

一.創(chuàng)建容器常用選項

  1. 創(chuàng)建容器命令格式
    Usage: docker create [OPTIONS] IMAGE [COMMANND] [TAG...]
    Usage: docker run [OPTIONS] IMAGE [COMMAND] [TAG...]

2 .OPTIONS(常用選項)

命令 介紹 命令 介紹 命令 介紹
-i, --interactive 標(biāo)準(zhǔn)輸入打開,沒有這個選項,不可以通過附加方式進(jìn)入命令 --log-driver 日志驅(qū)動 --cpu-period int 對cpu進(jìn)行限制,周期
-t, --tty 分配一個偽終端 --log-opt 選項 --cpu-quota int 周期內(nèi)運(yùn)行多長時間限制,每次時間輪轉(zhuǎn)片時間
-d, --detach 放到后臺去運(yùn)行容器 --mount mount 掛在宿主機(jī)的分區(qū)到容器 -c, --cpu-shares int 多容器之間cpu共享權(quán)重值
--add-host list 動態(tài)添加一個host --network string 鏈接容器到一個網(wǎng)絡(luò) --cpuset-cpus string cpu固定到某個單核上
-a, --attach list 附加 --oom-kill-disable 物理內(nèi)存不足,沒有swap的時候,禁用掉自動kill進(jìn)程 --device-read-bps list 限制設(shè)備讀取磁盤的速率,單位bit/s
--cap-add list 添加細(xì)粒度的內(nèi)核權(quán)限訪問控制 --pid string 使用命令空間 --device-write-bps list 限制設(shè)備數(shù)據(jù)寫入磁盤的速率,單位bit/s
--cap-drop list 刪除細(xì)粒度的內(nèi)核權(quán)限訪問控制 -p, --publish list 映射一個宿主機(jī)端口到容器端口 --device-read-iops list 限制讀取iops
--cidfile string 將容器id寫到一個文件中 -P, --publish-all=true/false 發(fā)布容器所有的expose端口到宿主機(jī)端口 --device-write-iops list 限制寫iops
--device list 添加宿主機(jī)設(shè)備到容器 --restart 重啟容器 -m, --memory bytes 限制容器的內(nèi)存
--dns list 配置DNS --ulimit ulimit 指定容器文件描述符合 --memory-reservation bytes 限制內(nèi)存,軟性限制,可以有突發(fā)
-e, --env list 設(shè)置變量,賦予單個容器 -v, --volume list 將宿主機(jī)的目錄掛載到容器 --memory-swap bytes 設(shè)置限制swap,物理內(nèi)存不足的時候會發(fā)揮作用,-1的時候不受限制
--env-file list 將變量寫到一個文件中,從文件中讀取文件,將變量賦給容器 --volumes-from list 共享給多個容器 --memory-swappiness int 設(shè)置swap使用它的權(quán)重值
--expose list 暴露一個端口或者一個端口范圍 -w, --workdir string 進(jìn)入容器后所在的工作目錄 --storage-opt list只支持devicemapper存儲驅(qū)動 對磁盤空間的設(shè)置,容器可以使用宿主機(jī)多大的磁盤空間
-h, --hostname string 為容器指定主機(jī)名
--ip string 分配指定IP(只針對自定義創(chuàng)建的網(wǎng)絡(luò))
--link list 鏈接

二. 容器的基本操作

  1. 查詢?nèi)萜?/li>
  • 查詢運(yùn)行的容器
    docker ps
  • 查詢所有的容器
    docker ps -a
  • 查詢最新創(chuàng)建的容器
    docker ps -l
  • 只顯示容器的id
    docker ps -q
  • 顯示容器的大小
    docker ps -s
  1. 創(chuàng)建并且運(yùn)行容器
  • docker run -itd --name test01 ubuntu
    docker run -itd --name test01_self ubuntu:self
  • docker exec -it test01 /bin/bash
    self: 是TAG
  1. 進(jìn)入到容器內(nèi)部
    docker attach test01
    test01是容器名稱

  2. 停止/啟動容器
    docker stop/start test01

  3. 刪除容器
    docker rm test01

  4. 刪除所有容器
    docker rm -f $(docker ps -q -a)

  5. 重命名容器
    docker rename oldname newname

  6. 殺死容器進(jìn)程
    docker kill ubuntu

  7. 掛起容器,休眠/喚醒
    docker pause/unpause ubuntu

三. 容器更多操作

  1. 添加一個host
    docker run -itd --add-host abc:192.168.1.123 ubuntu
  2. 附加標(biāo)準(zhǔn)輸入,輸出等
    docker run -it -a STDIN ubuntu
  3. 運(yùn)行命令
    docker run ubuntu echo hello
    會創(chuàng)建一個容器,命令運(yùn)行完成后,容器就會停止
  4. 設(shè)置DNS
  • 查看dns
    docker exec centos cat /etc/resolv.conf
  • 設(shè)置DNS
    docker run -itd --dns 8.8.8.8 centos
  1. 重啟容器
    docker run -itd --restart ubuntu
    指定重啟次數(shù):(3次失敗后,就不再重啟了)
    docker run -itd --restart on-failure:3 ubuntu
  2. 指定文件描述符
    docker run -itd --ulimit nproc 10240 --ulimit nfile 10240
  3. 限制容器內(nèi)存
    docker run-itd -m 10240000 ubuntu
  4. 查看容器屬性信息
    docker inspect ubuntu
  5. 容器里面執(zhí)行命令
  • bash形式
    docker exec ubuntu ls
  • 交互形式
    docker exec it ubuntu ls
    docker exec -it ubuntu /bin/bash
  1. 顯示容器中運(yùn)行的進(jìn)程
    docker top ubuntu
  2. 顯示容器映射的端口信息
    docker port ubuntu
  3. 將宿主機(jī)的文件復(fù)制到容器中
    docker cp a.txt ubuntu:/home
  4. 將容器中的文件拉取到宿主機(jī)
    docker cp ubuntu:/home/a.txt /tmp
  5. 容器啟動依以來,做的操作
    docker diff ubuntu
  6. 查看容器的標(biāo)準(zhǔn)輸出
    docker logs ubuntu
  7. 動態(tài)查看容器的利用率
    docker stats ubuntu
  8. 查看容器的利用率,收集
    docker stats --no-stream ubuntu
  9. 事件查看
    docker events
    針對docker運(yùn)行狀態(tài)

四. 容器數(shù)據(jù)持久化

  1. 數(shù)據(jù)卷
    將宿主機(jī)目錄掛載到容器目錄
  • 數(shù)據(jù)卷特點:

在容器啟動初始化時,如果容器使用的宿主機(jī)掛載點有數(shù)據(jù),這些數(shù)據(jù)就會拷貝到容器中
數(shù)據(jù)卷可以在容器直接共享和重用
可以直接對數(shù)據(jù)卷里的內(nèi)容進(jìn)行修改
數(shù)據(jù)卷的變化不會影響鏡像的更新
卷會一致存在,即使掛載數(shù)據(jù)卷的容器已經(jīng)刪除

示例:

docker run -itd --name web01 -v /container_data/web:/data ubuntu

/container_data/web為宿主機(jī)目錄,/data是容器中的目錄,目錄不存在會自動創(chuàng)建

  1. 容器數(shù)據(jù)卷
    將一個運(yùn)行的容器作為數(shù)據(jù)卷,讓其它容器通過掛載這個容器實現(xiàn)數(shù)據(jù)共享
    示例:

     docker run -itd -v /data --name dvvdata ubuntu
     docker run -itd --name web01 -volumes-from dvdata ubuntu
    

五. 搭建LNMP網(wǎng)站平臺

  1. 創(chuàng)建mysql數(shù)據(jù)庫容器

    docker run -itd --name lnmp_mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8
    
  2. 創(chuàng)建wp數(shù)據(jù)庫

     docker exec lnmp_mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"create database wp"'
    
  3. 創(chuàng)建PHP環(huán)境容器

     docker run -itd --name lnmp_web --link lnmp_mysql:db -p 88:80 -v /container_data/web:/var/www/html richarvey/nginx-php-fpm:1.10.3
    

這里richarvey/nginx-php-fpm 最新版本有resty.core 模塊無法加載的bug,所以使用了1.10.3的版本

  1. 以wordpress博客為例測試
 wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz
 tar zxf wordpress-4.7.4-zh_CN.tar.gz
 mv wordpress/* /container_data/web/
  1. 瀏覽器測試訪問
    http://IP:88
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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