记录下学习docker的基本常用命令

chenm1xuexi 2019-05-19 09:55:33
docker ps //查看当前运行中的容器 docker ps -a //查看所有运行过的容器 docker inspect containerId(容器ID或容器名)//查看对应容器的具体配置信息 docker port containerId //查看对应容器端口映射 docker run --name containerName -it -p 80:80 -d // --name是为容器取一个别名,-p 80:80是端口映射,将宿主机的80端口映射到容器的80端口上,-d是指后台运行容器,即容器启动后不会停止,-it是-i 和-t的合并,以交互模式运行容器。( # -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开 ) docker images //查看所有镜像 docker exec -it containerName /bin/bash //进入已启动的容器内,新启一个进程,执行命令。 docker stop containerName // 停止一个容器 docker start -i containerName //重启启动一个运行过的容器 docker rm containerName //移除一个容器 docker ps // 查看当前正在运行的容器 docker ps -a // 查看已关闭的容器列表 docker ps -l // 查看最近启动的容器信息 docker images (docker images ls 默认是列出顶级镜像列表)// 列出本地主机上的镜像列表 docker image ls -a //查看所有镜像(包括中间层镜像) docker pull //下载指定的镜像 docker search // 查找镜像,从dockerHub上查找需要下载的镜像 docker port //查看端口的绑定情况 构建docker镜像需要创建Dockerfile文件 docker build -t "镜像名" . // t代表创建指定的目标镜像名 .代表当前Dockerfile文件目录 docker tag "镜像id" "镜像名" : "新的标签名" //为镜像添加一个新的标签(local,dev, proc) docker run -d -P (-p) //启动一个应用容器 (-d 表示让container 运行在后台, -P :是容器内部端口随机映射到主机的高端口。-p : 是容器内部端口绑定到指定的主机端口)。 sudo docker run -i -t ubuntu /bin/bash // (/bin/bash表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器就会退出。 这个就表示启动容器后启动bash。) docker 镜像(image)和容器(container)的关系相当与java中的类与实例的关系一样,容器的实质是进程,但与直接在宿主执行的进程有所不同 容器进程运行于自己独立的命名空间(命名空间是Linux内核的一项功能,它对内核资源进行分区,使得一组进程看到一组资源, 而另一组进程看到一组不同的资源). docker-registry:镜像构建完成后,可以很容易在当前的宿主机上运行,如果需要在其他服务器上使用该镜像,则需要一个集中的存储丶分发镜像的服务. docker-registry公开服务:是开放给用户使用,允许用户管理镜像的registry服务.(docker-hub是官方的公开服务) 一个docker-registry中可以包含多了仓库(repository);每个仓库包含多个标签(tag),每个标签对应一个镜像 linux命令中的反斜线符号“ \ ”在Bash中被解释为转义字符,用于去除一个单个字符的特殊意义,它保留了跟随在之后的字符的字面值,除了换行符, 比如:docker run -it --rm \ ubuntu:18.04 \ bash 查看当前linux操作系统的的版本命令:cat /etc/os-release docker run -it ubuntu:18.04 bash(it是-i和-t的结合体,-i(interaction交互)表示交互式操作,-t(terminal)代表终端) docker run -t -i ubuntu:18.04 /bin/bash(-t代表docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开) 虚悬镜像(dangling image):新旧镜像同名,旧镜像名称被取消,会出现仓库名和标签都为none的镜像称为虚悬镜像. 删除镜像: docker image rm 为了加快镜像的构建,重复利用资源,docker会利用中间层镜像.上层镜像依赖于中间镜像,所以不可删除中间镜像.会导致上层镜像的依赖关系出错 查看指定的镜像列表:docker image ls ubuntu //根据仓库名列出镜像 docker image ls ubuntu:18.04 //根据仓库名和标签列出镜像 docker image ls命令还包含过滤的功能(--filter),简写-f,比如查询仓库名为ubuntu之后建立的镜像列表. docker image ls -f since=ubuntu:18.04 //查看镜像ubuntu18.04之后的镜像列表 docker image ls -f before=ubuntu18.04 //查看镜像ubuntu18.04之前的镜像列表 docker image ls -q //列出所有顶层镜像的id,也可配合-f来检索指定范围的id列表 docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" //自定义格式输出镜像列表 镜像的唯一标识是id和摘要,一个镜像可以有多个标签,镜像是容器的基础,每次执行docker run 的时候都会指定哪个镜像作为容器运行的基础,当从公共服务(docker register)中无法获取自己需要的镜像时,此时需要定制这些镜像. 容器 = 镜像 + 可读可写层(也就是容器的存储层) 启动一个web应用时:docker run --name mywebserver -d -p 80:80 nginx // --name 自定义容器的名称 -d (daemon后台程序)使容器在后台运行, -p指定映射端口(也就是容器的内部端口和宿主端口进行绑定) 使用docker exec命令可进入容器,修改内容. docker exec -it webserver bash 可通过docker diff + 容器名来查看容器的变更记录 对容器进行了修改后,如果想将其改动保存下来形成镜像,我们需要使用docker commit命令(docker commit 命令慎用,会有很多的黑箱操作无法显示出来) docker commit \ --author "xiao feifei <837698719@qq.com>" \ =>指定修改的作者 --message "修改了默认的访问网页内容" \   =>记录本次修改的内容 mynginx \ nginx: v2 docker history + 容器的名称 + 标签名 //查看镜像内的历史记录 使用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置,文件.Dockerfile文件一行指令构建一层. Dockerfile文件内容实例如下: FROM nginx RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html (1)FROM指定基础镜像,定制镜像是在以一个镜像为基础上对其进行定制. (2)RUN指令是用来执行命令行命令的,其格式分为两种:   (1)shell格式:RUN <命令> (2)exec格式:RUN ["可执行文件", "参数1", "参数2"] 比如:RUN apt-get update 使用docker build命令来构建镜像: docker build [选项] <上下文路径/URL/-> ps:docker build -t nginx:v3 . // -t 代表--tag list 表示构建的镜像的名称和标签名(可选的) //.代表上下文路径,并非是Dockerfile文件所在的路径 镜像构建上下文 docker build的工作原理:Docker在运行时分为Docker引擎(也就是服务器的守护进程)和客户端工具,Docker引擎提供了一组REST API,称为Docker remote api, 对于docker build命令这样的客户端工具,则是通过这组api和docker引擎进行交互的,从而完成各种功能. Dockerfile文件详解: (3) COPY <源路径>... <目标路径>(官方建议使用该命令) copy指令将从构建上下文目录中也就是<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>的位置.(目标路径可以是相对于工作目录的绝对路径也可以是相对路径) (4) ADD是COPY的加强版(不建议使用,适用于自动解压.zip,tar,xz等压缩文件) (5) CMD容器启动命令: CMD <命令> ps: CMD echo $HOME 容器就是进程,启动时需要指定所运行的程序及参数,cmd命令就是用于指定默认的容器主进程的启动命令的.ubuntu镜像默认的CMD是 /bin/bash. 操作容器: docker container start //启动一个容器 docker container logs //查看容器的日志 docker container stop //终止容器 docker container restart // 重启容器 docker container rm //删除容器 docker container prune //清空所有处于终止状态的容器 使用-d参数,容器启动后会进入后台 某些时候需要进入容器进行操作,可使用docker attach(进入容器后,使用exit会导致容器停止) 或 docker exec命令,推荐使用docker exec 导入导出容器: 导出容器:docker export 7691a814370e > ubuntu.tar 导入容器:cat ubuntu.tar | docker import(load) - test/ubuntu:v1.0(也可以url形式导入) 访问仓库(repository): Docker Register(注册服务器)是管理仓库(repository)的具体服务器,每个服务器上有多个仓库,每个仓库上有多个镜像.可以认为仓库是一个具体的项目或者目录.ps:dl.dockerpool.com/ubuntu是仓库地址,dl.dockerpool.com是注册服务器地址 docker login //登录Docker Hub docker logout //退出登录 docker search //查找官方仓库的镜像 docker pull //拉取镜像到本地
...全文
46 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧