【Docker】Docker基础与命令

一、为什么会出现Docker

1. 起因:

  • 一款产品,开发、上线两套环境,因此环境配置是非常麻烦的问题。
  • 传统要求开发打jar包,运维部署环境;现在要求开发打包部署一气呵成。

2. Docker的机制

  • java -> jar包+环境 -> 打包项目和环境(镜像)-> Docker仓库 -> 下载发布的镜像 -> 直接运行即可 
  • Docker的设计思想来源于集装箱,核心的思想是隔离,让每一个项目打包装箱避免冲突。
  • 也正是因为Docker的隔离机制,所以它可以将服务器充分利用到极致。

3. Docker的历史

  • 2010年Dotcloud公司,LXC容器技术,命名为Docker
  • 2013年Docker进行了开源
  • 2014年Docker1.0发布

4. Docker与虚拟机的区别

 Docker容器虚拟机(VM)
操作系统与宿主机共享OS宿主机和VM各自运行OS
存储大小镜像小,便于存储与传输镜像庞大(vmdk,vdi等)
运行性能几乎无额外性能损失操作系统有额外的CPU、内存消耗
移植性轻便,灵活,适用于Linux笨重,与虚拟化技术耦合度高
硬件亲和性面向软件开发者面向硬件运维
部署速度快速,秒级较慢

5. 关于Docker

6. Docker的作用

  • 应用更快速的交付和部署。打包镜像发布测试,一键运行。
  • 更便捷的升级和扩缩容。使用Docker之后部署就类似于搭积木。
  • 更简单的系统运维。容器化之后开发测试环境是高度一致的。
  • 更高效的计算资源利用。Docker是内核级别的虚拟化。

7. Docker的基本组成

  • 镜像(image):类似于一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器。
  • 容器(containers):Docker利用容器技术,独立运行一个或一组应用,通过镜像来创建。
  • 仓库(repository):存放镜像的地方。分为公有仓库和私有仓库。

二、Run流程与Docker原理

1. run之后发生了什么

2. Docker的工作原理

  • Docker是一个c/s结构的系统,Docker的守护进程运行在主机之上,通过socket从客户端访问。
  • DockerServer接收到Docker-Client的指令,就会执行这个命令。

3. Docker为什么比虚拟机快

  • Docker有着比虚拟机更少的抽象层。
  • Docker利用的是宿主机的内核,VM则是需要加载Guest OS,即就是Docker不需要重新加载操作系统内核。

三、帮助命令

docker version :显示docker的版本信息

docker info :显示更加详细的信息,即docker的系统信息,包括镜像和容器的数量

docker 命令 --help :帮助命令

帮助文档的地址:https://docs.docker.com/reference/

四、镜像命令

docker images :查看所有的镜像

-a :列出所有的可选项

-q :仅显示ID

docker search : 搜索镜像

--filter=STARS=3000 :表示搜索出来的结果为星数大于3000

docker pull :下载镜像(默认使用最新版)

docker pull 镜像名[:tag] :下载指定版本的镜像

docker rmi :删除镜像

docker rmi -f 镜像id :删除指定的镜像

docker rmi -f 镜像id 镜像id 镜像id … :删除多个指定的镜像,以空格分隔

docker rmi -f $(docker images -aq) :删除全部的镜像

五、容器命令

注:有了镜像,才可以创建容器

1. 运行容器

docker run [可选参数] image:启动容器

--name="NAME" :容器名字,类似于tomcat01,tomcat02……,用以区分容器

-d :后台方式运行

-it :使用交互方式运行,进入容器查看内容

-p :指定容器的端口

-p ip:主机端口:容器端口

-p 主机端口:容器端口(常用)

-p 容器端口

大P和小p是有区别的,-P:随机指定端口

2. 进入容器并退出 

docker run -it centos /bin/bash :启动并进入容器

exit  :从容器中退回主机

3. 查看运行中的容器

docker ps :当前正在运行的容器

-a :列出当前正在运行的容器+历史运行过的容器

-n=? :显示出最近创建的容器

-q :只显示容器的编号

4. 删除容器

docker rm 容器id :删除指定容器,不能删除正在运行的容器,如果需要那就加上 -f 强制删除

docker rm -f $(docker ps -aq) :删除所有的容器

docker ps -a -q | xargs docker rm :运用管道,删除所有的容器

5. 启动和停止容器的操作

docker start 容器id :启动容器

docker restart 容器id :重启容器

docker stop 容器id :停止当前正在运行的容器

docker kill 容器id :强制停止当前容器

六、其他命令

1. 后台启动容器

docker run -d 镜像名

常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没用应用,就会自动停止。

2. 查看日志

docker logs :查看日志

docker logs -f -t --tail number :查看指定行数日志

3. 查看容器中的进程信息

docker top 容器id :查看进程信息

4. 查看镜像的元数据

docker inspect 镜像id :查看镜像的元数据

5. 进入当前正在运行的容器

docker exec -it 容器id /bin/bash :进入容器后开启新的终端,可以在里面操作

docker attach 容器id :进入容器正在执行的终端,不会启动新进程

6. 拷贝

docker cp 容器id :容器内的东西拷出去

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值