Docker学习
Docker
2010年,几个搞IT的年轻人,就在美国成立了一家dotcloud
做一些pass的云计算服务!LXC有关的容器技术。
他们将自己的技术(容器化)命名 就是docker
Docker刚刚诞生的时候,没有引起行业注意。dotcloud,就活不下去
他们不想放弃Docker,所以开源。
2013年,Docker开源
Docker越来越多的人发现了Docker的优点!火了!每月都更新一个版本
2014年,Docker 1.0发布
Docker是基于GO语言开发
Docker能干嘛
比较Docker和虚拟机计数的不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在 宿主机的内容,容器是没有自己内核的,也没有虚拟自己的硬件,所以就轻便了
- 每个容器是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响
Docker的组成

镜像(image):
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像==>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container):
Docker利用容器计数,独立运行一个或者一个应用,通过镜像来创建。
启动,停止,删除,基本命令
目前就可以把这个容器理解为一个简易的linux系统
仓库(repository):
仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库
Docker hub(默认国外的)
Docker的安装与卸载
根据不同的系统查看不同的安装方法(自行百度)
注意:使用国内镜像,官方是国外镜像
测试docker
# hello-world
docker run hello-world
查看镜像
# 查看下载的镜像
docker images
卸载Docker
# 卸载依赖
yum remove docker-ce docker-ce-cil containerd.io
# 删除资源
rm -rf /var/lib/docker
# /var/lib/docker docker的默认工作路径
阿里云镜像加速
去阿里云官网查看(免费)

helloworld流程

底层原理
Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过socket从客户端访问
DockerSever接收到Docker-Client的指令,就会执行这个命令

Docker为什么比vm快
- Docker有着比虚拟机更少的抽象层
- Docker利用的是宿主机的内核,vm需要Guest os
Docker的常用命令
帮助命令
docker version # 显示docker的版本消息
docker info # 显示docker的详细信息
docker 命令 --help # 万能命令
镜像命令
docker images 查看所有本地的主机镜像

docker search搜索镜像

docker pull下载镜像

docker rmi删除镜像
docker rmi -f 镜像id # 删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker images -ap) #删除全部镜像
容器命令
有镜像才能创建容器

列出所有的运行的容器

退出容器
exit #直接容器停止并退出
ctrl + P + Q #容器不停止退出
删除容器
docker rm 容器id # 删除指定容器,不能删除正在运行的容器,可以rm -f 强制删除
docker rm -f $(docker ps -aq) # 删除所有容器
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
常用其他命令
后台启动容器
# 命令 docker run -d 镜像名
docker -d centos
# 问题docker ps 发现 centos 停止了
# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx ,容器启动后,发现自己没有提供服务,就会立刻停止,没有程序了
查看日志
docker logs -f -t --tail 容器,没有日志
# 自己编写一段shell脚本
docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
# docker ps
CONTAINER ID IMAGE
dawdas24134 centos
# 显示日志
-tf # 显示日志
--tail number # 要显示日志条数
docker logs -tf --tail 10 dawdas24134
查看容器中进程信息ps
top命令
# 命令 docker top 容器id
docker top dawdas24134
UID PID PPID C STIME TTy CMD
root 2235 2184 0 Mar10 00:00:39 php-S 0000:
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行,进入容器需要配置一些配置
# 命令

# 方式二
docker attach 容器id
从容器内拷贝到主机上
docker cp 容器id:容器内路径 目的的主机路径
作业练习
Docker 安装 Nginx
# 1.搜索镜像 search
# 2.下载镜像 pull
浙公网安备 33010602011771号