【云原生】—— 什么是Docker容器?常见操作指令及如何发布web项目

🌟🌟🌟 ❤️❤️❤️ 🍎🍎🍎
哈喽~大家好,欢迎进入本人【图图是个好孩纸】的博客 🥰🥰🥰

是一名主攻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在我们日常开发中也是非常常见,包括项目的打包,部署啊等等,所以一些常用的操作指令必须熟记于心🤞❣️

📖📖📖 看完还是不懂的小伙伴们,欢迎下方留言~ 📖📖📖

💮💮💮 如果这篇内容对你有用,欢迎点赞收藏加关注 💮💮💮

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图是个好孩纸~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值