认识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