Docker 基本安装与使用

一.Docker概述

产品: 开发-到上线 两套环境,应用环境,应用配置!

1.解决 “在我的电脑上可以运行的问题”

2.解决配置开发环境麻烦的问题

3.开发即运维

Docker:jar+环境(镜像) 进行打包 下载镜像,直接运行即可。

Doker的思想来自于集装箱,每一个箱子相互隔离,可以将服务器压榨到极致。相对于虚拟机技术,十分轻巧。

vm:Linux centOS原生镜像(一个电脑),虚拟出一系列的硬件,运行一个完整的操作系统。 隔离需要开启多个虚拟机(笨重)

1.资源占用多

2.冗余步骤多

3.启动很慢

docker:应用直接运行在宿主机的内核中,容器没有自己的内核。隔离(最核心的环境 4m + jdk + mysql) 运行镜像就可以了(秒级启动),每个容器内有一个属于自己的文件系统,互不影响。

官网:Home - Docker

二.Docker安装

Docker的基本组成:

镜像(image):就好比是一个模板,通过这个模板创建容器服务,通过镜像可以创建多个容器。

容器(container):独立运行一个或者一组应用,通过镜像创建,启动,停止,删除基本命令

                                简易的linux系统

仓库(repository): 存放镜像的地方

                                   共有仓库,私有仓库

                                   Docker hub是国外的,国内使用配置镜像仓库

1.环境准备:

        1.CentOS7以上

        2.使用Xshell连接

2.环境查看:

        内核在3.10以上

uname -r

 确认系统版本 :

cat /etc/os-release 

Docker 基本安装与使用_第1张图片

 

3.卸载旧版本:

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

4.下载安装包

 sudo yum install -y yum-utils

 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

 

 

5.设置镜像仓库

 sudo yum-config-manager \
    --add-repo \
   # https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#阿里云

 

6.更新缓存

yum makecache fast

Docker 基本安装与使用_第2张图片

 

7.安装Docker引擎

 #docker-ce 指的是社区版 ee是企业版
 sudo yum install docker-ce docker-ce-cli containerd.io

Docker 基本安装与使用_第3张图片

 选择y直到安装完成

8.启动Docker

 sudo systemctl start docker

 

9.查看Docker版本,确认启动成功

docker version

Docker 基本安装与使用_第4张图片

 

8.用hello - world测试一下

 sudo docker run hello-world

Docker 基本安装与使用_第5张图片

 看到Hello from Docker! 就说明启动成功了

9. 查看docker的镜像

 

10. 卸载Docker

 #卸载依赖
 sudo yum remove docker-ce docker-ce-cli containerd.io
 #删除目录
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd

11.配置镜像加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://el6hwwqp.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

12.Docker执行流程:

1.开始
2.Docker在本机寻找镜像(判断是否有镜像)
	2.1 yes 直接使用这个镜像运行
	2.2 no 从仓库下载镜像 
		2.2.1 判断是否可以在仓库找到镜像
			2.2.1.1 yes 下载镜像到本地
			2.2.1.2 no 返回错误,找不到镜像

13.Docker是怎么工作的:

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

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

14.Docker为什么比VM快:

        1.Docker有比虚拟机更少的抽象层,Docker Engine直接运行在宿主机上,不需要安装虚拟的OS

        2.Docker用的是宿主机的内核,相当于是利用宿主机操作。而vm是Guest OS,分钟级。

三.Docker命令

1.帮助命令

docker version		#查看版本信息
docker info			#查看信息(更多的系统信息,镜像和容器的数量等)
docker 命令 --help	#查看命令帮助

帮助文档地址:Reference documentation | Docker Documentation

2.镜像命令

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

REPOSITORY    #镜像的仓库源
TAG     	  #镜像的标签
IMAGE ID      #镜像的ID
CREATED       #镜像的创建时间
SIZE		  #镜像的大小

通过 doker images --help可以得到其他的可选项:

Options:
  -a, --all             #Show all images (default hides intermediate images)
  						#列出所有的镜像
      
      --digests         #Show digests
      					#列出摘要
  
  -f, --filter filter   #Filter output based on conditions provided
  						#根据提供的条件筛选输出过滤
      
      --format string   #Pretty-print images using a Go template
      					#使用Go模板打印漂亮的图像
      
      --no-trunc        #Don't truncate output
      					#不要截断输出 
  
  -q, --quiet           #Only show image IDs
  						#只显示镜像的ID

3.搜素命令

docker search

搜索mysql:
	docker search mysql
mysql                             MySQL is a widely used, open-source relation…   11880     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4541      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   888       [OK]

#对应了官网上的镜像

docker search --help
Options:
  -f, --filter filter   Filter output based on conditions provided
  						#搜索出来的镜像进行过滤
      --format string   Pretty-print search using a Go template
      					#使用Go模板打印漂亮的图像
      --limit int       Max number of search results (default 25)
      					#最大值限制,结果只显示前X个
      --no-trunc        Don't truncate output
						#不要截断输出 

假设我们要搜索mysql有关的,并且星级大于3000的:

docker search mysql --filter=STARS=3000
	
结果是:
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11880     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4541      [OK]   

 

4.下载命令

docker pull 镜像名 【:版本】

执行:
docker pull mysql

结果:
Using default tag: latest			#如果不写tag,默认就是最新版本
latest: Pulling from library/mysql	
72a69066d2fe: Pull complete 		#分层下载,docker image的核心,联合文件下载:已经下载好的文件可以公用,不再下载
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 #签名(防伪标志)
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址

完全相等
docker pull mysql == docker pull docker.io/library/mysql:latest

Docker 基本安装与使用_第6张图片

 

5.删除镜像

docker rmi -f  容器ID		#指定ID删除
docker rmi -f  容器ID	容器ID 容器ID 容器ID #删除多个容器
docker rmi -f (docker images -aq) #递归删除全部容器

6.容器命令

我们必须先有了镜像,才能创建容器 :

1.下载centOS

docker pull centos

Docker 基本安装与使用_第7张图片

2.新建容器并启动

docker run 命令:

docker run 【可选参数】 image
	#参数说明:
	--name="Name" 	#容器名字 tomact01等,用于区分容器
	-d				#后台方式运行
	-it				#使用交互方式运行,进入容器查看内容
	-p				#指定容器的端口
		-p 			ip:主机端口:容器端口
		-p 			主机端口:容器端口(常用)
		-p 			容器端口
	-P				#随机指定端口

3.列出容器

docker run -it centos /bin/bash			#启动并且进入容器
root@44.../ 						    #主机名就是镜像ID
exit									#退出容器

docker ps								#查看正在运行的容器
docker ps -a							#查看曾经运行过的容器
docker ps -n=? 							#查看最近创建的容器
docker ps -q							#只显示容器的编号

Docker 基本安装与使用_第8张图片

 Docker 基本安装与使用_第9张图片

 

4.退出容器

exit 									  #直接停止容器并退出
快捷键:Control+p+q							#不停止容器退出

通过快捷键的方式,退出容器后,容器依旧在运行

5.删除容器

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

Docker 基本安装与使用_第10张图片

 不能删除正在运行的容器,只能rm -rf强制删除

6.启动和停止容器

docker start 容器id						#启动容器
docker restart 容器id					#重启容器
docker stop 容器id						#停止容器
docker kill 容器id						#杀死容器

Docker 基本安装与使用_第11张图片

 

7.常用的其他命令

1.后台启动命令

docker run -d 镜像名							#后台运行容器
#docker ps 发现服务停止
#常见坑:docker容器使用后台运行,就必须要有一个前台进程。docker发现没前台应用,就会自动停止

2.查看日志

docker logs -f -t --tail 容器id

 

 

3.查看容器中的进程信息

top 命令
docker top 容器id

 

4. 查看镜像中的源数据

docker inspect 容器id

Docker 基本安装与使用_第12张图片 

 

5.进入当前正在运行的容器

#通常容器是使用后台方式运行的,需要进入容器,修改配置
docker exec -it 容器id /bin/bash		#进入容器后开启一个新的终端,可以对里面进行操作
	
docker attach -it 容器id /bin/bash	#进入容器正在执行的终端,不会启动新的进程

Docker 基本安装与使用_第13张图片

 

6.从容器拷贝文件到主机

docker cp 容器id 

Docker 基本安装与使用_第14张图片

 

四.docker常用命令

attach  #当前shell下attach连接指定运行镜像
build   #通过Dockerfile定制镜像
commit  #提交当前容器为新的镜像
cp		#从容器中拷贝指定文件或者目录到宿主机
create  #创建一个新的容器,通run,但是不启动容器
diff 	#查看docker容器变化
events	#从docker服务获取容器实时事件
exec	#已存在的容器上运行命令
export	#导出容器的内容刘作为一个tar归档文件【对应inport】
history #展示一个镜像形成历史
images	#列出系统当前镜像
info	#显示系统相关信息
inspect	#查看容器详细信息
kill	#kill指定docker容器
load	#从一个tar包中加载一个镜像【对应save】
login	#注册或登录一个docker源服务器
logout	#从当前Docker registry退出
logs	#输出当前容器日志信息
port	#查看映射端口对应的容器内部源端口
pause	#暂停容器
ps		#列出容器列表
pull	#从docker镜像源服务器拉取指定镜像
push	#推送指定镜像或者库镜像到docker源服务器
restart	#重启运行的容器
rm		#移除一个或多个容器
rmi		#移除一个或多个镜像【无容器使用该镜像才可删除,否则需要删除相关容器才可继续或-f强制删除】
run		#创建一个新的容器并运行一个命令
save	#保存一个镜像为一个tar包【对应load】
search	#在docker hub中搜索镜像
start	#启动容器
stop	#停止容器
tag		#给源中的镜像打标签
top		#查看容器中运行的进程信息
unpause	#取消暂停容器
version	#查看docker版本号
wait	#截取容器停止是的退出状态值

你可能感兴趣的:(Linux,docker)