Docker教程二

DockerFile解析:

在这里插入图片描述

在这里插入图片描述
dockerfile执行的大致流程:
在这里插入图片描述
总结:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

dockerfile关键字总结:
在这里插入图片描述
简单案例:
在这里插入图片描述
准备工作:先删除所有容器:
在这里插入图片描述
然后我们查看一下docker hub上原生的的centos是怎样的:不支持vim和ifconfig等命令
在这里插入图片描述
第一步:编写Dockerfile脚本:
在这里插入图片描述
准备步骤1-4:

(1):按照上面的操作删除所有容器
(2):pwd查看当前位置,并进入根目录(cd /)
(3):在根目录下创建文件夹mydocker。
(4):在mydocker文件夹中创建一个文件:vi Dockerfile2
(5):编写d Dockerfile2文件内容如下:

FROM centos

ENV mypath /tmp
WORKDIR $mypath

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80
CMD /bin/bash

在这里插入图片描述
第二步:构建/制作镜像:
在这里插入图片描述

[root@fancentos7 mydocker]# docker build -f /mydocker/dockerfile2 -t mycentos:1.3 .

第三步:运行镜像:

先查看:docker images
docker run -it mycentos:1.3

cmd说明:
在这里插入图片描述
案例二:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

案例三:

制作entroypoint版本:
在这里插入图片描述
在这里插入图片描述
onbuild使用案例:
在这里插入图片描述
第一步:我们需要在宿主机下的文件夹mydocker下操作。进去文件夹并查看数据卷:
(1)cd / :回到根目录
(2)cd mydocker
(3)ll :查看数据卷
(4)vim/vi dockerfile4

from centos
RUN yum install -y curl 
ENTRYPOINT ["curl","-s","http://ip.cn"]
ONBUILD RUN echo "father onbild ----8888"

然后绑定:
docker build -f /mydocker/dockerfile4 -t myip_father .

然后查看刚才命名的镜像myip_father:
docker images

父镜像制作完毕!


然后我们开始制作子镜像:
在mydocker文件夹下,复制一个父的dockerfile改写一下使用:
cp dockerfile4 dockerfile5

然后vim dockerfile5
修改from myip_father

然后制作build子镜像:

docker build -f /mydocker/dockerfile5 -t myip_son .

在这里插入图片描述
出现这句话证明使用父类的东西:
Step 1/4 : from myip_father
Executing 1 build trigger

DockerFile制作自定义的tomcat镜像(重点):

在这里插入图片描述
第一步:创建文件夹tomcat8:
cd /:回到根目录
mkdir -p fanuse/mydockerfile/tomcat8:级联创建文件夹

第二步:创建文件readme.txt:这是一个备用说明文件
cd /fanuse/mydockerfile/tomcat8
touch readme.txt

第三步:拷贝需要的压缩包(将两个压缩包放到opt目录下备用):
在这里插入图片描述
然后拷贝:

cp /opt/apache-tomcat-8.5.69.tar.gz /fanuse/mydockerfile/tomcat8

cp /opt/jdk-8u291-linux-x64.tar.gz /fanuse/mydockerfile/tomcat8

然后我们tomcat9文件夹下已经有了三个文件:apache-tomcat-8.5.69.tar.gz,jdk-8u291-linux-x64.tar.gz ,readme.txt

第四步:在fanuse/mydockerfile/tomcat9目录下新建dockerfile脚本文件:vim Dockerfile1

Dockerfile1文件内容如下:

FROM  centos
MAINTAINER   fan<541564201@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u291-linux-x64.tar.gz  /usr/local/
ADD apache-tomcat-8.5.69.tar.gz  /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_291
ENV CLASSPATH  $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.69
ENV CATALINA_BASE  /usr/local/apache-tomcat-8.5.69
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080

CMD /usr/local/apache-tomcat-8.5.69/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.69/bin/logs/catalina.out

在这里插入图片描述
第五步:构建镜像,-t后跟的是自定义的标签名字
docker build -f /fanuse/mydockerfile/tomcat8/Dockerfile1-t fantomcat8 .

第六步:运行镜像:并挂载数据卷

docker run -d -p 9080:8080 --name fantomcat8 -v /fanuse/mydockerfile/tomcat8/test:/usr/local/apache-tomcat-8.5.69/webapps/test -v /fanuse/mydockerfile/tomcat8/tomcat8logs/:/usr/local/apache-tomcat-8.5.69/logs --privileged=true fantomcat8

在这里插入图片描述
第七步:验证:
内网访问:[root@fancentos7 tomcat8]# curl localhost:9080

外网访问:
linux的ip:端口号
在这里插入图片描述



查看默认设置的路径usr/local下有什么内容:
在这里插入图片描述

在这里插入图片描述
测试:jdk版本:
在这里插入图片描述

第八步:发布项目:(由于做了数据卷的挂载,我们直接在本地编写项目就可以发布)

在这里插入图片描述

(1)我们的本地有一个test目录,存放的是项目:
test目录详细情况:
在这里插入图片描述

test目录下需要有一个WEB-INF文件夹,所以我们自己创建一个:mkdir WEB-INF

(2)然后进入WEB-INF,在里面写一个web.xml:vim web.xml

百度一个web.xml,将内容复制到web.xml中

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>

(3)需要一个a.jsp:回到test目录下创建:

在这里插入图片描述
jsp内容:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
 
</body>
</html>

在这里插入图片描述
文件编写完毕就可以网页访问了。

(4)测试:
在这里插入图片描述

修改测试:在这里插入图片描述在这里插入图片描述
(5)查看tomcat日志:

在这里插入图片描述

在这里插入图片描述

dockerfile总结:
在这里插入图片描述

docker常用安装:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装mysql8.0.22:

先在centos中启动docker服务
命令:systemctl start docker :启动docker服务
docker images:查看镜像

第一步:搜索镜像:docker search mysql

在这里插入图片描述
第二步:拉取:docker pull mysql:8.0.22
在这里插入图片描述

第三步:运行镜像:
在这里插入图片描述

docker run -p 3307:3306 --name mysql8.0.22 -v /fanuse/mysql/conf:/etc/mysql/conf.d -v /fanuse/mysql/logs:/logs -v /fanuse/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.22

注意:(1)端口是否已经被占用,如不能使用3306,被本地mysql占用了)(2)当下载拉取两个不同版本的mysql的时候,一定要将-v后的存储目录进行更改。不然系统混装,会出错。然后注意自己本地安装的mysql的是8.0还是5.7,要匹配。

在这里插入图片描述
第四步:查看mysql8.0容器运行情况:
然后返回一个容器id,并使用docker ps查看是否运行成功。
第五步:docker登录mysql:
docker exec -it 容器id /bin/bash
mysql -uroot -p
在这里插入图片描述
然后输入:show databases; 注意分号要加的。

在这里插入图片描述
外部win10连接docker中的mysql:

三、服务器命令行操作:
进入容器:docker exec -it 容器id /bin/bash

登录mysql: mysql -uroot -p(u,p后面跟的是用户名和密码)

授权:ALTER user ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘root’;

刷新:FLUSH PRIVILEGES;
然后:show databases;

然后界面这里连接:
在这里插入图片描述

数据备份:
在这里插入图片描述
在这里插入图片描述

docker中安装redis:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

commit容器使其成为一个新的镜像:

commit能使我们跟充分的理解镜像的原理:即分层的联合文件系统。
我们的镜像本质是一层一层的,他支持对文件的修改作为一次提交来一层一层的叠加。好比一个vm的快照。

在这里插入图片描述

首先启动docker :systemctl start docker
然后查看镜像:docker images
然后运行tomcat:docker run -it -p 8080:8080 tomcat
然后退出:ctrl+p+q
然后查看正在运行的容器:docker ps (发现tomcat已经启动成功)
然后进入正在运行的tomcat容器中:docker exec -it 容器id /bin/bash
然后如下:因为我们的webapp文件夹中没有任何东西的。需要将webapps.dist中的东西拷贝进webapp中:

[root@fancentos7 ~]# docker exec -it d485532d6424 /bin/bash
root@d485532d6424:/usr/local/tomcat# ls
BUILDING.txt	 NOTICE		RUNNING.txt  lib	     temp	   work
CONTRIBUTING.md  README.md	bin	     logs	     webapps
LICENSE		 RELEASE-NOTES	conf	     native-jni-lib  webapps.dist
root@d485532d6424:/usr/local/tomcat# 

然后拷贝:cp webapps.dist/* webapps

root@d485532d6424:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@d485532d6424:/usr/local/tomcat# cd webapps
root@d485532d6424:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager

然后网页测试:输入: 自己的centos的ip:8080
出现以下页面代表成功:
在这里插入图片描述

然后我们提交我们修改后的容器:
先ctrl+p+q退出容器:然后查看所有镜像:docker ps

[root@fancentos7 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED          STATUS          PORTS                                       NAMES
d485532d6424   tomcat    "catalina.sh run"   20 minutes ago   Up 20 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   angry_hopper
[root@fancentos7 ~]# docker commit -a="fan" -m="add webapps app" d485532d6424 tomcat02:1.0
sha256:ed78c64646c52df1eb03688af2e319375b602a4a33747cd714551599780d7989
[root@fancentos7 ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
tomcat02              1.0       ed78c64646c5   21 seconds ago   673MB
tomcat                latest    266d1269bb29   6 days ago       668MB
nginx                 latest    dd34e67e3371   7 days ago       133MB
portainer/portainer   latest    580c0e4e98b0   5 months ago     79.1MB
[root@fancentos7 ~]# 

提交的参数如下:
在这里插入图片描述

这样我们的本地镜像就多了一个tomcat2:1.0版本。可以发布了。

本地镜像发布到dockerhub:

第一步去官网注册账号:https://hub.docker.com/

然后在docker服务中登录:

[root@fancentos7 test]# docker login -u fandongdong666
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@fancentos7 test]# 

4、tag修改镜像名称
格式:docker tag nginx:v1 注册的名字/nginx-io:v1

[root@fancentos7 test]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
fantomcat8            1.0       e4cf1aa7651a   2 hours ago    652MB
fantomcat8            latest    e4cf1aa7651a   2 hours ago    652MB
fancentos             1.1       ee8623ecf0b3   3 hours ago    307MB
tomcat02              1.0       ed78c64646c5   10 hours ago   673MB
tomcat                latest    266d1269bb29   6 days ago     668MB
nginx                 latest    dd34e67e3371   8 days ago     133MB
portainer/portainer   latest    580c0e4e98b0   5 months ago   79.1MB
mysql                 8.0.22    d4c3cafb11d5   7 months ago   545MB
centos                latest    300e315adb2f   8 months ago   209MB
[root@fancentos7 test]# docker tag fantomcat8:1.0 fandongdong666/fantomcat8:1.0

推送镜像的规范是:
docker push 注册docker用户名/REPOSITORY:TAG

docker push fandongdong666/fantomcat8:1.0

本地镜像发布到阿里云commit:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

发布自己的镜像的具体步骤:
在这里插入图片描述

第一步:登录到阿里云,https://www.aliyun.com/ 一定要是官网标志
第二步:找到容器镜像服务 控制台

然后点击加号创建个人版的实例:并创建仓库密码

在这里插入图片描述
然后创建命名空间:

然后创建本地仓库:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

docker部署nginx:

第一步:搜索
docker search nginx
第二步:下载镜像
docker pull nginx
第三步:运行镜像,生成容器
docker run -d --name nginx01 -p 80:80 nginx
在这里插入图片描述

第四步:测试
curl localhost:80

-p 3344:80端口暴露的原理:
在这里插入图片描述
在这里插入图片描述

docker部署tomcat:

在这里插入图片描述
第一步:搜索镜像docker search tomcat
第二步:下载镜像 docker pull tomcat
第三步:查看是否下载下来了镜像:docker images
第四步:启动tomcat镜像
注:前者是外围访问端口:后者是容器内部端口
docker run -d -p 8080:8080 tomcat
注:前者是外围访问端口:后者是容器内部端口
如下命令可后台启动tomcat
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

5、查看正在运行的容器

docker ps

Docker 可视化图形界面

在这里插入图片描述

请参考:https://blog.csdn.net/jabony/article/details/90020939

docker 网络:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值