1分钟熟悉Docker、命令、数据卷、DockerHub(Docker)

前言:

  1. 为什么要使用Docker?发布一个新项目,以前是Jar包、环境(JDK、Redis、MySQL...)分离部署,常常导致在程序员电脑上的Jar包能运行,去到服务器就不能运行了。现在用了Docker,将Jar包+环境打包在一块形成一个更大的包,直接放到服务器上运行
  2. ------------------常见疑问解答-------------
  3. MySQL、Redis也能打包进去?是的,数据库也能含在Docker包
  4. 如果服务器上有两个数据库MySQL,如果还是用3306端口,岂不是会端口冲突?不会,Docker包与包之间会形成隔离。Docker包部署在现实服务器9001端口,而在9001端口(公网)里面是删减版centos,会有‘删减版os的3306端口’
  5. 若每一个Docker包都装一个MySQL,是不是很浪费空间?不是的,Docker里面有一个联合文件系统,所有镜像都是分层的。通俗说,底层mysql镜像对于不同容器是共用的,数据库的内容加在底层之上,就像地铁出口的商场,商场AB共用一个地铁底层,只需要保持商场的差异化即可(数据库的差异)。而且Docker包里mysql是经过删减的,但这个小mysql保留了使用功能,只是删去了不必要的文件,所以空间占用小。

目录:

  • 了解Docker常用命令
  • 有了镜像(删减版),要把镜像装进容器(包)
  • 上述的镜像都是下载的,那么我们开始设计自己的镜像
  • 上传自己的镜像至DockerHub:Dockerfile(更新中...)

一、了解Docker常用命令

  1. 首先需要掌握Linux基本命令(本号其它文章)。建议实操熟悉命令,与常用的小技巧:(1)Tab自动补全名字;(2)ctrl+c退出;(3)用命令和--help获取提示帮助;(4)镜像id与容器id是不一样的 
  2. ------------------基础命令--------------
  3. docker version;版本信息
  4. docker info;查看当前镜像信息、Docker容器数量
  5. docker --help;显示帮助命令
  6. ------------------镜像命令--------------MySQL镜像=删减版mysql
  7. docker images;查看本地(云服务器)的镜像
  8. docker search mysql;查看Docker官网给出已经删减的MySQL镜像(删减版mysql)
  9. docker pull mysql;下载MySQL镜像(删减版mysql)到本地(云服务器)
  10. docker rmi -f 镜像mysqlid;删除mysql镜像(删减版mysql)
  11. docker rm -f $(docker ps -aq);  删除所有镜像(语句作参数的方式)

--------------------------------有了镜像(删减版),要把镜像装进容器(包)----------------------------------

  1. ------------------容器命令--------------Docker包=Docker容器
  2. 首先理解一个服务的启动流程:(1)下载redis-service服务(2)用config配置文件启动service服务(不同的配置文件能启动不同端口类型的服务)(3)启动服务redis-cli
  3. 概念:这些镜像就像是service服务,但(删减版mysql)怎么运行呢?用run命令,将镜像(删减版mysql)变成可以独自运行的环境(config配置文件都不需要了,但是每次启动都是新的服务--->容器数据卷别的文章讲)。以下以centos为例。
  4. 首先将Centos镜像(删减版)下载下来:docker search centos--->docker pull centos
  5. 启动容器(包):docker run (可选参数)容器的镜像名 /bin/bash;以bash命令启动容器(可选参数:-d 后台方式运行(若没有应用,则会没停止)、-it 交互方式运行即进入容器/包/centos删减版内、-p 容器运行端口(可以做现实端口与容器端口映射如9001:3306,访问了现实的9001,相当于访问了3306)
  6. exit;(在容器内)停止容器并退出容器。注意:退出容器内所有数据都没了,再次启动容器只会启动一个新的容器。但如果做了容器数据卷同步,同步在服务器的文件/文件夹不会消失。
  7. Ctrl+p+q:(在容器内)容器不停止,退出
  8. docker start 容器id;(在容器外)开启运行容器
  9. docker restart 容器id;(在容器外)重启运行容器
  10. docker stop 容器id;(在容器外)停止运行容器
  11. docker kill 容器id;(在容器外)强制停止运行容器(并不是删除)
  12. docker ps (可选参数);(在容器外)查看正在运行的容器(可选参数:-a 曾经全部运行过的容器、-n=1最近使用过的容器)
  13. docker logs -f -t --tail 5 容器id;(在容器外)查看容器最近5条日志
  14. docker top 容器id;(在容器外)查看该容器内的进程
  15. docker inspect 容器id;(在容器外)查看该容器的具体信息,主要看Mounts的数据挂载
  16. docker rm 容器id;(在容器外)删除容器(删减版os),运行时不能删除,除非用 -f 强制删除
  17. docker exec -it 容器id  /bin/bash(在容器外)以后台交互方式进入容器,会显示文件目录,可以在里面设计文件/文件夹
  18. docker attach  容器id;(在容器外)直接进入容器,不会显示文件目录
  19. docker cp 容器id:容器内全路径  本机全路径;(在容器外)拷贝容器内文件到容器外主机(云服务器)
  20. -----------------------测试容器-------------------
  21. 安全组开启3344和宝塔开启防火墙3344(注意:只能开启3000-3500防火墙,若设置范围外会报错):
  22. 启动nginx容器,将外网端口3344与容器端口80进行映射:docker run -d -p 3344:80 nginx
  23. 外网访问成功:

 --------------------------上述的镜像都是下载的,那么我们开始设计自己的镜像------------------------------

  1. docker commit -m "提交的信息" -a 作者 容器id 目标镜像名;提交自己的镜像在本地
  2. ---------以Tomcat为例----------
  3. 安全组开启3345和宝塔开启防火墙3345(注意:只能开启3000-3500防火墙,若设置范围外会报错);
  4. 启动tomcat:docker run -d -p 3345:8080 tomcat
  5. 以交互模式进入容器:docker exec -it e9c1ea9f21e3 /bin/bash
  6. 注意,原应在webapps的所有文件现在都在webapps.dist下,需要拷贝过去:
  7. 现在这个容器已经被修改了,即与原下载下来的tomcat镜像(删减版)有了区别,现在就可以提交自己“设计过”的镜像了。
  8. 提交后,发现我们设计过的镜像,已经保存在了本地:
  9. 以后上传文件到litaotomcat容器内的webapps文件夹下就可以部署网站了!
  10. 到最后,再解释上述的原理就清楚多了:Docker里面有一个联合文件系统,所有镜像都是分层的。通俗说,底层Tomcat镜像对于不同容器是共用的,Tomcat的差异化内容加在底层之上加的,就像地铁出口的商场,商场AB共用一个地铁底层,只需要保持商场的差异化即可(Tomcat的差异),以后添加商场C,用的还是那个地铁底层,差异化的内容可以自己定制。

----------------------------------上传自己的镜像至DockerHub:Dockerfile----------------------------------

  1. 首先注册DockerHub:Docker Hub
  2. 在服务器登录远程DockerHub:
  3. 编写Dockerfile文件:

更新中...

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值