docker常用命令查看版本docker-v查看详细版本docker版本查看docker基本信息dockerinfo镜像相关命令镜像仓库地址:https://hub.docker.com查看本地安装的镜像dockerimages搜索指定镜像dockersearch#比如搜索centos镜像dockersearchcentospullmirrordockerpull#比如拉centos镜像(会拉取最新版本的镜像,也就是最新版本)dockerpullcentos#pull指定版本镜像dockerpullubuntu:16.04删除镜像dockerrmi#例如删除centos镜像dockerrmicentosdeleteallimagesdockerrmi$(dockerimages-q)#查看所有镜像imagesiddockerimages-qupdateimage#更新镜像前需要使用镜像创建容器dockerrun-itubuntu:15.10bash#在运行容器内部使用apt-getupdate进行更新#更新完成后进入exit命令退出容器#使用dockercommit提交容器副本dockercommit-m="hasupdate"-a="alex"e218edb10161alex/ubuntu:v2#-m表示提交的描述#-a表示作者ofthesubmittedimage#e218edb10161表示容器的id#alex/ubuntu:v2表示指定创建的目标镜像名称#查看新镜像dockerimages#使用新镜像alex/ubuntu:v2启动容器dockerrun-italex/ubuntu:v2bashbuildimagevim~/glory/codes/book/demo/Dockerfilefill构建一个centos8系统,内容如下#指定使用哪个镜像源FROMcentos:8#如果RUN写了3次,那么3将在docker上创建新层,这将这会导致镜像扩展太多。下面的方法只会创建一层镜像RUN/bin/echo'root:123456'|密码;\用户添加亚历克斯;\/bin/echo'alex:123456'|密码;\/bin/echo-e"LANG=\"en_US.UTF-8\"">/etc/default/localEXPOSE22EXPOSE80CMD/usr/sbin/sshd-D开始构建镜像,注意不要在~/glory/codes/book/demo目录释放无用文件,因为该目录下的所有文件都会被打包发送给docker引擎。如果文件太多,构建过程会很慢。#-t表示指定要创建的目标镜像名称#~/glory/codes/book/demo表示Dockerfile文件所在目录dockerbuild-talex/centos:8.0~/glory/codes/book/demo#查看构建好的镜像信息dockerimages#使用新镜像创建新容器dockerrun-italex/centos:8.0bashsetimagetag#先查看镜像$dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEalex/centos8.0594ab4747ed414minutesago210MB#Setimagetag$dockertag594ab4747ed4alex1/centos1:8.1.1#再次查看镜像信息,多了一个tag$dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEalex/centos8.0594ab4747ed414分钟前210MBalex1/centos18.1.1594ab4747ed414分钟前210MB容器相关命令,查看容器的系统版本信息#进入容器后执行cat/proc/version#比如会输出如下内容Linux版本4.19.121-linuxkit(root@18b3f92ade35)(gccversion9.2.0(Alpine9.2.0))#1SMPThuJan2115:36:34UTC2021查看所有容器dockerps-a#或者使用以下命令,效果一样dockercontainerls-a#查看最近创建的容器dockerps-l查看所有运行的容器dockerps查看容器端口映射dockerport查看docker底层信息(例如:查看指定容器的ip地址)#查看docker容器的配置和状态信息dockerinspect#查看容器的ip地址dockerinspect|grepIPAddress#例如查看容器id为66204be9fe65对应的容器ip地址dockerinspect66204be9fe65|grepIPAddress#比如查看容器名对应的ip地址alexdockerinspectalex|grepIPAddress创建容器并将镜像恢复到容器中,并启动容器dockerrun[-i][-t][-v][--name][-d][-p]#-i表示交互#-t表示获取终端#--name表示修改容器名称#-d表示使用守护进程mode(默认不会进入容器,想进入容器需要使用dockerexec命令)#-p表示**指定**映射端口#-P(大写字母p)表示**随机**mappedport#/bin/bash和bash是等价的dockerrun-it/bin/bash#比如新建一个容器,输入ubuntu:16.04imagedockerrun-itubuntu:16.04bash#或者dockerrun-itubuntu:16.04/bin/bash#ordockerrun-itubuntu:16.04#新建一个centos镜像的容器,修改新容器名称为alex-containerdockerrun-it--namealex-containercentosbash#作为守护进程运行(后台运行)dockerrun-d--namealex-containercentos#或者dockerrun-di--namealex-containercentos#指定容器绑定的网络地址,这样我们就可以访问容器通过访问127.0.0.1:50015000端口(默认绑定的是tcp端口)dockerrun-d-p127.0.0.1:5001:5000centos:8.0bash#如果需要绑定udp端口,那么#(也可以进入容器,直接执行pythonapp。pycommand)dockerrun-d-p127.0.0.1:5001:5000/udpcentos:8.0pythonapp.py#例如安装hyperf镜像并启动容器#如果启动docker时启用selinux-enabled选项,容器Host资源中的访问主机会受到限制,所以可以加上--privileged-uroot选项dockerrun--namehyperf\-v/workspace/skeleton:/data/project\-p9501:9501-it\--启动容器时有特权-uroot\--entrypoint/bin/sh\hyperf/hyperf:7.4-alpine-v3.11-swoole#如果需要开启多个端口,可以参考dockerrun--nameapi_dfo_hyperf_ws\-v/Users/pudongping/glory/codes/dfo/api_dfo_hyperf:/api_dfo_hyperf\-p9502:9502\-p9503:9503\-p9504:9504\-p9505:9505-it\--entrypoint/bin/sh\alex/alex_api_dfo:v1.0启动容器dockerstart#比如启动容器名为redis-alex的容器dockerstartredis-alex#比如启动容器id为c8c0c770ac5b的容器dockerstartc8c0c770ac5b直接进入创建的容器(容器不会启动)dockerstart-i#比如输入id为66204be9fe65的容器dockerstart-i66204be9fe65#比如输入容器名为alex的容器dockerstart-ialexrestartthecontainerdockerrestart#比如重启容器名为redis-alex的容器dockerrestartredis-alex#比如重启容器id为c8c0c770ac5bdockerrestartc8c0c770ac5b进入一个已经运行的容器dockerexec-itbash#例如进入一个容器名为redis-alex的容器dockerexec-itredis-alexbash#例如,进入容器id为c8c0c770ac5b的容器dockerexec-itc8c0c770ac5bbash#enter进入容器后,执行shell命令或执行shell脚本dockerexec-it/bin/sh-c"whiletrue;doechohelloworld;sleep1;done"#例如,进入容器的id为c8c0c770ac5b进入容器后,执行`bash/portal_api_dfo_hyperf/server.shrestart`脚本dockerexec-itc8c0c770ac5b/bin/sh-c"bash/portal_api_dfo_hyperf/server.shrestart"停止容器dockerstop#例如停止容器名为redis-alex的容器dockerstopredis-alex#例如停止容器id为c8c0c770ac5b的容器dockerstopc8c0c770ac5b退出容器exitdeletethecontainerdockerrm#也可以加-f参数强制删除正在运行的容器dockerrm-f1e560fca3906#清理所有终止的容器dockercontainerprune修改容器名称dockerrename#比如将容器redis-alex重命名为redis-ttdockerrenameredis-alexredis-tt查看容器dockerlogs的标准输出#比如查看容器id为c8c0c770ac5b的容器的标准输出内容dockerlogsc8c0c770ac5b#也可以加上-f参数输出容器内部的标准输出如tail-fdockerlogs-fc8c0c770ac5b容器与宿主机之间的文件或目录复制copyfilesfromthehosttothecontainerdockercp:#例如,host将host中的/home/alex/test.txt文件复制到centos1容器中的/test.txtdockercp/home/alex/test.txtcentos1:/test.txt从容器复制到host中:#例如将centos1容器中的/test目录复制到宿主机的/home/alex目录下dockercpcentos1:/test/home/alexdirectorymount(创建容器时需要目录挂载)dockerrun-di-v:#windows下挂载(注意路径怎么写)#例如使用centos镜像创建一个容器,将本地D盘中的alex目录挂载到容器中的/usr/local/demo目录下dockerrun-di-vd:\alex:/usr/local/democentos#linux下挂载#比如创建一个centos镜像的容器,将本地的/home/alex/alex目录挂载到容器中的/usr/local/demo目录下dockerrun-di-v/home/alex/alex:/usr/local/democentosexportandimportcontainerexportcontainersnapshotdockerexport>#例如将容器id为7691a814370e的容器的快照导出到alex.tardocker出口7691a814370e>alex.tar导入容器快照cat|dockerimport-/:#例如将容器快照文件alex.tar导入到alex-demo镜像中,定义alex-demo镜像的作者是alex,版本号是v1.0catalex.tar|dockerimport-alex/alex-demo:v1.0#另外,你也可以通过指定url或目录的方式导入docker。importhttp://example.com/example-image.tgzexample/image-repo:v1.0原链接地址