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

镜像(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的默认工作路径

阿里云镜像加速

去阿里云官网查看(免费)

image

helloworld流程

image

底层原理

Docker是怎么工作的?

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过socket从客户端访问

DockerSever接收到Docker-Client的指令,就会执行这个命令

image

Docker为什么比vm快

  1. Docker有着比虚拟机更少的抽象层
  2. Docker利用的是宿主机的内核,vm需要Guest os

Docker的常用命令

帮助命令

docker version 			# 显示docker的版本消息
docker info				# 显示docker的详细信息
docker 命令 --help	   # 万能命令

镜像命令

docker images 查看所有本地的主机镜像

image

docker search搜索镜像

image

docker pull下载镜像

image

docker rmi删除镜像

docker rmi -f 镜像id # 删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker images -ap) #删除全部镜像

容器命令

有镜像才能创建容器
image

列出所有的运行的容器
image

退出容器

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:

进入当前正在运行的容器

# 我们通常容器都是使用后台方式运行,进入容器需要配置一些配置

# 命令

image

# 方式二
docker attach 容器id

从容器内拷贝到主机上

docker cp 容器id:容器内路径	目的的主机路径 

作业练习

Docker 安装 Nginx

# 1.搜索镜像 search
# 2.下载镜像 pull
posted @ 2021-04-07 11:55  luoyansusi  阅读(80)  评论(0)    收藏  举报