一.創(chuàng)建容器常用選項
- 創(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 | 鏈接 |
二. 容器的基本操作
- 查詢?nèi)萜?/li>
- 查詢運(yùn)行的容器
docker ps - 查詢所有的容器
docker ps -a - 查詢最新創(chuàng)建的容器
docker ps -l - 只顯示容器的id
docker ps -q - 顯示容器的大小
docker ps -s
- 創(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
進(jìn)入到容器內(nèi)部
docker attach test01
test01是容器名稱停止/啟動容器
docker stop/start test01刪除容器
docker rm test01刪除所有容器
docker rm -f $(docker ps -q -a)重命名容器
docker rename oldname newname殺死容器進(jìn)程
docker kill ubuntu掛起容器,休眠/喚醒
docker pause/unpause ubuntu
三. 容器更多操作
- 添加一個host
docker run -itd --add-host abc:192.168.1.123 ubuntu - 附加標(biāo)準(zhǔn)輸入,輸出等
docker run -it -a STDIN ubuntu - 運(yùn)行命令
docker run ubuntu echo hello
會創(chuàng)建一個容器,命令運(yùn)行完成后,容器就會停止 - 設(shè)置DNS
- 查看dns
docker exec centos cat /etc/resolv.conf - 設(shè)置DNS
docker run -itd --dns 8.8.8.8 centos
- 重啟容器
docker run -itd --restart ubuntu
指定重啟次數(shù):(3次失敗后,就不再重啟了)
docker run -itd --restart on-failure:3 ubuntu - 指定文件描述符
docker run -itd --ulimit nproc 10240 --ulimit nfile 10240 - 限制容器內(nèi)存
docker run-itd -m 10240000 ubuntu - 查看容器屬性信息
docker inspect ubuntu - 容器里面執(zhí)行命令
- bash形式
docker exec ubuntu ls - 交互形式
docker exec it ubuntu ls
docker exec -it ubuntu /bin/bash
- 顯示容器中運(yùn)行的進(jìn)程
docker top ubuntu - 顯示容器映射的端口信息
docker port ubuntu - 將宿主機(jī)的文件復(fù)制到容器中
docker cp a.txt ubuntu:/home - 將容器中的文件拉取到宿主機(jī)
docker cp ubuntu:/home/a.txt /tmp - 容器啟動依以來,做的操作
docker diff ubuntu - 查看容器的標(biāo)準(zhǔn)輸出
docker logs ubuntu - 動態(tài)查看容器的利用率
docker stats ubuntu - 查看容器的利用率,收集
docker stats --no-stream ubuntu - 事件查看
docker events
針對docker運(yùn)行狀態(tài)
四. 容器數(shù)據(jù)持久化
- 數(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)建
-
容器數(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)站平臺
-
創(chuàng)建mysql數(shù)據(jù)庫容器
docker run -itd --name lnmp_mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8 -
創(chuàng)建wp數(shù)據(jù)庫
docker exec lnmp_mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"create database wp"' -
創(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的版本
- 以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/
- 瀏覽器測試訪問
http://IP:88