🌟🌟🌟 ❤️❤️❤️ 🍎🍎🍎
哈喽~大家好,欢迎进入本人【图图是个好孩纸】的博客 🥰🥰🥰
是一名主攻Java后端的程序猿,对前端也有一定的了解,未来持续更新更多的【后端技术】&【学习心得】 🔆🔆🔆
如果对【Java后端技术】感兴趣的大可爱或小可爱,欢迎关注【图图是个好孩纸】~ 💕💕💕
🌟🌟🌟 ❤️❤️❤️ 🍎🍎🍎
这时我们可以通过一个容器docker来创建并管理旗下的多个容器,简化配置,还能对代码管道化管理,让每一个服务都运行在自己的vm当中,Docker还提供了跨越这些异构环境以一致性的微环境,将其服务合并,并从开发到部署实现流畅发布
⭐️1、docker容器
🍇什么是docker?
Docker是一个基于LXC技术构建的容器引擎,基于GO语言开发并且遵循Apache2.0协议开源和虚拟机的区别,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上
🍇容器和镜像
Container: 即Docker将宿主机隔开的一个个独立空间
Image :可以看作是一个特殊的文件系统,即对某一时刻容器状态的备份
🍇镜像仓库地址
docker官网:https://hub.docker.com/
阿里云:https://dev.aliyun.com/search.html
🍇运行原理
通过客户端运行指令,比如说你发送一个下载镜像的命令,它会在docker容器里查看有没有这个镜像,如果没有,则会去远程服务器上下载下来并存放本地,这个时候就可以通过本地镜像来去构建容器,所以我们最后运行的是docker中的Containers里的容器
⭐️2、安装docker容器
🍇ubuntu安装
sudo apt-get install docker.io -y #安装docker容器
sudo service docker start #启动服务
sudo docker --version #查看版本
🍇Centos安装
sudo yum install docker -y #安装docker容器
sudo service docker start #启动服务
sudo docker --version #查看版本
sudo systemctl start docker #加入开机启动1步
sudo systemctl enable docker #加入开机启动2步
⭐️3、镜像的操作指令
🍇下载镜像
语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS说明:
- -a:拉取所有 tagged 镜像
- –disable-content-trust:忽略镜像的校验,默认开启
TAG说明:
不同的镜像版本号标志
示例:
sudo docker pull centos:centos7
🍇查看本地镜像
语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS说明:
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- –digests :示镜像的摘要信息;
- -f :显示满足条件的镜像;
- –format :指定返回值的模板文件;
- –no-trunc :显示完整的镜像信息;
- -q :只显示镜像ID。
示例:
sudo docker images
各个列说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
🍇搜索镜像
语法:
docker search [OPTIONS] 镜像名称
OPTIONS说明:
- –automated :只列出 automated build类型的镜像;
- –no-trunc :显示完整的镜像描述;
- -s :列出收藏数不小于指定值的镜像。
示例:
sudo docker search tomcat
各个选项说明:
- NAME:镜像仓库源的名称
- DESCRIPTION:镜像的描述
- OFFICIAL:是否docker官方发布
🍇修改镜像名称
语法:
docker tag IMAGEID NAME:TAG
示例:
sudo docker tag 9f38484d220f centos:latest #把镜像ID叫9f38484d220f的名称改为centos
sudo docker rmi docker.io/centos #删除原有的
🍇删除镜像
语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
- -f :强制删除;
- –no-prune :不移除该镜像的过程镜像,默认移除;
示例:
sudo docker rmi -f tomcat #删除tomcat镜像
sudo docker rmi $(sudo docker images |grep envdm) #删除多个镜像 镜像名包含envdm的
⭐️4、容器的操作指令
🍇生成容器
语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS常用说明:
-
-d: 后台运行容器,并返回容器ID;
-
-i: 以交互模式运行容器,通常与 -t 同时使用;
-
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-
–name=“nginx-lb”: 为容器指定一个名称;
-
-h “mars”: 指定容器的hostname;
-
-m :设置容器使用内存最大值;
-
–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
none无网络,host宿主网络,bridge默认,每个容器独立网络,container容器共用一个网络
-
–expose=[ ]: 开放一个端口或一组端口;
-
–link=[ ]: 添加链接到另一个容器;
示例:
sudo docker run -it -d -p 8080:8080 --name tomcat centos7:
#生成启动容器,端口号8080,容器名称tomcat
🍇容器网络操作
语法:
docker network create 网络名称 #创建网络
docker network ls #列出创建的网络
docker network rm 网络名称 #删除创建的网络
docker network disconnect 网络名称 #禁用连接网络
示例:
#创建一个envdm网络地址192.168.1.1
sudo docker network create --subnet=192.168.1.1/24 envdm
#创建tomcat容器 指定IP192.168.1.8
sudo docker run -it -d --net envdm --ip 192.168.1.8 --name tomcat centos
🍇查看容器
语法:
docker ps [OPTIONS]
OPTIONS常用说明:
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- -s :显示总的文件大小。
示例:
sudo docker ps -a | grep tomcat #查找tomcat容器运行和未运行的都显示
🍇进入容器
语法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS常用说明:
- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
示例:
sudo docker exec -it tomcat /bin/bash #进入tomcat容器
🍇退出容器
语法:
exit
示例:
exit #退出当前容器
🍇停止容器
语法:
docker stop containerId/containerName
示例:
sudo docker stop tomcat #停止tomcat容器
docker stop $(docker ps -a | awk '{ print $1 }' | tail -n +2) #停止所有容器
🍇启动容器
语法:
docker start containerId/containerName
示例:
sudo docker start tomcat #启动tomcat容器,此容器必须存在
docker start $(docker ps -a | awk '{ print $1 }' | tail -n +2) #启动所有容器
🍇删除容器
语法:
docker rm containerId/containerName
示例:
sudo docker rm tomcat #删除tomcat容器
sudo docker rm $(sudo docker container ls -f "status=exited" -q) #删除多个退出的容器
sudo docker rm $(docker container ls -aq) #删除所有容器
🍇拷贝文件到容器
语法:
docker cp 宿主机目录及文件 容器名称:容器目录
示例:
sudo docker cp jdk-8u201-linux-x64.tar.gz tomcat:/home/apps/jdk-8u201-linux-x64.tar.gz
#把宿主机当前目录下的jdk-8u201-linux-x64.tar.gz复制到容器tomcat的/home/apps文件夹下
🍇查看日志
语法:
docker logs [OPTIONS] CONTAINER
OPTIONS常用说明:
- –details :显示更多的信息
- -f, --follow :跟踪实时日志
- –since string :显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
- –tail string:从日志末尾显示多少行日志, 默认是all
- -t, --timestamps :显示时间戳
- –until string :显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
示例:
#查看指定时间后的日志,只显示最后100行
sudo docker logs -f -t --since="2022-06-21" --tail=100 dm_zuul-gateway_1
#查看最近30分钟的日志
sudo docker logs --since 30m dm_zuul-gateway_1
#查看实时日志
sudo docker logs -f dm_zuul-gateway_1
🍇容器打包镜像
语法:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS常用说明:
- -a :提交的镜像作者
- -c :使用Dockerfile指令来创建镜像
- -m :提交时的说明文字
- -p :在commit时,将容器暂停
示例:
sudo docker commit -m "第一个版本" -p tomcat web-demo:latest
#上传时登录失败 安装加密软件
sudo apt install gnupg2 pass -y
⭐️5、发布web项目
🍇下载centos镜像
sudo docker pull centos #下载centos镜像
🍇运行容器
sudo docker run -it -p 8080:8080 --name tomcat centos
🍇复制jdk到容器中去
如果没有apps文件夹需自己进入容器中,使用mkdir创建一个apps文件夹存储
sudo docker cp jdk-8u333-linux-x64.tar.gz tomcat:/home/apps/
🍇复制tomcat到容器中去
sudo docker cp apache-tomcat-8.5.81.tar.gz tomcat:/home/apps/
🍇进入容器
container 是你创建的容器名称,/bin/bash是进入的方式
sudo docker exec -it container /bin/bash
🍇解压JDK和Tomcat文件
tar -zxvf apache-tomcat-8.5.81.tar.gz
tar -zxvf jdk-8u333-linux-x64.tar.gz
🍇删除压缩的JDK和Tomcat文件
rm -f jdk-8u333-linux-x64.tar.gz
rm -f apache-tomcat-8.5.81.tar.gz
🍇配置jdk的环境变量(临时)
如果虚拟机重启或关机,需再次配置一次临时的环境变量
export JAVA_HOME=/home/apps/jdk1.8.0_333
export PATH=$JAVA_HOME:$PATH
🍇查看jdk是否配置环境变量
echo $JAVA_HOME
🍇给Tomcat执行权限
linux文件夹属性:
一个文件有三个权限,分别是读、写和执行 (rwx),它们对应的数分别是4、2和1
而一个文件或文件夹所面对的用户分为3类:所属用户、所属用户的组其他用户以及组外用户
所以777三个数字,就是对应这三个用户对象全部都有读、写、执行权限
举个例子:
如果是所属用户有全部权限、组员有读和执行权限,而组外用户只有读权限,那么数字应该就是754
chmod 777 apache-tomcat-8.5.81/bin
🍇启动Tomcat
./apache-tomcat-8.5.81/bin/catalina.sh start
🍇访问
http://虚拟机IP:8080
🍇打包项目发布
将web项目以war包形式进行打包,使用指令移入你配好的tomcat下的webapps/下,如何重启tomcat即可输入地址打开部署好的项目啦~
总结:
🥰🥰🥰 docker在我们日常开发中也是非常常见,包括项目的打包,部署啊等等,所以一些常用的操作指令必须熟记于心🤞❣️
📖📖📖 看完还是不懂的小伙伴们,欢迎下方留言~ 📖📖📖
💮💮💮 如果这篇内容对你有用,欢迎点赞收藏加关注 💮💮💮