docker 入门|简单进阶|docker部署springboot

docker入门

1.docker 安装

环境准备

  1. 会linux基础
  2. centos 7
  3. 使用xshell远程连接服务器

环境查看

#系统内核是3.10以上
[root@izj0370iijl9idz ~]# uname -r
3.10.0-514.26.2.el7.x86_64
#系统版本
[root@izj0370iijl9idz ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装 文档https://docs.docker.com/engine/install/centos/

#1.卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#2.安装需要的安装包
yum install -y yum-utils
#3.设置镜像仓库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
#更新索引命令
yum makecache fast

#4.安装docker相关 docker-ce社区版 ee企业版
yum install docker-ce docker-ce-cli containerd.io
#5.启动docker
systemctl start docker

2.配置阿里云镜像加速

在这里插入图片描述

#创建目录
sudo mkdir -p /etc/docker
#编写配置文件,只需要改地址。
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://d2wrh6xi.mirror.aliyuncs.com"]
}
EOF
#重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker

部署:es+elasticsearch

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

可视化

  • portainer(先用)

什么是portainer?

docker可视化面板

#安装docker
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZdqBy0yw-1616907991338)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20210326152934659.png)]

3.commit镜像

docker commit 提交容器成为一个新的副本

coker commit -m="提交的描述信息" -a="作者"
#启动Tomcat
[root@izj0370iijl9idz ~]# docker ps
CONTAINER ID   IMAGE                 COMMAND             CREATED          STATUS          PORTS                    NAMES
4a4d8cf23de8   tomcat                "catalina.sh run"   30 seconds ago   Up 28 seconds   0.0.0.0:8080->8080/tcp   busy_kilby
d060c3be5331   portainer/portainer   "/portainer"        26 minutes ago   Up 26 minutes   0.0.0.0:8088->9000/tcp   focused_brahmagupta


#exec前台启动 -it 交互模式  容器id  
[root@izj0370iijl9idz ~]# docker exec -it 4a4d8cf23de8 /bin/bash
#docker start 容器id
#docker touch 容器id也可以
root@4a4d8cf23de8:/usr/local/tomcat# 

#测试 启动默认的Tomcat

#发现没有webapps的应用,镜像原因,官方没有

#解决:拷贝Tomcat下webapps的文件
root@4a4d8cf23de8:/usr/local/tomcat# cp -r webapps.dist/* webapps

#自定义镜像  讲修改的容器commit提交变成新的镜像,以后均可使用
[root@izj0370iijl9idz ~]# docker commit -a="cong" -m="add webapps app" 4a4d8cf23de8 tomcat01:1.0
sha256:8663e72b01ce3d767d34022e608bab03e46314d755240ffba4ab6f8fd42118ec

docker进阶

1.容器数据卷

什么是容器数据卷?

docker的理念回顾

将应用和环境打包成一个镜像!

数据?如果数据都存在容器中,那么我们容器删除,数据就会丢死 需求:数据可以持久化

需求:MySQL数据可以储存到本地

容器之间可以有一个数据共享的技术!docker容器中产生的数据,同步到本地!

这就是卷的技术!目录的挂在,将我们容器的目录,挂载到Linux上!

容器的数据和linux同步!容器之间也可以数据共享!

1.1使用数据卷

方式一:直接使用命令挂载 -v

[root@izj0370iijl9idz home]# docker run -it -v /home/ceshi:/home centos /bin/bash

#查看容器详细
[root@izj0370iijl9idz home]# docker inspect 115158541db4

"Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi", //主机地址
                "Destination": "/home",//容器内地址
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

1.2实战:安装MySQL

思考:mysql的数据持久化的问题

#获取镜像
[root@izj0370iijl9idz ceshi]# docker pull mysql:5.7

#运行容器,需要做数据挂载 #安装启动MySQL 需要配置密码
#官方测试
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

#实测
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

远程连接mysql

1.3具名和匿名挂载

#匿名挂载
-v 容器内路径!
docker run -d -P --name nginx01 -v /etc/nginx nginx
#查看所有的卷的名称 匿名卷
docker volume ls

#具名挂载 
# 通过-v 卷名:容器内路径
[root@izj0370iijl9idz data]# docker volume ls
DRIVER    VOLUME NAME
local     dbe649f0bd0124c3eed631e8219f71a7c4054efd1906727f1abb4954aa38e42e
local     f1931ff8ca2c418a453801b7ab80901da0a7495c1bbf57dee5a2c9623af0a783
local     juming-nginx
[root@izj0370iijl9idz data]# 

在这里插入图片描述

所有的docker容器的卷,没有制定目录的情况下都是在 /var/lib/docker/volumes/xxxx/_data

我们通过具名挂载,一般不是用匿名挂载,大多数都是具名挂载

#如何确定是具名挂载还是匿名挂载,还是指定挂载
-v 容器内路径   #匿名挂载
-v 卷名:容器内路径  #具名挂载
-v /宿主机路径::容器内路径  #指定容器路径

拓展

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx[:ro/:rw] nginx
- ro readONLY  #只读
- rw readwrite #可读可写
#一旦设置了容器权限 容器对我们挂载出来的的内容就有限定了
# ro 只能通过宿主机操作,容器内部无法操作

2.初识dockerFile

DockerFile就是用来构建docker镜像的构建文件!脚本命令

通过脚本生成镜像,镜像是一层一层的,脚本一个个的命令,每一个命令都是一层

#dockerfile 文件内容
#指令都为大写
FROM centos

VOLUME ["volume01","volume02"]

CMD echo "-----end------"
CMD /bin/bash

#根据脚本生成镜像
docker build -f dockerfile1 -t cong/centos .

在这里插入图片描述

这个卷和外部肯定有一个数据卷挂载

3.dockerFile

3.1 dockerFile指令

FROM             #基础镜像,一切从这里开始构建
MAINTAINER   	 #镜像是谁写的,姓名+邮箱
RUN				 #镜像构建的时候需要运行的命令
ADD				 #步骤,Tomcat镜像,这个Tomcat压缩包!添加内容
WORKDIR			 #镜像工作目录
VOLUME			 #挂载的目录
EXPOSE  		 #保留端口配置

CMD				 #指定这个端口启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT       #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD			 #当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指定,触发指令
COPY 			 #类似ADD,将文件拷贝到镜像中
ENV				 #构建的时候设置环境变量

3.2 实战测试

DockerHub中99%的镜像都是从这个基础镜像都是FROM scratch,然后配置需要的软件和配置来进行的构建。

创建一个自己的centos

#1.编写dockerfile文件
[root@izj0370iijl9idz dockerfile]# vim mydockerfile
[root@izj0370iijl9idz dockerfile]# cat mydockerfile 

FROM centos
MAINTAINER congge<1141904326@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

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

EXPOSE 80

CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
#2.通过dockerFile构建镜像
docker build -f mydockerfile -t mycentos:0.1 .

Successfully built 088a30021fa1
Successfully tagged mycentos:0.1

#3.测试运行

在这里插入图片描述

4.打包springboot项目到docker

# 1. 上传dockerfile
FROM java:8
COPY *jar /app.jar

CMD ["--server.port=80"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]
# 2. 上传jar包到对应目录
# 3. 运行dockerFile生成镜像
docker build -t panghu .   #panghu为镜像名 要把dockerfile和jar包放在同一个目录下
# 4.执行
docker run -it panghu

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值