认识Docker?

Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。

源代码托管在Github上,并遵从Apache2.0协议。

Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker是开发,运行和部署应用程序的开放管理平台.开发人员能利用docker开发和运行应用程序, 运维人员能利用docker部署和管理应用程序。

简单来说:Docker就是一种快速解决生产问题的一种技术手段。

为什么使用Docker?
  • 跨环境一致性
  • 降低配置开发环境、生产环境的复杂度和成本
  • 可移植性较强。可在多个平台使用:比如:亚马逊、谷歌、微软等
  • 隔离性。能保证每个容器中的资源隔离性。
  • 实现程序的快速部署和分发

例如:
1,我在本地写代码,可直接通过docker与同事进行共享,实现协同工作。方便。
2,在服务器上删除一些应用程序是很难的,但是docker就不一样了,不会产生依赖关系冲突。
3,在docker写完代码后,可直接进行自动测试和手动测试
4,如果在开发环境中,发现错误的话,直接在开发环境中修改,然后去测试环境中测试和验证
5,如果开发完成之后,交付时,直接交付docker就行了。

docker与虚拟机的区别?

相同点

  • docker与虚拟机一样,都对物理硬件资源共享
  • 而且他们的生命周期基本=相似(创建、启动、暂停、关闭))
  • 他们都可以安装自己的应用,比如mysql,redis,nginx等
  • 同虚拟机一样,创建完容器后,户存在 var/lib/docker/containers

不同点

  • 虚拟机的创建、启动、关闭都是基于一个完整的操作系统,一个虚拟机就是一个完整的操作系统,而docker是直接运行在宿主机上的,所以docker更像是一系列的进程
  • 容器是轻量级的,虚拟机是重量级的,容器的创建、启动和关闭肯定都比虚拟机要执行的效率快得多。
  • 这也就意味着,在给定的硬件上能运行很多个容器,却不能运行太多的虚拟机。

相应的,docker也有一些缺点:依赖网络、依赖操作系统、银行U盾等场景不能用


Docker基础命令?
docker 安装:
查看支持的docker版本
apt-cache madison docker-ce

安装docker
apt-get install docker-ce -y

注:可以指定版本安装docker:
apt-get install docker-ce=<VERSION> -y
启动docker
systemctl start docker
systemctl status docker

注意:
ubuntu安装完毕后,默认就开启服务了
检查docker是否安装成功
sudo docker run hello-world

显示: hello from Docker! 表示已经安装成功

提示:

提示1: 如果不想每次都输入sudo, 执行, sudo usermod -a -G docker $USER 提示2: 如果没有镜像,会去下载

启动,停止docker服务,监测状态

启动

sudo service docker start

停止

sudo service docker stop

重启docker

sudo service docker restart

状态检查

sudo service docker status

容器的管理?

容器就类似于我们运行起来的一个操作系统,而且这个操作系统启动了某些服务。

这里的容器指的是运行起来的一个Docker镜像

容器类操作:

1,查看容器
最简单的命令
docker ps -a 

查看所有运行的容器
docker container ls

查看运行和停止的容器
docker container ls -all
2,查看nginx容器全部信息
docker inspect nginx
3,查看所有的容器编号
docker ps -q
docker ps -a -q
4,运行,停止运行容器、删除容器
运行容器
sudo docker container start 容器名或id

停止容器
docker container stop 容器名或id
docker container kill 容器名或id

删除容器
sudo docker container rm 容器名或id
5,进入创建的容器(myubuntu)
docker exec -it myubuntu /bin/bash
6 ,使用镜像,创建交互式容器
docker run [option] --name=容器名称 镜像 [传入的命的命令]
例如:
docker run -it --name=myubuntu ubuntu 

解释: 使用ubuntu镜像创建交互式容器, 名字为myubuntu
退出容器: ctrl + d
7,通过nginx容器创建nginx:v1.0镜像
docker commit -m 'add ifconfig' -a 'carry' nginx1 nginx:v1.0
8,守护进程nginx
让Docker容器在后台以守护形式运行。此时可以通过添加-d参数来实现
docker run -d nginx

镜像类管理:
Docker镜像是什么?
它是一个只读的文件,就类似于我们安装操作系统时候所需要的那个iso光盘镜像,通过运行这个镜像来完成各种应用的部署。这里的镜像就是一个能被docker运行起来的一个程序

镜像操作:

1,查看所有docker镜像
docker image ls
或者: docker images
2,查看所有docker历史镜像
docker history xxx
3,拉取云端镜像 | 下载镜像(pull)
docker image pull  xxx

搜索镜像: docker image search xxx
4,镜像备份 (tag 原镜像 新镜像)
docker tag hello-world:latest hello-world:v2.0
5,删除镜像
docker rmi xxx
docker image rm 镜像名或id
6,删除未使用的镜像(慎用)
docker image prune
7,导出镜像(save -o)
docker save -o my_hello_world.tar hello-world:latest
8,导入镜像(load -i 本地镜像包)加载本地镜像
docker load -i my_hello_world.tar