zl程序教程

您现在的位置是:首页 >  工具

当前栏目

【docker】docker 总结

Docker 总结
2023-09-27 14:29:28 时间

一.docker常用命令

1.linux安装docker
下载docker

etc/docker
daemon.json  //docker配置文件

sudo systemctl start docker  //启动docker

systemctl restart docker  //重启docker

docker-machine ip default  //查看docker机器ip
2.docker小知识
docker是go语言开发的,使用docker info可以查看具体信息

docker的核心思想是隔离

docker version //查看版本信息

docker  info  //查看具体信息

docker status   //docker状态
3.docker 镜像命令
docker images //查看镜像

docker search  rabbitmq  //搜素镜像

docker pull rabbitmq  //下载最新镜像

docker  pull rabbitmq:3.8.11   //下载指定版本镜像

//删除镜像
docker rmi -f   imgageID
docker rmi -f   imgageID1  imgageID2  imgageID3
docker rmi  -f  $(docker images -aq)

docker 镜像是基于联合文件系统
联合文件系统
	分层
	轻量级
	高性能
4.容器命令
docker run -it -p 9876:9876 09bbc30a03b6 //通过镜像id启动容器

docker run -d -p 9876:9876 h2oai/h2o-open-source-k8s //

docker run --name nginx -p 80:80 -d nginx //通过镜像名字启动容器

docker run --name h2o-k8s -p 54321:54321 -d qyj1992/h2o-k8s

docker run -d -p 80:80 nginx //通过镜像名字启动容器

docker run  参数  image   //运行容器

docker ps  参数  //查询容器列表

docker ps -a   //查看生成的容器   启动+不启动

//退出容器
exit        //停止容器
ctrl+d	    //停止容器
ctrl+p+q   //不会停止容器

docker rm  参数   容器id  //删除容器

docker start  容器id    //启动容器

docker restart 容器id  //重启容器

docker  stop  容器id   //停止容器

docker  kill  容器id   //强制停止容器

docker exec -it 0b342d940801  bash   //进入容器
docker exec -it 8cf03a040bcc   /bin/bash   //windows进入docker容器

docker attach  容器id  //进入容器

docker logs 630f2a370ca9   //查看docker日志

docker  top   容器id  //查看top信息

docker inspect  容器id  //查看元数据信息  比如软连接信息

docker attach   容器id  //进入容器

docker cp /home  容器id:/home   //从宿主机拷贝到容器

docker  cp 容器name:/home   /home    //从容器拷贝到宿主机

docker cp /home/fastai/zzy/test0/result_data2_week_train.csv aigateway:/home/fastai/zzy/test0  /将宿主机文件copy到容器

docker ps --format "{{.Names}}"   //查看容器名称
5.容器数据卷
查看挂载列表信息
docker volume ls

查看挂载信息
docker volume inspect [volume]

挂载操作
docker run -it -v /home/muse/test:/home  centos /bin/bash
 
可以使用docker  inspect 容器id  //查看挂载信息


匿名挂载
docker run -d -P --name nginx1 -v :/ect/nginx  nginx

具名挂载
docker  run  -d -P  --name nginx2 -v nginx2:/etc/nginx  nginx

容器之间的数据卷是互相同步复制备份,而不是共享  说白了就是修改都起作用 删除只是删除自己的
6.DockerFile构建镜像
创建文件DockerFile

构建镜像
docker build -f /home/muse/dockerfiles/dockerfile01 -t muse/centos:1.0 .

启动镜像
docker run -it eb78333356a6 /bin/bash

推送镜像到远程仓库
docker pull  centos:1.0  qyj1992/centos:1.0
7.docker和vm的区别
  1. vm虚拟机是VM OS系统+虚拟机监视器
  2. docker 是docker engine docker引擎
  3. docker是运行在宿主机内核上的,没有自己的内核,小巧
  4. vm是操作系统的虚拟化,docker是内核级别的虚拟化
8.操作全部容器
docker中     所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中    关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中    删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
9.查看日志
#查看末尾3000行
docker logs --tail 3000  e0864b9d33ef 

#滚动最后100行
docker logs -f --tail 100  e0864b9d33ef 

#最后3000带查询
docker logs --tail 3000  e0864b9d33ef  | grep 'sql='

docker logs --tail 10000  e0864b9d33ef  | grep '节点名称=输出'

docker logs --tail 10000  e0864b9d33ef  | grep 'Exception'

#输出到文件
docker logs --tail 1000  e0864b9d33ef   >> logs_error.txt
10.查看docker信息

image-20220330164947217

二.CentOS安装docker

1、CentOS 系统的内核版本

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

uname -r
2、卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker  docker-common docker-selinux docker-engine
3、安装需要的软件包

yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、可以查看版本

所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

img

6、安装docker
sudo yum install docker-ce-17.12.0.ce
7、启动并加入开机启动
systemctl start docker 
systemctl enable docker
8、验证安装

是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

img

docker rm id/name //删除某个容器

docker rmi id/name //删除某个镜像

docker run -d -p 2222:22 --name test soar/centos:7.1 //以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变

9.dockerfile文件

Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。docker build 命令用于使用 Dockerfile 创建镜像。

docker build -f /path/to/a/Dockerfile

Docker以从上到下的顺序运行Dockerfile的指令

  • FROM:指定基础镜像,必须为第一个命令

  • MAINTAINER: 维护者信息

  • RUN:构建镜像时执行的命令

  • ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

  • COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源

  • CMD:构建容器后调用,也就是在容器启动时才进行调用。

  • ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。

  • LABEL:用于为镜像添加元数据

  • ENV:设置环境变量

  • EXPOSE:指定于外界交互的端口

  • VOLUME:用于指定持久化目录

  • WORKDIR:工作目录,类似于cd命令

  • USER:指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

  • ARG:用于指定传递给构建运行时的变量

  • ONBUILD:用于设置镜像触发器

    # This my first nginx Dockerfile# Version 1.0# Base images 基础镜像FROM centos#MAINTAINER 维护者信息MAINTAINER tianfeiyu #ENV 设置环境变量ENV PATH /usr/local/nginx/sbin:$PATH#ADD  文件放在当前目录下,拷过去会自动解压ADD nginx-1.8.0.tar.gz /usr/local/  ADD epel-release-latest-7.noarch.rpm /usr/local/  #RUN 执行以下命令 RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpmRUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean allRUN useradd -s /sbin/nologin -M www#WORKDIR 相当于cdWORKDIR /usr/local/nginx-1.8.0 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make installRUN echo "daemon off;" >> /etc/nginx.conf#EXPOSE 映射端口EXPOSE 80#CMD 运行以下命令CMD ["nginx"]
    

    img

10.删除none镜像

删除none的镜像,要先删除镜像中的容器。要删除镜像中的容器,必须先停止容器。

docker imagesdocker rmi $(docker images | grep "none" | awk '{print $3}')直接删除带none的镜像,直接报错了。提示先停止容器。docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') //停止容器docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') //删除容器docker rmi $(docker images | grep "none" | awk '{print $3}') //删除镜像

三.docker安装nginx

1、下载nginx镜像
docker pull nginx      
2、启动nginx容器
docker run --name nginx -p 3000:3000 -p 3002:3002 -p 8080:8080 -v /root/java/docker/nginx.conf:/etc/nginx/nginx.conf -v /root/java/web:/home -d nginx:stable   
3、nginx配置
user root;
worker_processes  1;

events {
worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    
    sendfile        on;
    keepalive_timeout  65;
    
    #server {
    #    listen       8080;
    #    #server_name  localhost;
    
    #    location / {
    #        proxy_pass http://10.201.1.98:3002;
    #  }
    
    #    error_page   500 502 503 504  /50x.html;
    #    location = /50x.html {
    #        root   html;
    #    }
    #}
    
    
    # abi
    server {
        listen       3000;
        #server_name  localhost;
        
        location / {
            root   /home/abi/build;
            index  index.html index.htm;
        }
        
        location /abi/ {
    	     proxy_pass http://10.201.1.84:8100/;
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   html;
        }
    }
    
    # fast-bi-test
    server {
        listen       3002;
        #server_name  localhost;
        
        location / {
            root   /home/fast-bi/test/build;
            index  index.html index.htm;
        }
        
        location /api/ {
            proxy_pass http://127.0.0.1:8899/;
        }
        
        error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
        }
    }
    
    # fast-bi-poc
    server {
        listen       8080;
        #server_name  localhost;
        
        location / {
            root   /home/fast-bi/poc/build;
            index  index.html index.htm;
        }
        
        location /api/ {
            proxy_pass http://127.0.0.1:8897/;
        }
        
        error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
        }
    }
}
4、示例

image-20210907105556896

5.nginx目录
/usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/
6.nginx命令
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf   //启动

ps -ef|grep nginx
kill -9 nginx    //停止

在目录sbin下
./nginx -s reload    /