怎么理解Docker:
官方解释的解释是docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。通俗意义上的理解,可以将docker理解成运行在操作系统上的软件,与通过 VMware Workstation 来虚拟化出一套硬件不同的是,docker容器内的应用程序时直接运行于宿主机的内核,容器没有自己的内核,也不会对硬件进行虚拟。相反通过VM虚拟化的它将基于你的电脑的硬件资源与之相应的虚拟一套出来,并且还要在上面运行完整的操作系统。回想一下,是不是你在插入 U 盘时如果你开启着通过VM虚拟出来的虚拟主机,它会提示你选择接入到虚拟机上面还是你的电脑上面。

Docker的三大部分:
镜像(image)
docker镜像就好比是一个只读的模板 ,可以通过这个模板来创建容器服务,用来打包软件运行环境和基于运行环境开发的软件,它包含了运行某个软件所需要的所有内容。tomcat镜像===>run ==> tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。可以想象一下在 window 上配置 java 的运行环境,首先要有个 IDE 还要下载 JDK 再要配置好环境变量,麻烦得要死,可是如果要有一个技术将这一切都打包成一个镜像,再发送给你,你就可以直接运行,这不就方便很多。
容器(container):Docker利用容器技术,独立运行一个或者一个组应用 ,通过镜像来创建的。启动,停止,删除,基本命令!目前就可以把这个容器理解为就是一个简易的linux系统,就像docker的logo鲸鱼上的集装箱似的且每个集装箱都是独立的!
仓库(repository):仓库就是存放镜像的地方!仓库分为公有仓库和私有仓库!Docker Hub (默认是国外的)

安装Docker

1、需要的安装包

yum install -y yum-utils

2、设置镜像仓库

yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo    # 阿里云镜像地址

3、安装docker的相关 docker-ce 社区 ee企业版
yum makecache fast //更新软件包索引

yum instal1 docker-ce docker-ce-cli containerd.io

4、启动docker

systemctl start docker 
docker version # 查看是否安装成功

5、测试启动hello-world镜像

docker run hello-world

6、查看镜像

docker images
1) 卸载docker
yum remove docker-ce docker-ce-cli containerd.io
2) 删除资源
rm -rf /var/lib/docker

7、阿里云镜像加速

登录阿里云

找到镜像加速地址

docker的理解使用 docker简单理解_linux


配置使用

docker的理解使用 docker简单理解_docker_02

回顾HelloWorld流程

docker的理解使用 docker简单理解_centos_03


docker的理解使用 docker简单理解_linux_04

底层原理

Docker是什么工作的?

Docker是- -个Client - Server结构的系统, Docker的守护进程运行在主机上。通过Socket从客户端访问 !DockerServer接收到Docker-Client的指令,就会执行这个命令!

docker的理解使用 docker简单理解_linux_05


Docker为什么比VM快?

1、Docker有着比虛拟机更少的抽象层。

2、docker 利用的是宿主机的内核, vm需要是Guest OS。

docker的理解使用 docker简单理解_linux_06


所以说,新建一个容器的时候, docker不需要想虚拟机-样重新加载一个操作系统内核 ,避免引导。虚拟机是加载GuestOS ,分钟级别的,而docker是利用宿主机的操作系统吗,省略了这个复杂的过程,秒级!|

Docker常用命令

帮助命令

docker version  #显示docker的版本信息
docker info   #显示docker的系统信息,包括镜像和容器的数量
docker命令--help #万能命令

帮助文档地址:

https://docs.docker.com/reference/

镜像命令

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

[root@kuangshen /]# docker images
REPOSITORY     TAG     IMAGE ID      CREATED         SIZE
hello-world  latest   bf756fb1ae65   4 months ago   13. 3kB
#解释
REPOSITORY  #镜像的仓库源
TAG   #镜像的标签
IMAGE ID   #镜像的id
CREATED   #镜像的创建时间
SIZE     #镜像的大小
#可选项
-a,--a11  #列出所有镜像
-q,--quiet   #只显示镜像的id

docker search搜索镜像

[root@kuangshen /]# docker search mysq1
NAME                    DE SCRIPTION                                     STARS
OFFICIAL      AUTOMATED
mysq1                   MySQL is a widely used, opensourcerelatin..      9494
[OK]
mariadb                 MariaDB is a community-developed fork of MyS..   3441
[OK]

#可选项,通过搜藏来过滤
--filter=STARS=3000   #搜索出来的镜像就是STARS大于3000的

docker pull下载镜像

docker的理解使用 docker简单理解_Docker_07


docker的理解使用 docker简单理解_linux_08


docker的理解使用 docker简单理解_Docker_09


docker rmi 删除镜像

[root@kuangshen /]# docker rmi -f容器id                     #划除指定的容器
[root@kuangshen /]# docker rmi -f容器id容器id容器id容器id     #删除多个容器
[root@kuangshen /]# docker rmi -f S(docker images - aq)     #删除全部的容器

容器命令

说明:我们有了镜像才可以创建容器, linux,下载一个centos镜像来测试学习

docker pu11 centos

新建容器并启动

docker run [可选参数] image
#参数说明
--name="Name"     容器名字,tomcat01 tomcat02, 用来区分容器
-d                后台方式运行
-it         	  使用交互方式运行,进入容器查看内容
-p         		  指定容器的端口-p 8080:8080
	-p ip:主机端口:容器端口|
	-p主机端口:容器端口 (常用)
	-p容器端口
容器端口
-p		          随机指定端口
#测试,启动并进入容器
[root@kuangshen /]# docker run -it centos /bin/bash
[root@e4eccc01b495 /]# 1s # 查看容器内的centos。基础版本,很多命令都是不完善的!
bin dev etc home 1ib 1ib64 lost+found media mnt opt proc
root run sbin  srv sys tmp usr var
#从容器中退回主机
[root@e4eccc01b495 /]# exit
exit

列出所有运行的容器

# docker ps命令
	#列出当前正在运行的容器
-a  #列出当前正在运行的容器+带出历史运行过的容器
-n=? 	#显示最近创建的容器
-q	#只显示容器的编号

退出容器

exit 	#直接容器停止并退出
Ctr1 +P+ Q	#容不停止退出

删除容器

docker rm容器id		#删除指定的容器,不能删除正在运行的容器,如果要强制删除rm -f
docker rm -f $(docker ps -aq)	#删除所有的容器
docker ps -a -q | xargs docker rm	#删除所有的容器

启动和停止容器的操作

docker start容器id			#启动容器
docker restart 容器id		#重启容器
docker stop容器id			#停止当前正在运行的容器
docker ki11容器id			#强制停止当前容器

常用的其他命令

后台启动容器

#命令docker run -d镜像名!
[root@kuangshen /]# docker run -d centos
#问题docker ps,发现centos停止了
#常见的坑: docker 容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用, 就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

docker' logs -f -t --tai1
#显示日志
-tf		#显示日志
--tail number	#要显示日志条数

查看进程信息

docker的理解使用 docker简单理解_docker的理解使用_10


查看镜像元数据

docker inspect 容器id

进入当前正在运行的容器

docker的理解使用 docker简单理解_docker的理解使用_11


docker的理解使用 docker简单理解_Docker_12


从容器内拷贝文件到主机上

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

举例:

docker的理解使用 docker简单理解_docker_13


docker的理解使用 docker简单理解_linux_14

============================================================================

docker的理解使用 docker简单理解_docker_15


docker的理解使用 docker简单理解_centos_16


docker的理解使用 docker简单理解_docker的理解使用_17