容器化技术

安装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://i-blog.csdnimg.cn/blog_migrate/202e2acf7bc5727357684979ee3e0484.png)
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 create 和docker 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执行命令,
RUN 在docker build的时候执行命令
ENTRYPOINT和CMD在容器启动时和启动后执行命令


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 即可启动多个容器
885



被折叠的 条评论
为什么被折叠?



