资讯详情

Docker 操作详解,入门实战

📅 2026/10/28 9:22:54 | 华诺云谱 👁 阅读
Docker 操作详解,入门实战
docker使用记录docker简介镜像Docker镜像是一个只读的模板类似于一个轻量级的、独立的软件包可以用来创建Docker容器。镜像可以包含操作系统、应用程序、依赖库、配置文件等使得应用程序在不同的Docker容器中具有一致的运行环境容器Docker容器则是Docker镜像的一个运行实例可以被看作是一个轻量级的虚拟机。容器包含了运行应用程序所需的所有组件包括操作系统、应用程序、依赖库等各个容器之间互相隔离互不影响仓库Docker仓库是用来存储和管理Docker镜像的地方可以理解为代码仓库。Docker官方提供了Docker Hub仓库用户可以在其中存储和分享自己的Docker镜像也可以从仓库中下载和使用其他人的镜像。目录映射Docker目录映射是指将宿主机的目录与Docker容器的目录进行映射使得宿主机和容器可以共享文件和目录。这样在宿主机上修改的文件或目录可以实时地反映到容器中反之亦然。目录映射是通过在运行Docker容器时使用“-v”参数来实现的。例如以下命令将宿主机的“/home/user/app”目录映射到容器的“/app”目录docker run -v /home/user/app:/app image_name这样在容器中访问“/app”目录时实际上是在访问宿主机的“/home/user/app”目录。目录映射可以方便地进行开发和调试也可以实现容器与宿主机之间的数据共享和持久化存储。docker操作对docker的操作启动、重启、停止# 启动docker sudo service docker start # 重启docker sudo service docker restart # 停止docker sudo service docker stop# 启动docker systemctl start docker # 重启docker systemctl restart docker # 停止docker systemctl stop docker查看版本号docker version查看帮助信息docker info #显示docker的系统信息包括镜像和容器的数量 docker 命令 --help #帮助命令对镜像的基础操作获取所有镜像列表docker image ls # 或者 docker images表格含义REPOSITORY镜像所在的仓库名称TAG镜像标签IMAGE ID镜像idCREATED镜像创建日期SIZE镜像大小拉取镜像docker pull除了使用官方镜像外我们还可以在仓库中申请一个自己的账号保存自己制作的镜像或者拉取他人制作的镜像。# 官方镜像 docker image pull 镜像名称 # 或简写为 docker pull 镜像名称 # 比如 docker pull centos docker pull centos:centos7 # 个人镜像 docker pull 仓库名称/镜像名称 docker pull licc/test # 第三方仓库拉去 docker pull 第三方仓库地址/仓库名称/镜像名称 docker pull hub.c.163.com/library/mysql:latest (默认仓库名为library,所有从官方获取镜像相当于sudo docker image pull library/镜像名称)删除镜像docker image rm 镜像名或镜像ID 或 docker rmi 镜像名或镜像ID docker image rm hello-world docker rmi 9e64176cd8a2删除镜像的前提是没有使用这个镜像的容器,如果有需要先删除容器(报错:Error response from daemon: conflict: unable to delete 镜像ID (must be forced) - image is being used by stopped container 容器ID则代表有容器使用了此镜像。docker rm: 删除一个或多个 容器docker rmi: 删除一个或多个 镜像docker prune: 用来删除不再使用的 docker 对象加载镜像启动容器镜像只是一个只读类型的文件而我们的环境不可能只是一个这样的文件所以我们需要把这个镜像加载成我们的环境也就是让他变成容器。docker run [可选选项] 镜像名 [向启动容器中传入的命令] # 例如docker run -it centos:centos7 /bin/bash选项含义-i表示以《交互模式》运行容器。-d会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)-t表示容器启动后会进入其命令行。加入这两个参数后容器创建就能登录进去。即分配一个伪终端-name为创建的容器命名。(默认会随机给名字,不支持中文字符!!!)-v表示目录映射关系即宿主机目录:容器中目录。注意:最好做目录映射在宿主机上做修改然后共享到容器上。-v宿主机目录:容器中目录-p表示端口映射即宿主机端口:容器中端口。 比如:-p 8080:80 就是将容器中的80端口,映射到主机中的8080端口–networkhost表示将主机的网络环境映射到容器中使容器的网络与主机相同。每个 Docker 容器都有自己的网络连接空间连接到虚拟 LAN。使用此命令则会让容器和主机共享一个网络空间搜索镜像docker search 搜索镜像推送镜像到远程镜像仓库docker login 私有仓库域名 docker push common-repos.startimes.me/local-deploy/registry.startimes.me/starott-et/linux9etbase:v1.0.6对容器的基础操作查看容器# 查看当前所有正在运行的容器 docker ps # 查看当前所有的容器 docker ps -a # 使用过滤器(除了name外,常用的还可以指定id:id 、所有停止的容器:statusexited,正在运行的容器:statusrunning 等) docker ps -f name指定的名字 # 显示2个上次创建的容器(2可以改变) docker ps -n 2 # 显示最新创建的容器包括所有状态 docker ps -l # 仅显示ip docker ps -q # 显示容器大小 docker ps -sCONTAINER ID容器的唯一标识符。IMAGE容器所使用的镜像。COMMAND容器启动时执行的命令。CREATED容器创建的时间。STATUS容器的状态这里显示为Restarting表示容器正在重启。PORTS容器所绑定的端口。NAMES容器的名称标识符。SIZE容器所占用的磁盘空间大小。启动和关闭容器# 停止容器 docker container stop 容器名或容器id # 或可简写为 docker stop 容器名或容器id # 强制关闭容器 docker container kill 容器名或容器id # 或可简写为 docker kill 容器名或容器id # 启动容器 docker container start 容器名或容器id # 或可简写为 docker start 容器名或容器id如果我们成功启动或者关闭一个容器的话会返回容器名或者容器idstop和kill的区别: stop是比较优雅的关掉一个容器类似我们正常退出一个软件而kill是当一个进程出现意外无法正常关闭的时候我们强行进行关闭有点像我们使用任务管理器进行结束进程操作。在正在运行的容器中执行命令docker exec# 如果我只需要执行简单的一两条命令可以使用docker exec # 执行单条命令 (-i: 启动并且保留交互式命令行; -t:作用是分配一个虚拟的终端; docker run ) docker exec -it 容器名或容器id 执行的命令 # 比如 docker exec -it zookeeper ls # 用这种方法,我们还可以启动命令行,根据Linux的特性,系统程序会在/bin中,linux中常用的Shell有多个,其中大部分用的Linux默认的为bash # 所以我们启动命令可以自行如下命令(除了/bin/bash外,linux一般还会带/bin/sh、/bin/rbash、/bin/dash等,具体区别可以自行百度) docker exec -it 容器名或容器id /bin/bash # 比如 docker exec -it zookeeper /bin/bash *# 除了exec外还有attach可以使用,但它有个弊端,多终端启动attach后,都会会同步显示。如果有一个窗口阻塞了那么其他窗口也无法再进行操作。* docker attach 容器名或容器id *# 比如* docker attach zookeeper选项含义-i表示以《交互模式》运行容器。-d会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。-e设置环境变量-t表示容器启动后会进入其命令行。加入这两个参数后容器创建就能登录进去。即分配一个伪终端。-u设置用户名和UID-w设置容器内的工作目录在正在运行的容器中实现目录映射使用mount挂载# 进入容器 docker exec -it modest_heyrovsky /bin/bash # mount -o bind 宿主机路径 容器路径 mount -o bind /home/licc/tmp/srsTest/srs /usr/local/srs从容器中退回主机# 直接容器停止并退出 [rootaed9d307a32d /]# exit exit # 容器不停止退出 ctrl Q P删除容器docker rm# 使用rm删除容器 docker rm 容器名或容器id # 列如 docker rm zookeeper如果报错Error response from daemon: You cannot remove a running container 容器ID. Stop the container before attempting removal or force remove则代表这个容器已经启动需要执行 docker stop 容器id停止此容器。容器制作成镜像# 将容器制作成镜像 docker commit -m描述信息 -a作者 容器id 目标镜像名:[TAG] docker commit 容器名 镜像名 # 镜像打包备份(打包备份的文件会自动存放在当前命令行的路径下,如果想让保存的文件可以打开,可以加.tar后缀) docker save -o 保存的文件名 镜像名 # 镜像解压 docker load -i 文件路径/备份文件我们为什么要把容器制作成镜像?镜像可以看作为是一种备份如果我们后期环境出现了问题可以还原到早期镜像。镜像便于传播可以让自己的其他设备或他人的重复利用变得更加简单容易。镜像打tag镜像的 tag 是用于标识镜像版本 / 环境的标签如v1.0.6、latest、x265-v3.3格式规则[仓库域名/][命名空间/]镜像名:标签仓库域名私有 / 公有仓库地址如你的common-repos.startimes.me命名空间通常是团队 / 项目名如你的startimes-ops/starott-et镜像名自定义镜像名称如你的linux9runetbase标签版本 / 环境标识如v1.0.6、x265-v3.3、latest。docker tag 原镜像标识 目标Tag # 说明 # 原镜像标识可以是 镜像ID短ID/长ID、现有Tag如linux9runetbase:v1.0.5 # 目标Tag新的标签按上述格式定义。 docker tag linux9etbase:v1.0.6 common-repos.startimes.me/local-deploy/registry.startimes.me/starott-et/linux9etbase:v1.0.6查看容器中进程信息 ps# 命令 docker top 容器id [rootnode2 ~]# docker top dbc04c145442 UID PID PPID C STIME TTY TIME CMD root 2824907 2824889 0 03:02 pts/0 00:00:00 /bin/bash root 2825313 2824889 0 03:03 pts/1 00:00:00 /bin/bash root 2826736 2824889 0 03:11 ? 00:00:00 /bin/bash从容器内拷贝文件到宿主机docker cp 容器id:容器内路径 目的的主机路径docker cp dbc04c145442:/home/test.md /home查看docker操作日志[rootnode2 ~]# docker logs --help Usage: docker logs [OPTIONS] CONTAINER Fetch the logs of a container Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) --tail string Number of lines to show from the end of the logs (default all) -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)以下是docker logs命令的常用选项--details显示额外的日志详细信息。这些详细信息包括容器的标签、环境变量、网络设置等。-f, --follow实时跟踪日志输出类似于tail -f命令。当有新的日志输出时会自动显示在终端上。--since string显示指定时间戳例如2026-01-02T13:23:37或相对时间例如42m表示 42 分钟之后的日志。只显示从指定时间之后的日志。--tail string从日志末尾显示指定行数的日志。默认值为all即显示所有日志。-t, --timestamps显示日志的时间戳。--until string显示指定时间戳例如2026-01-02T13:23:37或相对时间例如42m表示 42 分钟之前的日志。只显示指定时间之前的日志。DockerFileDockerFile介绍dockerfile 是用来构建docker镜像的文件命令参数脚本构建步骤编写一个DockerFile文件docker build 构建成为一个镜像docker run 运行镜像docker push 发布镜像DockerHub 、阿里云仓库)基础知识每个保留关键字指令都必须是大写字母执行顺序从上到下#表示注释DockerFile构建文件定义了一切的步骤源代码DockerImages通过DockerFile构建生成的镜像最终发布和运行产品。Docker容器容器就是镜像运行起来提供服务。DockerFile常用指令FROM # 基础镜像一切从这里开始构建 centos MAINTAINER # 镜像是谁写的姓名邮箱 RUN # 镜像构建的时候需要运行的命令 ADD # 用于将本地文件或目录添加到容器的文件系统中如果是压缩包自动解压。它的语法如下 ADD 本地文件或目录路径 容器内的目标路径 WORKDIR # 镜像的工作目录 指定进入到容器的特定目录中 VOLUME # 挂载的目录 EXPOSE # 暴露的端口配置和我们的-p一样 CMD # 指定这个容器启动的时候要运行的命令只有最后一个会生效可被代替 ENTRYPOINT # 指定这个容器启动的时候要运行的命令可以追加命令 ONBUILD # 当构建一个被继承DockerFile这个时候会运行ONBUILD指令 COPY # 类似ADD将我们的文件拷贝到镜像中 COPY 宿主机文件或者目录 容器中的文件或者目录 ENV # 构建的时候设置环境变量通过DockerFile构建镜像docker build# 命令 docker build -f 文件路径 -t 镜像名:[tag] . docker build -f myFirstDockerFile -t mycentos:1.0 .官方默认文件名为DockerFile当没有使用-f指定文件名时build会默认在当前目录下寻找 DockerFile 这个文件。当我们拿到一个镜像的时候我们可以通过history的命令查看我们的这个镜像是怎么一步一步制作起来的。具体的命令如下docker history 容器idStarUDCPSender 构建镜像编写DockerFile文件FROM centos:centos7 CMD [/bin/bash] RUN yum -y install libxml2 libxslt-devel net-snmp net-snmp-utils net-snmp-devel zlib-devel byacc flex yum -y install dos2unix gcc gcc-c libstdc-devel make vim boost-devel yum -y groupinstall Development Tools ADD log4cpp-1.1.3.tar.gz /usr/src/ RUN cd /usr/src/log4cpp ./configure --enable-static --disable-shared make make installdockerFile build 构建StarUDCPSender镜像# 构建镜像 docker build -f DockerFile -t starudcpsender:v1.0 ./ # 启动容器 docker run -it starudcpsender:v1.0 -name starudcpsenderv1.0 /bin/bash # 拉取代码 git clone -b feature-1.0.0 ssh://gitgitlab.startimes.me:10022/starvideo-process/starudcp.git # 目录映射 docker run -it --name starudcpsenderv1.0 -v /home/licc/tmp/starUDCPSender:/home/starUDCPSender starudcpsender:v1.0 /bin/bash
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑