一、docker基本概念
img
docker
是由google
公司推出的go
语言进行开发实现的,基于Linux
内核,隔离的进程独立于宿主和其他的隔离进程,即成为容器。
与虚拟机的区别:
虚拟机是虚拟一套硬件后,在其上运行一个完整操作系统,会独占一部分内存。然后在该系统上再运行所需应用进程;
容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也不需要进行硬件虚拟,占用的资源少,体积小;启动容器相当于启动本机的一个进程,速度上就会快很多。
传统虚拟化
Docker
三个基本概念:
-
镜像(image)
可以看成是一个只读的模板,可以被重复使用多次,每个镜像都可以包含一个简易的Linux操作系统。
镜像是用来创建容器的。镜像相当于对象中的类,而容器为实例。
容器(container)
容器是由镜像创建的运行实例,容器是由一个简易的Linux操作系统和运行在其中的应用程序组成的仓库
集中存放镜像的场所,分为公有和私有的仓库,可以将自己的镜像push到仓库,要用的时候pull下来
二、docker的常用命令
(1)镜像
- 查看镜像
docker images
- 获取镜像
docker pull xxx
docker pull nginx
docker pull registry.hub.docker.com/nginx //可以指定仓库
(2)容器
- 查看运行中的容器
docker ps
image-20200116170420602.png
container_id: 容器的标识id, names: 容器的名称
- 查看所有包含终止运行的容器
docker ps -a
- 运行容器
docker run -d --rm --name myNginx -p 8080:80 nginx
使用run时,每执行一次,就会新建一个容器,如果想运行已有的,则可以改为
docker run myNginx
参数说明:(参数可选)
-d 后台运行
--rm 在容器停止运行之后自动删除容器文件
--name 设置名字,这样做的好处就是可以直接指定名字操作容器,不一定用ID
-p 映射宿主和容器内的网络,假设有8080:80,即外面使用8080端口映射内部的80端口
- 进入容器的bash
docker exec -it myNginx bash
参数说明:
exec 当第一次使用run的时候,还未进行一些操作,就可以使用这个
-it .... bash 进入容器,可以在容器操作shell命令
- 只执行一次容器内的shell命令
docker exec myNginx cat /etc/nginx/conf.d/default.conf
此命令为在宿主查看容器内
nginx
的配置文件内容
- 将宿主的文件挂载到容器内
docker exec -v /dist:/usr/share/nginx/html/ myNginx
-v 挂载
将当前目录下的dist文件挂载到容器路径/usr/share/nginx/html/下
- 生成容器
(1)使用Dockerfile文件创建的方式
docker build -t my:1.0.0 .
(2)使用命令
docker commit myNginx test/my:1.0.0
- 发布镜像
push到私有docker hub仓库
docker build -t my .
docker login(先登录)
docker tag my username/my:1.0.0
docker push username/map:1.0.0