千家信息网

docker的介绍及简单使用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"docker的介绍及简单使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.doc
千家信息网最后更新 2026年11月03日docker的介绍及简单使用

本篇内容介绍了"docker的介绍及简单使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.docker是什么?

docker是一个提供应用打包,部署与运行应用的容器化平台。

应用程序 -> docker引擎-> 物理硬件

应用程序不再直接面向底层资源,而是面向中间层docker引擎来操作。

docker引擎包含:docker服务端, rest api ,docker客户端。

通过这种结构,用户可以通过客户端很方便的管理多个服务端。

2.容器与镜像

  • 镜像:镜像是只读文件,提供运行程序完整的软硬件资源。

  • 容器:容器是镜像的实例,由docker负责创建,容器之间彼此隔离。

3. docker执行流程

docker pull redis

客户端 --> Docker Daemon 检查redis镜像,若本地不存在-> 从远程中央仓库获取镜像

docker run redis

客户端->Docker Daemon redis镜像存在->创建容器,由redis对外暴露服务,对内容器就是一个完整的centos系统。

4.常用命令

  • docker pull 镜像名<:tags> - 从远程仓库抽取镜像

  • docker images - 查看本地下载的镜像

  • docker run 镜像名<:tags> - 创建容器,启动应用

  • docker ps - 查看正在运行的镜像

  • docker rm <-f> 容器id - 删除容器

  • docker rmi <-f> 镜像名:<:tags> - 删除镜像

5. 快速部署tomcat

docker run -p 8000:8080 -d tomcat:latest# 在容器中部署最近版本的tomcat   hub.docker.com# 端口映射-p 8000:8080  8000为宿主机端口,8080为tomcat端口# -d 后台运行

6. 容器内部结构

以tomcat容器为例: 包含tomcat, jdk, mini版linux系统

7.在容器中执行命令

docker exec -it【交互式方式执行命令】容器id/容器name 命令

docker exec -it cc0ebcaaef7a /bin/bash 进入容器bash

8.编写Dockerfile

FROM tomcat:latestMAINTAINER yz.comWORKDIR /usr/local/tomcat/webappsADD docker-web ./docker-web
# 在Dockerfile目录下执行打包docker build -t yz.com/mywebapp.0.1 .# 运行容器docker run -p 8001:8080 yz.com/mywebapp.0.1# 访问 http://localhost:8001/docker-web/index.html
FROM java:8MAINTAINER yz.comWORKDIR /usr/local/apps/jarsADD xx.jar ./xx.jarENTRYPOINT ["nohup","java","-jar","xx.jar","&"]

9.镜像分层

Sending build context to Docker daemon  3.584kBStep 1/4 : FROM tomcat:latest ---> 2ae23eb477aaStep 2/4 : MAINTAINER yz.com ---> Using cache ---> b0efa3602df6Step 3/4 : WORKDIR /usr/local/tomcat/webapps ---> Using cache ---> bf93f5630ca1Step 4/4 : ADD docker-web ./docker-web ---> Using cache ---> 603504ab383fSuccessfully built 603504ab383fSuccessfully tagged dmall.com/inventory-app:0.2

每一个步骤都会产生一个临时的镜像, ---> Using cache 代表会使用之前执行过的步骤缓存。

10.Dockerfile基础命令

FROM centos  # 制作基准镜像(基于centos)FROM scratch # 不依赖任何镜像# 尽量使用官方的Base Image        MAINTAINER yz.comLABEL version = "1.0"LABEL description = "镜像描述"WORKDIR /usr/local/xx  # 工作路径,尽量使用绝对路径,会自动创建目录,并cd到当前目录ADD xx.jar ./     #复制xx.jar文件到 工作路径ADD test.tar.gz / #添加到根目录并解压        ENV JAVA_HOME /usr/local/java8  # 设置环境常量

11. Dockerfile运行指令

# 不同的执行时机。RUN xx              #在build 构建时执行命令ENTRYPOINT xx       #容器启动时执行命令CMD xx              #容器启动后执行默认的命令或参数
11.1 RUN - 构建时运行
RUN yum install -y vim            #shell 命令格式RUN ["yum","install","-y","vim"]  #Exec 命令格式
  • Shell 运行方式

使用shell执行时,当前shell是父进程,生成一个子shell进程, 在子shell中执行脚本。

脚本执行完毕,退出子shell,回到当前shell。

  • Exec 运行方式

使用Exec方式,会用Exec进程替换当前进程,并且保持pid不变。

执行完毕,直接退出,并不会退回之前的进程环境。

11.2 ENTRYPOINT - 启动命令
  • ENTRYPOINT(入口点)用于在容器启动时执行命令。

  • Dockerfile中只有最后一个ENTRYPOINT会被执行。

  • 推荐使用 exec格式

  • ENTRYPOINT一定会执行。

11.3 CMD - 默认执行命令
  • CMD用于设置默认执行的命令

  • 如果Dockerfile中出现多个CMD,则只有最后一个被执行。

  • 如容器启动时附加指令,则CMD被忽略。

  • 推荐使用Exec格式执行命令

  • CMD不一定会被执行,如docker run yz.com/test_cmd:0.1 ls 后面跟一个命令之后,会替换cmd命令。

12. docker自定义构建redis镜像

# 下载redis 源码wget http://download.redis.io/releases/redis-5.0.9.tar.gz

编写Dockerfile文件

FROM centosRUN ["yum", "install", "-y", "gcc", "gcc-c++", "net-tools", "make"]WORKDIR /usr/localADD redis-5.0.9.tar.gz ./WORKDIR /usr/local/redis-5.0.9/srcRUN make && make installWORKDIR /usr/local/redis-5.0.9/ADD redis-6379.conf ./EXPOSE 6379CMD ["redis-server", "redis-6379.conf"]
# 构建redis镜像docker build -t xx.com/redis-6379 ./# 运行redis容器docker run -p 6379:6379 xx.com/redis-6379# 启动关闭容器docker start containerIddocker stop containerId

13. docker间的通信

因为容器每次启动都会分配新的ip,那么怎么在容器间有效的通信呢?

13.1 单向通信
# 创建redis 6379docker run -p 6379:6379 -d --name redis6379 redis# 创建centos link redis6379docker run --name centos --link redis6379 -it centos /bin/bash# 测试能够顺利ping通ping redis637964 bytes from redis6379 (172.17.0.4): icmp_seq=1 ttl=64 time=0.061 ms
13.2 基于Bridge的双向通信
# 查看docker网络docker network lsNETWORK ID          NAME                DRIVER              SCOPE6b60f6c242a3        bridge              bridge              localb51d649d7adb        host                host                local6c0f31888ef7        none                null                local# 创建新的网桥docker network create -d bridge my-bridge# 查看网络docker network lsNETWORK ID          NAME                DRIVER              SCOPE6b60f6c242a3        bridge              bridge              localb51d649d7adb        host                host                local68aa95b088c3        my-bridge           bridge              local6c0f31888ef7        none                null                local# 新开两个centos容器docker run -dit --name os1 centosdocker run -dit --name os2 centos# 绑定到my-bridgedocker network connect my-bridge os1docker network connect my-bridge os2# 进入os1 ping os2docker exec -it os1 bashping os2PING os2 (172.18.0.3) 56(84) bytes of data.64 bytes from os2.my-bridge (172.18.0.3): icmp_seq=1 ttl=64 time=0.032 ms# 进入os2 ping os1ping os1PING os1 (172.18.0.2) 56(84) bytes of data.64 bytes from os1.my-bridge (172.18.0.2): icmp_seq=1 ttl=64 time=0.032 ms

14. 容器间的数据共享

宿主机挂载一个卷, 多个容器共享同一个卷的数据。

# 通过-v挂载宿主机目录docker run --name os3 -dit -v /root:/mnt/root centos bashdocker exec -it os3 bashls /mnt/root
# 创建共享容器docker create --name webapp -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat /bin/true# 共享容器挂载点docker run --volumes-from webapp --name tomcat2 -p 18002:8080 -d tomcat# 访问宿主机18002端口,发现生效

利用这个特性可以将宿主机上面的静态资源如页面文件,共享给容器的资源目录

"docker的介绍及简单使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

容器 镜像 命令 运行 宿主 宿主机 目录 进程 应用 客户 客户端 文件 方式 格式 端口 资源 通信 多个 引擎 程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技园 湖北九亚互联网络科技有限公司 中关村互联网科技集团 互联网扶贫科技 互联网科技与金融科技 互联网金融公司科技 海南购全球互联网科技 银川新华互联网科技学校地址 互联网实体化科技化 互联网科技项目计划书材料类 武汉健翔互联网络科技有限公司 宝灵互联网科技有限公司 赶超互联网科技 微信多开 杭州壁岐互联网科技有限公司 苏州铭阳互联网科技有限公司 互联网科技包装股 抖集互联网科技技术咨询 恒生科技指数 中概互联网 重庆科技产业互联网有哪些 优雇互联网科技有限公司 广州淘业互联网络科技 互联网科技工作委员会毛军 科技互联网项目 壕鑫互联网络科技 互联网科技寓意 湖南诚度互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 互联网科技年终奖 有人说阿里系是互联网科技企业 银川新华互联网科技学校原画
0