#####################################################################
# docker 命令 #
#####################################################################
$ docker states #查看容器运行的情况
$ docker run <image> #创建容器
$ docker start <containerID> #启动创建了的容器
$ 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
# ----> 创建容器并引用现有容器的volumes
# 可传入多个--volumes-from 引用多个容器的volumes
$ docker run -rm nginx #运行结束后删除容器
$ docker run -d --link <容器名> nginx #新建容器并链接已有的容器
$ docker run -d --link <容器名>:<新建容器中的别名> nginx #新建容器并链接已有的容器
$ docker network creat mynet
# 创建自定义网络mynet
$ docker run --net mynet --ip 172.1.0.21 nginx
# 运行容器指定网络和ip(只能在自定义的网络上指定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> #删除容器及关联的卷
# -v 删除关联的卷
$ 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 #在容器中执行env命令
$ docker exec <id|容器名> ls #在容器中执行ls命令
$ docker exec -it <id|容器名> bash
#执行bash相当于:进入容器
#This will create a new Bash session in the container
$ docker network disconnect bridge <容器>
# 从默认网络bridge上摘下容器
$ docker network connect --ip 172.1.0.20 mynet <容器>
# 将容器接到自定义网络mynet上
# 更新容器的重启政策
$ docker update --restart always <id>
# 更新已创建容器的内存限制
$ 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