当前位置: 首页 > Linux

docker常用指令详解

时间:2023-04-06 01:59:21 Linux

Instructions详解从远程仓库拉取镜像//dockerimagepulllibrary/hello-world默认从库中拉取,可以省略dockerimagepullhello-world查看镜像列表dockerimagels运行一个docker镜像,生成一个容器实例//运行dockerrunhello-world//echo会在shell上打印一段文字作为提醒helloworld检查本地是否存在指定镜像,如果不存在则从公共仓库下载,使用镜像创建并启动一个容器分配一个文件系统,并在只读镜像层外挂载一个读写层。bridgeavirtualinterface从宿主机host上配置的bridge接口到容器,从地址池中配置一个ip地址,供容器执行user-specified应用程序执行后,容器终止runningcontainersdockercontainerls//列出机器上所有的容器,包括终止的容器dockercontainerls--all启动一个交互式容器dockerrun-t-iubuntu:14.04/bin/bashdockerrun命令,并启动名为Ubuntu:14.04。-t表示在新容器中指定一个伪终端或终端-i表示允许我们在容器中与(STDIN)进行交互。-t-i可以简化为-it。请记住,我们还在容器中指定了一个新命令:/bin/bash。这将启动容器中的bashshell,这是一个交互式程序。请注意“:”后跟TAG。如果不指定,默认是最新的。所以当容器(container)启动的时候,我们会得到一个命令提示符:root@af8bae53bdd3:/#这意味着我们已经进入容器启动daemon进程,并且容器一直在后台运行dockerrun-dubuntu:14.04//注意-d和-it同时使用,-会失效,-d需要返回一个容器id端口映射,挂载数据卷,命名容器dockerrun-d--name=ant_web_pro-v/host绝对路径:/container目录-pdocker外部端口:docker内部端口nginx-P:随机端口映射,容器内部端口随机映射到宿主机的高端口-p:指定端口映射,格式is:host(主机)端口:容器端口--name="nginx-lb":为容器指定一个名称;--volume,-v:bind如果一个volume是容器中不存在的目录,则两者都会自动创建-v$PWD/directory:/容器中的目录$PWD表示当前文件夹当你更改数据时volume在容器内部,其实是软连接到外部的,data直接在宿主机上更改查看数据volumedockervolumels启动一个终止的容器container可以运行创建一个新的运行,或者重启stopped容器,但是start不能再指定容器启动时要运行的命令,因为docker只能有一个前台进程。当容器停止(或Ctrl+D)时,会保存当前容器的状态后退出,下次启动时,会保留上次关闭时的变化。而且每次进入attach,界面都是一样的,跟第一次run或者commit提交的那一刻是一样的。dockerstart$CONTAINER_IDdockerstop$CONTAINER_IDdockerrestart$CONTAINER_IDexitcontainerexitentercontainerdockerexec-itant-design-pro_web/bin/bash//dockerexec-it64b9ded82141bash(可以是id)删除一个或多个容器,images(rm,rmi)//删除容器dockerrm//删除所有停止的容器dockerrm$(dockerps-a-q)//删除镜像dockerrmidocker查看数据Reeldockervolumelscommitcontainer,createanewimage我们期望自定义自己的镜像,安装一些基础环境(比如上面的node),然后创建我们想要的基础镜像。dockercommit-a"runoob.com"-m"myapache"a404c6c174a2mymysql:v1-a:提交图像的作者;-c:使用Dockerfile命令创建镜像;-m:提交时的说明文字;-p:在提交时,暂停容器。docker镜像的导出和导入dockersave-odockersave-o./ubuntu18.tarubuntu:18.04dockerload--input./ubuntu18.tardockerexport>dockerexportubuntu18>./ubuntu18.tardockerimport<文件路径><容器名称>dockerimport./ubuntu18.tarubuntu18export命令是从一个容器(container)中导出一个tar文件,而save命令是导出一个tar文件tarfilefromanimage(images)export导出的文件导出再导入回来的时候,无法保留图片的所有历史记录(也就是每一层的图层信息,不熟悉的话,你可以去Dockerfile),不能进行回滚操作;而保存是基于图像的,所以在导入的时候可以完整的保留每一层的图层信息。dockerinstallsomesoftwarecompleteinstructionsdockerrun-d--namemysql3-p3308:3306-v/usr/local/docker/mysql/data2:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456mysql:5.7-e设置环境变量,MYSQL_ROOT_PASSWORD登录密码-v/usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d中container/mysqld.cnf配置文件挂载在宿主机的/usr/local/docker/mysql/config/mysqld.cnf文件中;-v/usr/local/docker/mysql/data:/var/lib/mysql:将容器中的/var/lib/mysql数据目录挂载到容器的/usr/local/docker/mysql/data目录下主机;mysql:5.7是你的镜像名称