狂神docker日记
https://blog.csdn.net/huangjhai/article/details/118854733
https://blog.csdn.net/Mr_YanMingXin/article/details/119504925
docker日志命令
1、docker logs -f --tails since="2022-04-15T09:12:00" roc-business-contract-center
2、docker logs -t roc-bussiness-rent | grep -30 '"signTimeEnd":"2022-04-19"'
一、为什么要用docker
一款产品开发到上线,没有docker的时候,开发一般都是打成war包给运维,运维去部署。此时如果出现环境差异,会导致代码部署的时候起不来。并且环境配置也是相当麻烦,换一台机器就要重来一次,费时费力。而docker的作用就是带环境安装,也就是说,软件安装的时候把原始环境一模一样的复制过来。
docker只所以比虚拟机快是因为他是直接利用宿主机的硬件内存什么的,而虚拟机是自己在宿主机上开辟一块内存给自己用,无法最大化利用宿主机的性能
常用docker命令
1、docker 启动命令systemctl start docker
2、查看已有镜像 docker images
3、拉取镜像 docker pull #(#号表示要拉取的镜像名)
4、新建并启动容器 docker run [options] image
options说明 --name“容器新名字”,为容器指定一个名字
-d 后台运行容器,并返回容器id,也即启动守护式容器(如果docker发现没有前台应用,就会自动停止,也就是容器启动的时候发现没有提供服务,就会停止)
-i 以交互模式运行容器,通常与-t同时适用
-t 为容器重新分配一个伪输入终端,通常与-i同时使用
-P 随机端口映射
-p 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
5、删除镜像docker -rmi # (#表示名称id等)
6、退出关闭容器 exit ctrl+p+q 不关闭容器退出
7、查看运行时容器docker ps 查看曾经运行的容器 docker ps -a 查看曾经运行的容器id docker ps -aq (此处的曾经运行的容器包括正在运行的和历史运行的)
8、删除容器 docker rm #(#表示id等,不能删除运行时容器,如果要删除运行时,需要docker rm -f)
9、docker inspect 查看docker源数据
10、docker exec -it 06cd35f9ea4f (进入容器)docker attach 06cd35f9ea4f (exec相当于开启一个新的终端,可以在里面操作,attach进入正在运行的终端)
11、拷贝命令:docker cp 3fe5a65cd9ad:/home/test.java /home/老王 (将容器中的test.java拷贝到宿主机的home/老王文件夹下)
1.docker run
docker run只有在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器的时候,只需要使用命令docker start就可以。
docker run相当于执行了两步操作:将镜像(Image)放到容器(Container)中,这一步过程叫做docker create,然后将容器启动,使之变成运行时容器(docker start)。
2.docker start
docker start的作用是:重新启动已经存在的容器。也就是说,如果使用这个命令,我们必须先要知道这个容器的ID、或者这个容器的名字,我们可以使用docker ps命令找到这个容器的信息。
3.docker stats查看内存使用情况
4、拉下的docker镜像可能缺少了些东西,比如tomcat原生镜像的webapps下的文件夹是空的,这就会导致我们运行tomcat容器就会无法访问,此时我们在容器内把webapp.dist文件夹下的内容拷贝到webapp下就可以,但是我们再次运行还是为空,这时候我们可以把我们修改完毕的容器再次打成一个镜像,运行这个新的镜像就好,我们配置好容器后运行 docker commit - a=" kuangshen" - m= " add webapps app" 7e119b82cff6 tomcat02:1. 0 命令就能把配置好的容器重新打成一个镜像。-a是作者,-m是提交信息,后面的是容器id,然后是名称:tag
5、docker run -it -v 主机目录地址 容器内地址 进行挂载(挂载是个双向的过程,修改主机内文件,如果容器依然存在,即便容器已经停了,容器内文件也会跟着变)
可以通过docker inspect进行查询是否挂载成功
6、mysql安装 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(-e表示修改配置,设置密码为123456)
7、挂载分为匿名挂载和匿名挂载,一般用具名挂载
docker run -d -p 3310:3306 -v 名称:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
这个名称就是具名名称:通过docker volume ls 查看具名挂载的名,通过docker volume inspect 可以查看挂载的目录
数据卷容器,新创建一个docker01的容器,然后docker02的容器继承docker01,此时docker02和docker01数据互通,用的是数据券技术。他是一个拷贝的概念,如果删除了docker01,docker02不影响
docker run -it --name docker02 --volumes-from docker01 kuangshen/centos
二、虚拟机系统和容器的区别
1、传统虚拟机,虚拟出一条硬件.运行一个完整的操作系统 ,然后在这个系统上安装和运行软件
2、容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
3、每个容器问是互相隔离.每个容器内都有一个属于自己的文件系统.互不形响。
三、docker相关知识
1、docker的默认工作路径 /var/lib/docker
四、dockerFile
ONBUILD :当构建一个被继承的DorkerFile时,就会执行一个onbuild命令
COPY :类似add命令,将文件拷贝到目录中
ENV :设置环境变量
ENTRYPOINT和CMD的区别:CMD只有最后一个会生效run的时候如果设置了其他命令,他会替换掉cmd,ENTRYPOINT会追加在后面
FROM centos
MAINTAINER caiminyang<12345>
ENV MYPATH /user/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