docker 架构

Docker 架构

三个基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

Docker daemon(Docker 守护进程):

运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互。

Images(镜像):

将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器。

Containers(容器):

Docker的运行组件,启动一个镜像就是一个容器,容器与容器之间相互隔离,并且互不影响。

常用命令

查找镜像

docker search 关键词

下载镜像

docker pull 镜像名:TAG

Tag表示版本,有些镜像的版本显示latest,为最新版本

查看镜像

docker images

删除镜像

docker rmi -f 镜像ID或者镜像名:TAG

-f 表示强制删除

获取元信息

docker inspect 镜像ID或者镜像名:TAG

运行镜像

docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像TD或镜像名:TAG

docker run --name how2jtmall -dit --privileged -p21:21 -p80:80 -p8080:8080 -p30000-30010:30000-30010 how2j/tmall:latest /usr/sbin/init # --name 指定容器名,可自定义,不指定自动命名

--privileged 启动容器的时候,把权限带进去。 这样才可以在容器里进行完整的操作

-i 以交互模式运行容器

-t 分配一个伪终端,即命令行,通常组合来使用

-p 指定映射端口,将主机端口映射到容器内的端口

-d 后台运行容器

-v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读

容器列表

docker ps -a -q 

-a 查看所有容器(运行中、未运行)

-q 只查看容器的ID

启动容器

docker start 容器ID或容器名

停止容器

docker stop 容器ID或容器名

删除容器

docker rm -f 容器ID或容器名

-f 表示强制删除

查看日志

docker logs 容器ID或容器名

进入正在运行容器

docker exec -it 容器ID或者容器名

/bin/bash 进入正在运行的容器并且开启交互模式终端

/bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。

也可以用docker exec在运行中的容器执行命令

拷贝文件

docker cp 主机文件路径 容器ID或容器名:容器路径 

主机中文件拷贝到容器中

docker cp 容器ID或容器名:容器路径 主机文件路径

容器中文件拷贝到主机中

获取容器元信息

docker inspect 容器ID或容器名

创建镜像

更新镜像

先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用docker commit命令提交为一个新的镜像(tomcat为例)。

1.根据基础镜像,创建容器
docker run --name mytomcat -p 80:8080 -d tomcat 

2.修改容器内容
docker exec -it mytomcat /bin/bash cd webapps/ROOT rm -f index.jsp echo hello world > index. html exit 

3.提交为新镜像
docker commit -m="描述消息" -a="作者" 容器ID或容器名 镜像:TAG # 例: # docker commit -m="修改了首页" -a="测试" mytomcat zong/tomcat:v1.0 

4.使用新镜像运行容器
docker run --name tom -p 8080:8080 -d zong/tomcat:v1.0
使用Dockerfile构建镜像

Dockerfile是一个包含创建镜像所有命令的文件,使用docker build命令可以根据Dockerfile的内容创建镜像(以tomcat为例)。

1.创建一个Dockerfile文件vi Dockerfile
#注意dockerfile指令须大写
FROM tomcat
MAINTAINER zong
RUN rm -f /usr/local/tomcat/webapps/ROOT/index.jsp
RUN echo "<h1>hello world2<h1>" > /usr/local/tomcat/webapps/ROOT/index.html 

2.构建新镜像
docker build -f Dockerfile -t zong/tomcat:v2.0 . 
# -f Dockerfile路径,默认是当前目录 
# -t 指定新镜像的名字以及TAG
使用Dockerfile构建Spring Boot应用镜像

—、准备

  1. 把你的spring boot项目打包成可执行jar包
  2. 把jar包上传到Linux服务器

二、构建

1.在jar包路径下创建Dockerfile文件vi Dockerfile

# 指定基础镜像,本地没有会从dockerHub pull下来 FROM java:8 # 可执行jar何复制到基础镜像的根目录下 ADD test.jar /test.jar # 镜像要暴露旳端口,如要使用端口,在执行docker run命令时使用-p生效 EXPOSE 8080 # 在镜像运行为容器后执行旳命令 ENTRYPOINT ["java", "-jar", "/test.jar"]

2.使用docker build命令构建镜像,基本语法

docker build -f Dockerfile -t zong/mypro:v1 . # -f 指定Dockerfile文件的路径 # -t 指定镜像名字和TAG # . 指当前目录,这里实际上需要一个上下文路径

三、运行

运行自己的Spring Boot镜像

docker run --name pro -p 80:80 -d 镜像名:TAG

原文地址:https://www.cnblogs.com/mumuyinxin/p/12124135.html