zoukankan      html  css  js  c++  java
  • Docker笔记二:Docker拷贝,提交,进入容器和阿里云加速

    前言

    笔记一介绍了Docker的安装,以及镜像,容器的启动,删除,下载等,本章节记录一些操作

    笔记二之后的Docker内容都参考哔哩哔哩的up主:狂神说Java的Docker视频,在此贴出他的主页,推荐去看看,讲的是真的好

    狂神说Java

    常用

    Docker阿里云加速

    默认的国外镜像死慢,用了阿里云速度飞起,强烈建议使用阿里云

    直接执行

    vim /etc/docker/daemon.json
    

    第一次应该是没有的,是空的,复制下面的粘贴进去

    {
    	"registry-mirrors": ["https://f1z25q5p.mirror.aliyuncs.com"]
    }
    

    然后按下ESC,输入冒号,wq保存退出,这是vim的基本操作

    最后重启一下Docker即可

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    删除全部的镜像或容器

    docker images -q是查看所有的镜像Id,使用$()作为变量传进去,即可删除所有的镜像

    docker rmi -f $(docker images -aq)
    

    同样删除所有的容器也是

    docker rmi -f $(docker ps -aq)
    

    进入容器内的2种方式及区别

    第一种方式是exec

    docker exec -it 容器id bash
    

    第二种方式是attach

    docker attach 容器id
    

    区别

    1. exec 进入容器后开启了一个新的终端,可以操作
    2. attach进入容器正在执行的终端

    如果我这个容器在做些什么事,例如不停的在打印日志,exec进去之后由于是新终端不受影响,attach就惨了,一直看到在打印日志,想干点啥都不行

    所以,推荐使用exec的方式

    退出容器回到主机有2种方式

    1. exit : 退出容器,回到主机,此时容器也停止了
    2. ctrl + p + q : 退出容器,回到主机,此时容器还在运行

    Docker日志

    后面跟着容器Id即可,如果不指定tail数量的话,会显示所有的日志,太多了

    docker logs -tf --tail 10 f82267cbb532
    

    查看容器中的进程信息

    docker top mysql
    

    查看容器信息

    docker inspect mysql
    

    容器和主机之间拷贝数据

    经常有这种情况,开发的时候,一张图片啥的忘了发布到容器里了,你说我为了一张图片就重新打包发布容器,还不如之间拷贝近容器呢

    关于拷贝有两种情况

    容器内拷贝到主机

    容器内的test.java文件拷贝到主机的home目录下

    docker cp 容器id:/home/test.java /home
    

    主机拷贝到容器内

    
    

    各种启动

    测试启动是否成功,可以用浏览器访问,也可以使用

    curl localhost:9200
    

    Docker启动Mysql

    docker run --restart=always  --name mysql   -p 3306:3306 -e MYSQL_ROOT_PASSWORD=test123  -d mysql  mysql
    

    如果遇到了启动mysql就退出的情况,使用 --restart即可alway是始终重启

    但是这样我的mysql状态一直是restart,而不是run,我主机上连不上Mysql

    刚开始我以为是防火墙的问题

    ##Centos7 防火墙打开端口号
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
     
    #下面3行是参数说明
    #–zone				        #作用域
    #–add-port=80/tcp		#添加端口,格式为:端口/通讯协议
    #–permanent			        #永久生效,没有此参数重启后失效
     
    #重启防火墙后看看是否生效
    firewall-cmd --reload		#重启firewall
    firewall-cmd --list-ports	#查看已经开放的端口
     
    #如果想永久停止防火墙,执行下面操作
    systemctl stop firewalld.service         #停止firewall
    systemctl disable firewalld.service      #禁止firewall开机启动
     
    #查看防火墙状态
    firewall-cmd --state
    

    然后我开启了3306,但是还是连不上,这个时候查出来的说可能是root默认本地连接,需要开启远程连接

    但是进不去mysql容器,说不是在run,一直在restart,所以进不去容器

    我只好删了这个mysql容器,然后重新启动

    docker run --name mysql   -p 3306:3306 -e MYSQL_ROOT_PASSWORD=test123 mysql
    

    我删除了一直restart,也删除了-d后台运行,这才可以了

    Docker启动nginx

    docker pull nginx
    docker run --name nginx -p 80:80 -d nginx 
    

    Docker启动Tomcat

    docker pull tomcat
    docker run --name tomcat -p 8080:8080 -d tomcat 
    

    然后直接访问8080端口发现,404未找到,这个是因为我们已经配置了阿里云的镜像,阿里云默认下载的Tomcat是最精简的,webapps目录下啥都没有

    docker exec -it tomcat bash
    

    进入之后,ll都用不了,使用ls -a发现webapps下面是空的

    webapps下面是空的,webapps.dist下面却是有内容的,直接把dist下的东西拷贝到webapps下即可

     cp -r webapps.dist/* webapps
    

    然后再访问8080,成功了

    Docker启动ElasticSearch

    ElasticSearch默认是1个G的内存,所以启动的时候最好限制一下内存大小

    docker pull elasticsearch
    
    docker run --name elasticsearch -p 9200:9200  -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m"  -d elasticsearch 
    

    使用-e来限制最小,最大内存

    Docker可视化

    介绍几个Docker的可视化工具,其实敲命令挺好的

    portainer

    直接docker pull 安装运行,然后浏览器访问,我这不写了,反正我喜欢敲命令,可以网上找文章参考

    Docker Commit

    就是提交镜像,还是拿Tomcat为例吧,我阿里云下载的Tomcat,webapps里面没有东西

    我从dist复制到webapps文件夹下面了,然后我把这个改过的Tomcat重新commit了一次,成为了一个新的镜像,这个时候我docker images可以看到两个Tomcat,我commit的命名是tomcat1,版本1.0

    #把我改过的tomcat commit一下
    docker commit -a "vae" -m "tomcat is run ok" 50a7091b7fcf tomcat1:1.0
    
    #我把原来的tomcat删了,启动我commit的这个新的tomcat1
    docker run --name tomcat -p 8080:8080 -d tomcat1:1.0
    

    其实这个commit就是提交的意思,提交到了镜像,我也可以push到DockerHub或者阿里云的,后面讲

  • 相关阅读:
    用到的一些方法
    Android屏蔽Home键
    Android自定义GridView显示一行,并且可以左右滑动
    模糊匹配字母大小写
    Android四大组件之Content Provider的学习
    用于小数据存储的SharedPreferences
    Android小知识点
    【译】用C/C++操作链表
    和好友的QQ记录,多关注哈需要关怀的人
    岁不待人_20080321
  • 原文地址:https://www.cnblogs.com/yunquan/p/12953622.html
Copyright © 2011-2022 走看看