Docker的基本概念
为什么要用docker容器技术
为了提升系统的安全性 把不同的程序和宿主机进行隔离
使得某个程序 应用的执行不会影响到系统本身
docker技术可以实现程序和宿主机的隔离
容器可以理解成对一系列应用程序、服务和环境的封装 从而把程序运行在一个隔离的 封闭的 隐私的空间内 对外整体提供服务
可以把一个容器理解成一个新的电脑 定制化操作系统
镜像:用来创建容器的安装包 可以理解为给电脑安装操作系统的系统镜像
容器:通过镜像来创建的一套运行环境 一个容器内可以运行多个程序 可以理解为一个电脑实例
Dockerfile:制作镜像文件 可以理解为制作镜像的一个清单 类似于maven
镜像仓库:存放镜像的仓库 用户可以从仓库下载现成的镜像 也可以把做好的镜像放到仓库里面
推荐使用docker官方的镜像仓库
docker底层实现原理
太复杂
Docker 运行在linux内核上
CGroups 实现了进程能使用的资源隔离 底层是Linux CGroup命令
能控制进程使用的资源
Network 实现了容器的网络 隔离 docker容器内部的网络互不影响
NameSpace 命名空间 可以那进程给在不同的命名空间下 每个容器可以有自己的命名空间 不同的命名空间下的进程互不影响
Storage 存储空间 容器内的文件是相互隔离 的 也可以去使用宿主机的文件
安装docker
一般情况系 不建议在windows系统上安装docker
Windows本身就自带一个虚拟机叫WSL 但是不推荐在日常使用的电脑上安装
我们要下一个虚拟机
我们在window上安装docker会被告知WSL内核太老
我们要一个专业的 隔离的虚拟机软件
推荐使用虚拟机
我们这边选择的虚拟机是VMware Workstation Pro
这样就算是安装成功
Docker的常用操作
命令行
查看所有docker自带的命令
docker --help
查看具体子命令的用法
docker run --help
拉取镜像 从docker的远程仓库
docker pull hello-world
根据镜像创建容器实例
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
启动实例 得到容器实例containerId
sudo docker create hello-world
目前国区的docker源基本上全挂了
但是我找到了一个
描述信息 - 镜像详情 · OpenAtom Foundation (atomgit.com)
来自开放原子基金会
用控制台打开文件 并进行修改
sudo gedit xxx.yy
我们都是从远程仓库拉取 进行复制 运行
拉取镜像源
sudo docker pull hub.atomgit.com/library/hello-world:latest
有了镜像源后 我们去创建一个docker实例
sudo docker create hub.atomgit.com/library/hello-world:latest
得到一个容器 container id 容器实例id
f8130f7753c987d84e9cf9946f2161ebabfef7f24026e55ba92606fdcd59a57b
之后我们可以查看容器状态
sudo docker ps -a
启动容器 直接用容器名称启动
sudo docker start serene_raman
查看运行日志
sudo docker logs serene_raman
删除容器实例
sudo docker rm serene_raman
删除镜像
sudo docker rmi serene_raman
推送镜像
sudo docker push image