#####################################################################
# docker 命令 #
#####################################################################
$ docker states #查看容器運行的情況
$ docker run <image> #創(chuàng)建容器
$ docker start <containerID> #啟動創(chuàng)建了的容器
$ docker images #列出本地的images
$ docker search ubuntu #從docker hub上搜索鏡像 ubuntu
$ docker search -s 80 ubuntu #只顯示80星以上的結果
$ docker pull ubuntu #拉取鏡像到本地
$ docker run -d -P nginx
# -P Publish all exposed ports to random ports
# 為容器暴露出來的借口分配隨機端口號
$ docker run -d -p 5000:5000 registry #后臺運行registry 并映射主機5000端口
#-d Run container in background and print container ID
#-p 5000:5000 Publish a container's port(s) to the host 可一次指定多個
# [host]:[container]
$ docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry #同上
# -v /opt/data/registry:/tmp/registry 掛載主機目錄 到 容器中 可讀可寫
# [主機目錄]:[容器目錄]
# 容器中的原目錄會被隱藏
$ docker run -d -p 82:80 -v /home/b/tempForNginxContaner:/bfyMount:ro nginx
# ------------------------------------------------------> :ro 只讀掛載
$ docker run -d -v /bfy nginx #給鏡像nginx新建一個容器 并掛載/bfy目錄
#對應的host上的目錄可用 docker inspect 查看
$ docker run -d --volumes-from <容器id> nginx
# ----> 創(chuàng)建容器并引用現(xiàn)有容器的volumes
# 可傳入多個--volumes-from 引用多個容器的volumes
$ docker run -rm nginx #運行結束后刪除容器
$ docker run -d --link <容器名> nginx #新建容器并鏈接已有的容器
$ docker run -d --link <容器名>:<新建容器中的別名> nginx #新建容器并鏈接已有的容器
$ docker network creat mynet
# 創(chuàng)建自定義網(wǎng)絡mynet
$ docker run --net mynet --ip 172.1.0.21 nginx
# 運行容器指定網(wǎng)絡和ip(只能在自定義的網(wǎng)絡上指定IP)
$ docker ps #查看正在運行的容器
$ docker ps -a #查看all容器
$ docker ps -s # 查看容器文件大小
$ docker rm $(docker ps -a -q) #刪除所有的容器
# -q 僅列出容器ID
$ docker rmi $(docker images -q) # Remove all images from this machine
$ docker rm -v <id> #刪除容器及關聯(lián)的卷
# -v 刪除關聯(lián)的卷
$ docker pause <id|容器名> #暫停容器的運行
$ docker stop <id> #停止運行容器
$ docker kill <id> # Force shutdown of the specified container
$ docker attach --sig-proxy=false <id> #這樣進入容器后可以用 Ctrl+C 退出而不影響容器運行
$ docker inspect <id> #Return low-level information on a container or image
#顯示一個容器或image的!全部信息!
# !!!所有信息都可以在這里找到!!!
$ docker inspect --format "{{ .State.Pid }}" <id> #查看容器的PID
$ docker inspect <id> | grep Pid #過濾出PID信息
$ docker port <id> #查看容器的端口分配
$ docker logs <id> #查看容器的log信息
$ docker diff <id> #查看容器中文件的改變
$ docker exec <id|容器名> env #在容器中執(zhí)行env命令
$ docker exec <id|容器名> ls #在容器中執(zhí)行l(wèi)s命令
$ docker exec -it <id|容器名> bash
#執(zhí)行bash相當于:進入容器
#This will create a new Bash session in the container
$ docker network disconnect bridge <容器>
# 從默認網(wǎng)絡bridge上摘下容器
$ docker network connect --ip 172.1.0.20 mynet <容器>
# 將容器接到自定義網(wǎng)絡mynet上
# 更新容器的重啟政策
$ docker update --restart always <id>
# 更新已創(chuàng)建容器的內存限制
$ docker update -m 7G <id>
$ nsenter -i -m -u -n -p -t <PID> #通過pid進入容器
# 使用別名方便進入
$ alias denter='nsenter -i -m -u -n -p -t'
$ denter <PID>
$ systemctl disable docker # boot時不啟動
$ systemctl enable docker # boot時啟動
運行 mssql 限制內存使用
$ docker run -e 'ACCEPT_EULA=Y' -p 1433:1433 -v /data/mssql_data:/var/opt/mssql \
-d --restart always -m 7g mcr.microsoft.com/mssql/server