docker命令详解github地址:链接说明如果对你有帮助,请给个star吧!本次操作在unbantu17.01下进行,docker版本为17.10.0-ce,docker-compose为1.17.1。docker的意义使用dokcer加速本地开发建设,开发者可以构建、运行和共享Docker容器,可以在开发环境中构建容器,然后轻松提交到测试环境,最后进入生产环境,这样,独立的服务或应用程序可以在不同的环境中获得相同的运行结果。使用docker创建一个隔离的测试环境。Docker允许开发者先在本地机器上构建一个复杂的程序测试,而不是一开始就在生产环境中测试。docker概念常用文档:https://docs.docker.com/Dockerimage:用户基于image运行自己的容器,image可以看成是容器的“源码”。镜像体积小,易于分享、存储和更新。Registry:Docker使用Registry来保存用户构建的镜像。而私有的:Docker运营的公共Registry叫做DockerHub,我们可以在这里注册一个账号,分享和保存我们自己的镜像。你可以在DockerHub中保存自己的私有镜像,或者建立自己的私有RegistryDocker容器:将应用或服务打包进去,容器基于镜像启动,容器中可以运行一个或多个进程。镜像是Docker生命周期的构建或打包阶段。容器是docker的启动或执行阶段。命令1docker命令介绍docker--help管理命令:容器管理容器镜像管理镜像网络管理网络命令:attach介入运行containerbuild基于Dockerfile构建镜像commitcreatesnewimagebasedonthechangeinthecontainercp在本地文件系统和容器之间复制文件/文件夹create创建一个新容器exec执行命令容器中的图像列出图像killkill一个或多个正在运行的容器日志获取容器日志pause暂停一个或多个容器中的所有进程ps列出所有容器pull将镜像或存储库拉取到注册表push将镜像或存储库推送到注册表rename重命名容器restart重新启动一个或多个容器rm删除一个或多个容器rmi删除一个或多个镜像run在新容器搜索中执行命令在DockerHub中搜索镜像start启动一个或多个停止的容器stats显示容器的实时资源使用情况stop停止一个或多个正在运行的容器tag为镜像创建一个新标签top显示容器中的所有进程unpause恢??复所有暂停一个或多个容器中的进程2.更新详细功能参数配置参数说明--api-enable-cors=false打开远程API调用的CORS头信息。该接口开关为上层应用想要进行二次开发提供了支持。-b,--bridge=""将现有的桥接设备安装到Docker容器中。请注意,使用none会禁用容器内的网络。--bip=""使用CIDR地址设置网桥的IP。注意这个参数不能和-b一起使用。-D,--debug=false启用调试模式。例如:docker-d-D-d,--daemon=false启用守护进程模式。--dns=[]强制容器使用DNS服务器。例如:docker-d--dns8.8.8.8--dns-search=[]强制容器使用指定的DNS搜索域名。例如:docker-d--dns-searchexample.com-e,--exec-driver="native"强制容器使用指定的运行时驱动程序。例如:docker-d-elxc-G,--group="docker"在后台模式下,将指定的Group分配给对应的unixsocket。注意,当这个参数--group被赋予一个空字符串时,组信息将被删除。-g,--graph="/var/lib/docker"配置Docker运行时根目录-H,--host=[]后台模式指定socket绑定,可以绑定一个或多个tcp://host:port,unix:///path/to/socket、fd://*或fd://socketfd。例如:$docker-Htcp://0.0.0.0:2375ps或$exportDOCKER_HOST="tcp://0.0.0.0:2375"$dockerps--icc=true启用内联容器通信。--ip="0.0.0.0"容器绑定IP时使用的默认IP地址。--ip-forward=true启动容器的net.ipv4.ip_forward。--iptables=true启动Docker容器的自定义iptable规则。--mtu=0设置容器网络的MTU值。如果没有该参数,则选择默认路由MTU。如果没有默认路由,则设置为常量值1500。-p,--pidfile="/var/run/docker.pid"后台进程PID文件路径。-r,--restart=true重启正在运行的容器。-s,--storage-driver=""强制容器在运行时使用指定的存储驱动,例如指定使用devicemapper,可以这样做:docker-d-sdevicemapper--selinux-enabled=falseenableselinuxsupport--storage-opt=[]配置存储驱动参数--tls=false启动TLS认证开关--tlscacert="/Users/dxiao/.docker/ca.pem"CA认证的证书文件路径--tlscert="/Users/dxiao/.docker/cert.pem"TLS证书文件路径--tlskey="/Users/dxiao/.docker/key.pem"TLS密钥文件路径--tlsverify=false使用TLS并验证之间的通信后台进程和客户端-v,--version=false显示版本信息*注:带[]的启动参数可以指定多次,如dockerrun-astdin-astdout-astderr-i-tubuntu/bin/bashdocker基本上是查看系统内核uname-rstartdockerenvironmentlikesystemctlstartdocker3.查看docker版本dockerverison4。显示docker系统dockerinfo操作docker镜像1.获取镜像dockersearchimage-name2.下载镜像dockerpullimage-name3.列出镜像listdockerimages4.删除一个或多个镜像dockerrmiimage-name5.显示镜像历史dockerhistoryimage-name6.通过容器创建镜像*从已经创建的容器更新镜像,并提交镜像*使用Dockerfile命令创建新镜像通过下面已有的容器创建新镜像dockercommit-m="FirstImage"-a="keke"7a15f99695c0keke/unbantu:17.10.0上面命令的参数说明:*-m提交的描述信息*-a指定图片的作者*7a15f99695c0记住这里是容器id,不是imageid*keke/unbantu:17.10.0创建的目标镜像名称在Docker中注册,发布的镜像都显示在这个页面。上图unbantu被赋予了一个新的名字unbantu-testdocker标签keke/unbantu:17.10.0keke/unbantu-test:latestlogindockerdockerlogin4。uploadunbantuimagedockerpushkeke/unbantu-test:lateststartcontainerdocker容器可以理解为运行在沙盒中的进程。这个沙盒包含了进程运行所必需的资源,包括文件系统、系统类库、shell环境等。但是这个沙箱默认不会运行任何程序。您需要在沙箱中运行一个进程来启动一个容器。这个进程是容器的唯一进程,所以当进程结束时,容器也会彻底停止。1、在容器中安装一个新程序dockerrunimage-nameapt-getinstall-y-name2、在容器中运行“echo”命令输出“helloword”dockerrunimage-nameecho“helloword”3.交互dockerrun-i-timage_name/bin/bash进入容器注意:执行apt-get命令时,必须带上-y参数。如果不指定-y参数,apt-get命令会进入交互模式,需要用户输入命令进行确认,但在docker环境下无法响应这种交互。apt-get命令执行后,容器会停止,但是对容器的修改不会丢失。查看容器1.列出当前运行的所有容器dockerps2。列出所有的containerdockerps-a3.列出最近启动的containerdockerps-l4.保存对容器的修改当你对某个容器进行修改时(通过在容器中运行命令),你可以将修改保存到container,以便下次可以保存运行容器的最新状态。1.保存对容器的修改;-a,--author=""作者;-m,--message=""CommitmessagedockercommitIDnew-image-name5.操作容器1.删除所有容器dockerrm`dockerps-a-q`2.删除单个容器;-f,--force=false;-l,--link=false删除指定的链接而不是底层容器;-v,--volumes=false删除与容器关联的卷dockerrm名称/ID3.停止、启动、终止容器dockerstop名称/IDdockerstart名称/IDdockerkill名称/ID4.从容器获取日志;-f,--follow=false跟随日志输出;-t,--timestamps=falseShowtimestampsdockerlogsName/ID5.列出一个容器中发生变化的文件或目录,列表会显示三个事件,Aadded,Ddeleted,CChangeddockerdiffName/ID6.显示进程正在运行的容器中的信息dockertop名称/ID7.将文件/目录从容器复制到本地路径dockercpName:/container-pathto-pathdockercpID:/container-pathto-path8.重新启动正在运行的容器;-t,--time=10杀死容器前尝试停止的秒数,默认=10dockerrestartName/ID9.附加到容器之上运行;--no-stdin=false不附加标准输入;--sig-proxy=true将所有接收到的信号代理到processdockerattachID#Restartandrunaninteractivesessionshell注意:使用此命令挂载在后台运行的容器。使用该命令可以在应用开发过程中随时观察容器中进程的运行状态。保存和加载镜像当需要将一台机器上的镜像迁移到另一台机器上时,需要保存镜像和加载镜像1.将镜像保存为tar包;-o,--output=""写入filedockersaveimage-name-ofile-path2.加载一个tar包镜像;-i,--input=""从tar存档中读取filedocker加载-i文件路径3.从机器A复制到机器Bdockersaveimage-name>/home/keke/main.tar*使用scp复制main。tar到机器A:dockerload
