Docker的三要素:镜像,容器,仓库
Docker是利用容器独立运行的一个或一组应用,容器是用镜像创建的运行实例
它可以被启动,开始,停止,删除。每个容器都是相互隔离的,保证安全的平台。可以把容器看作是一个简易版的Linux环境(包括root用户权限,进程空间,用户空间,网络空间等)和运行在其中的应用程序
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器最上面那一层是可读可写的
仓库:是集中存放镜像文件的场所
仓库和仓库注册服务器是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(类似版本号)
仓库分为公开仓库,和私有仓库两种形式
最大的仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内公开的仓库包括阿里云和网易云等
需要正确理解仓储,镜像,容器这几个概念:
Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。
只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板。
Docker根据image文件生成的容器实例。
同一个image文件,可以生成多个同时运行的容器实例。
image文件生成的容器实例,本身也是一个文件,称为镜像文件。
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。
至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中去,需要的时候从仓库拉下来就行。
Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。
容器,是一个运行时环境
Docker镜像的基本命令:
帮助命令
docker version 打印当前docker版本信息
docker info 打印docker更详细的信息,插件信息和镜像信息,和容器数量
docker --help 帮助命令,不会就查这个
镜像命令:
docker images 显示所有的镜像
docker images --help 查看这个命令的帮助信息
##解释
REPOSITORY :镜像的仓库源
TAG :镜像的标签
IMAGE ID :镜像的ID
CREATED :镜像创建时间
SIZE:镜像的大小
##可选项
docker images -a #列出所有的镜像
docker images -q #列出镜像的id
docker images -aq #列出所有的镜像的id
docker search 搜索镜像 ,例如:docker search tomcat
docker pull 镜像名 ,下载镜像 例如:docker pull mysql
指定版本下载镜像
docker pull mysql:5.7
删除镜像
docker rmi -f 镜像ID1 镜像ID2 镜像ID3 删除多个镜像
docker rmi -f 镜像ID 通过ID删除某一镜像
docker rmi -f $(docker images -aq) 通过命令递归删除所有镜像
Docker之容器命令
说明,有了镜像才可以创建容器
创建容器
docker craate --name=容器名称 所在镜像名称
docker craate --name=myTomcat tomcat
启动容器
docker start 容器id
重启容器
docker restart 容器id
停止当前容器
docker stop
杀死容器,强制停止容器
docker kill
查看已运行的容器
docker ps
查看所有的容器
docker ps -a
docker run -it centos /bin/bash ##启动并进入到容器
注意:首先,docker run -it centos 的意思是,为centos这个镜像创建一个容器
-it就等于 -i和-t,这两个参数的作用是,为该docker创建一个伪终端,这样就可以进入到容器的交互模式?(也就是直接进入到容器里面)
后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这个/bin/bash就表示启动容器后启动bash。
创建容器并进入命令行
docker run -it --name=myTomcat tomcat /bin/bash
从容器中退回主机的命令:exit
列出所有运行中的容器:docker ps
列出所有运行中的容器包括曾经运行过的容器:docker ps -a
列出最近创建的容器:docker ps -a -n=1 (最近创建的1个)
只显示容器的编号:docker ps -aq
退出容器:
exit ##停止容器,并退出
Ctrl +P +Q ##容器不停止退出
删除容器
docker rm 容器id ##删除指定容器,不能删除正在运行的容器,强制删除要加 -f
删除所有容器,先停掉容器
docker stop $(docker ps -a -q)
docker rm -f $(docker ps -aq) ##删除所有的容器
常用的其他命令(重要)
启动守护式容器:docker run -d 容器id
docker容器后台运行
查看容器中进程的命令
docker top 容器id
UID 是用户ID
PID 是父ID
PPID 是进程ID
运行容器的命令
docker run 后面的参数
docker run -i 运行容器
docker run -d 守护进程,后台运行
docker run -t 容器启动后,进入命令行
docker run -v 目录映射 --挂载
查看日志命令
docker logs
查看镜像的元数据
docker inspect 容器id
退出容器后,想重新进入当前正在运行的容器
docker exec -it 容器id /bin/bash
或者
docker attach 容器ID
上述两个命令有什么区别呢?attach是直接进容器启动命令终端,不会启动新的进程
exec是在容器中打开新的终端,并且可以启动新的进程
访问tomcat(重点)
启动并作为守护进程
-P 宿主机的端口:容器应用里的端口
war包挂载宿主机 -v 宿主机路径:容器路径
docker exec -it mytomcat6 /bin/bash
docker run -di --name=mytomcat7 -p 5555:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps to