docker

狂神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

你可能感兴趣的:(docker)