Docker

容器化技术
*在这里插入图片描述*

安装Docker及基本介绍

1.安装docker的社区版本

yum -y install docker-ce
2. 启动docker
service docker start在这里插入图片描述
3.查看docker版本
docker version
在这里插入图片描述
4.docker拉取镜像
docker pull hello-world
在这里插入图片描述
5.启动docker镜像
docker run hello-world
](https://img-blog.csdnimg.cn/20210411000356133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BlcnNpc3RlbmNlX19f,size_16,color_FFFFFF,t_70)
6.设置镜像仓库/etc/docker/daemon.json中设置,可设置阿里云镜像仓库
在这里插入图片描述

配置完执行
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker基本概念

分为docker daemon ,restapi,client
在这里插入图片描述

容器和镜像的概念在这里插入图片描述

Docker执行流程

在这里插入图片描述

Docker常用命令

1.拉取镜像
docker pull 镜像名:tags
2.查看下载镜像
docker images
3.创建容器,启动应用
docker run 镜像名:tags
4.正在运行的镜像
docker ps
5.删除容器
docker rm -f 容器id
6.删除镜像
docker rmi -f 镜像名:tags

Docker 宿主机和容器之间的关系

在这里插入图片描述
使用命令时容器内部启动应用端口映射到宿主机上给外部访问
docker run -p 8000:8080 tomcat 8000为宿主机暴露端口,8080为容器服务端口
登录宿主机查看端口使用状况发现docker-proxy为映射进程
在这里插入图片描述
使启动容器时候后台运行,返回容器id
docker run -p 8000:8080 -d tomcat

在这里插入图片描述
使用命令停掉容器,再删除容器
docker stop 容器id
docker rm 容器id
或者
docker rm -f 容器id
在这里插入图片描述
删除镜像
docker rmi tomcat:tag
在这里插入图片描述
如果有容器在使用的镜像使用docker rmi 无法移除
在这里插入图片描述

Docker的结构

在这里插入图片描述
进入容器执行命令
docker exec [it] 容器id 命令 it采用交互式命令
demo
docker exec -it b591983064cf /bin/bash
进入redis容器中
在这里插入图片描述
查看容器内操作系统内核cat /proc/version
在这里插入图片描述
exit 命令退回宿主机
在这里插入图片描述
默认docker存放的容器和镜像位置存放路径
在这里插入图片描述

容器生命周期

docker命令及生命周期
在这里插入图片描述
1.使用docker createdocker start 创建容器并且启动
在这里插入图片描述
2.使用docker pause 暂停容器 以及docker unpause停止暂停
在这里插入图片描述

3.使用docker stop 停止容器
在这里插入图片描述

Dockerfile

dockerfile 是一个包含于组合镜像命令的文本文档
docker 通过读取dockerfile生成镜像
docker build -t 机构/镜像名:tags dockerfile目录
1.创建Dockerfile文件 以及docker-web 文件夹
在这里插入图片描述

编辑Dockerfile文件

FROM tomcat:latest
MAINTAINER hejiawang.com
#cd /usr/local/tomcat/webapps
#切换工作目录,不存在就创建
WORKDIR /usr/local/tomcat/webapps
#复制宿主机目录下的所有文件到容器目录下
ADD docker-web ./docker-web

在docker-web 下新建index.html文件
在dockerfile当前目录下执行命令构建镜像
docker build -t hejiawang.com/mywebapp:1.0 .
在这里插入图片描述
使用docker images即可查看刚刚新建的docker镜像

在这里插入图片描述
使用命令docker run -d -p 8001:8080 hejiawang.com/mywebapp:1.0 用刚构建的镜像创建一个容器并且将其端口映射到宿主机的8001端口查看
在这里插入图片描述
运行后可以通过浏览器看到刚刚在宿主机上的index.hmtl文件
在这里插入图片描述

镜像分层

在这里插入图片描述
在新的目录下创建新的Dockerfile
在这里插入图片描述

FROM centos
RUN ["echo","aaaa"]
RUN ["echo","bbbb"]
RUN ["echo","cccc"]
RUN ["echo","dddd"]

每一步构建完都会生成临时镜像
在这里插入图片描述
修改Dockerfile 中的内容
在这里插入图片描述
再次使用命令构建镜像,构建的重复的东西会使用之前临时容器的快照
在这里插入图片描述

Dockerfile 基本命令

1.FROM
在这里插入图片描述
2.MAINTAINER和LABEL
在这里插入图片描述3.WORKDIR
在这里插入图片描述
4.ADD和COPY
在这里插入图片描述
5.ENV
在这里插入图片描述
6.在dockerfile执行命令,
RUNdocker build的时候执行命令
ENTRYPOINTCMD在容器启动时和启动后执行命令
在这里插入图片描述
在这里插入图片描述

RUN命令格式

在这里插入图片描述
shell格式
在这里插入图片描述
EXEC格式
在这里插入图片描述

ENTRYPOINT启动命令

在这里插入图片描述

CMD启动命令

在这里插入图片描述

CMD和ENTRYPOINT 具体区别

新建一个dockerfile
在这里插入图片描述

FROM centos
RUN ["echo","image building!!!"]
CMD ["echo","container starting.."]

使用docker build 构建镜像
在这里插入图片描述

运行新构建的镜像 Dockerfile中的CMD命令打印了,如果docker run 后面加了命令则不执行CMD中的命令
在这里插入图片描述
修改Dockerfile 重新构建一个镜像
将CMD修改为ENTRYPOINT

FROM centos
RUN ["echo","image building!!!"]
ENTRYPOINT ["echo","container starting.."]

可以看到 docker run 的时候后面跟命令ENTRYPOINT 的命令仍然会执行
在这里插入图片描述

CMD和ENTRYPOIN 组合用

如下案例运行容器的时候ps 可以和执行的命令灵活使用
在这里插入图片描述
在这里插入图片描述

Docker构建redis案例

1.创建Dockfile文件

在这里插入图片描述
2.使用docker build 构建redis镜像
在这里插入图片描述

3.使用docker images 查看到构建的镜像
在这里插入图片描述
4.使用docker run -p 7000:7000 启动容器

在这里插入图片描述
5.查看宿主机对外暴露的端口
在这里插入图片描述
6.进入容器查看
在这里插入图片描述

容器见link单向通信

在这里插入图片描述
通过容器间通过名称访问
命令docker run -d --name web tomcat
在这里插入图片描述
命令docker run -d --name databese -it centos /bin/bash,默认centos创建会自动退出 所以需要加上-it和 /bin/bash 使容器交互启动
在这里插入图片描述
命令docker inspect 容器id查看容器的源数据
其中IPAddress 为容器ip
在这里插入图片描述
进入tomcat容器去ping centos ip 容器互通,但是ping容器名称无法通
在这里插入图片描述
将原来tomcat容器删除掉,然后使用命令docker run -d --name web --link databese tomcat创建启动容器
在这里插入图片描述
再次进入tomcat容器 通过容器名ping其他容器即可ping通
在这里插入图片描述
所以在java程勋的jdbc配置中可以配置name并且在启动容器时link到name即可,几时容器重启更换ip也可以网络通

Bridge网桥双向通信

在这里插入图片描述docker network ls查看docker容器的网桥
docker network create -d bridge my-bridge 为容器创建新的网桥在这里插入图片描述
将容器与网桥互相绑定即可通信
docker network connect my-bridge web 是容器和网桥绑定
docker network connect my-bridge databese
进入centos容器中ping tomcat容器名即可通
在这里插入图片描述
网桥实现原理
在这里插入图片描述

容器间数据共享

为了解决容器共用一个文件的情况
在这里插入图片描述
解决思路在这里插入图片描述

设置-v 设置宿主机目录和容器目录(通过在宿主机创建目录,使多个容器往上挂在)

dcoker run --name 容器名 -v 宿主机路径:容器内挂在路径 镜像名
demo
docker run --name web -v /usr/apps:/usr/local/tomcat/webapps tomcat

设置–volumes-from 共享容器内挂载点 (通过创建一个已经挂在到宿主机的容器,其他容器都挂在这个已挂载的容器)

1.创建共享容器
docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
2.共享挂在点
docker run --volume-from webpage --name t1 -d tomcat

demo
新建t1容器,将tomcat 容器下的webapps 目录挂在到宿主机的/usr/webapps 下面
在这里插入图片描述
进入容器内也可以看到挂载到宿主机下的目录有文件
在这里插入图片描述
新建t2容器,也将其目录挂在到宿主机上
在这里插入图片描述
修改index.html文件,不需要重启
在这里插入图片描述
访问无论哪个容器,页面都已修改
在这里插入图片描述
每次创建容器创建都要指定挂载点太复杂,
直接手动创建挂载容器
docker create --name webpage -v /usr/local:/usr/local/tomcat/webapps /bin/true
在这里插入图片描述
再创建其他容器时候指定挂载共享容器
docker run -p --volumes-from webpage --name t3 -d tomcat
在这里插入图片描述

Docker compose 容器编排工具

在这里插入图片描述
查看docker-compose版本
在这里插入图片描述
1.创建docker compose yml文件,并且从官网将内容复制进来
在这里插入图片描述
2.docker-compose -d 即可启动多个容器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值