8.8——Docker安装及使用
Docker概述
Docker容器化
Docker是一个开源的容器引擎,基于Go语言开发
对Docker简单的理解就是使用Docker可以把一台服务器隔离成一个个独立的容器,我们可以把这地方描述的容器理解成一个沙盒。在每个容器中运行一个程序,不同的容器之间相互隔离,容器的创建,停止,以及启动基本都是秒为单位,而且容器对资源的需求也是非常有限的,比起虚拟化的技术而言,可以节约很多的资源成本。在DevOps技术栈体系和可持续交付中占据了重要的位置。
docker安装流程
1、下载docker,根据流程提示安装。
2、docker安装完成后会提示以下图片不关闭下载wsl文件,并安装。
注意:如果电脑是家庭版安装完docker如果没有弹出上面的图需要打开任务管理器看下虚拟化是否开启,然后以管理员的方式打开控制器输入命令:netsh winsocket reset(重置一下,然后)启用虚拟化若还是不行创建一个文本文档输入以下内容
pushd "%~dp0" dir /b %SystemRoot%\servicing\PackagesHyper-V.mum >hyper-v.txt for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages%%i" del hyper-v.txt Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
保存后更改后缀为.cmd 然后打开运行。如果提示磁盘错误可以下载一个rammap可解决。
3、以管理员身份运行PowerShell,执行以下命令(用于打开虚拟环境):
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
4、根据提示进行操作,显示如下界面即表示安装成功。
5、安装之后,可以打开 PowerShell 并运行以下命令检测是否运行成功:docker run hello-world
docker镜像相关命令
使用好处:数据隔离(沙盒环境),可以降低成本。
架构的标准:SAAS+Docker+K8S
1、获取镜像:从docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
- docker pull 镜像名称
docker获取镜像的步骤可以总结为如下:
- 获取该软件的docker镜像,直接可以进⾏搜索,⽐如docker pull nginx
- 运⾏该容器,运⾏成功后可以启动⼀个容器,可以nginx服务就运⾏在⼀个容器⾥⾯了
- 停⽌容器,删除该镜像
2、查看镜像:查看本地所有的镜像
- docker images
- docker images -q #查看所有镜像的id
- docker image inspect 镜像id #查看镜像的详细的信息
- docker images | grep imageName (win系统grep替换为findstr) #过滤出特定镜像信息:
查看所有镜像
C:\Users\刘*>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest b692a91e4e15 7 days ago 142MB
hello-world latest feb5d9fea6a5 10 months ago 13.3kB
centos 7.9.2009 eeb6ee3f44bd 10 months ago 204MB
centos 7.8.2003 afb6fca791e0 2 years ago 203MB
查看所有镜像的id
C:\Users\刘*>docker images -q
b692a91e4e15
feb5d9fea6a5
eeb6ee3f44bd
afb6fca791e0
3、运行镜像(一个镜像被运行后,我们把运行后的程序叫容器)
- -it:开启交互式的命令
- --rm:容器退出时删除容器的记录信息
- --name:指定容器的名称
- -d:后台⽅式运⾏容器
每个镜像运⾏后,都会在容器中存在⼀条记录的信息,查询的指令为:
docker ps -a
C:\Users\刘*>docker run -it centos:7.8.2003
[root@4bcd567a9278 /]# date
Tue Aug 9 09:26:11 UTC 2022
[root@4bcd567a9278 /]# echo "hello world"
hello world
4、删除容器中的记录
①删除未运行的镜像
docker rmi imageName
docker rmi imageID
②删除已在运行中的镜像
镜像运行后在容器中生成一条记录,那么这个删除镜像的逻辑是:
(1)、先停止镜像运行的容器:
docker ps -a #查看运行的容器id
docker stop containerID #停止镜像运行的容器
(2)、删除镜像在容器中的记录:
docker rm containerID
(3)、删除镜像:
docker rmi imageNameID
5、运行镜像并在运行后删除运行记录
docker run -it --rm --name abcd(容器名称)镜像名称
6、通过tag删除镜像
7、通过yum下载LInux镜像执行linux操作命令
例如:
yum install -y lsof
8、镜像复制
9、nginx反向代理
nginx的默认端口是80,Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
- docker pull nginx #获取nginx镜像
- docker run -d -p80:80 nginx
- docker run -d -P nginx