docker

 

 

Docker安装及使用

1、以管理员身份运行PowerShell,执行以下命令:Enable-WindowsOptionalFeature-Online-FeatureName Microsoft-Hyper-V-All(在线安装Windows的虚拟环境)
2、安装Docker
3、管理员PowerShell输入wsl--install,然后重启计算机来安装运行适用于Linux的Windows子系统(WSL)所需的全部内容

4、打开PowerShell,然后在安装新的Linux发行版时运行以下命令,将WSL2设置为默认版本wsl--set-default-version 2

5,Microsoft Stroe安装Liunx子系统
6、安装之后,可以打开PowerShell并运行以下命令检测是否运行成功:docker run hello-world

 

 docker安装完成后下载需要的镜像

查看具体的镜像:
windows中的命令:
docker image ls | findstr hello-world
mac&linux的命令:
docker image ls | grep hello-world

 

docker run -it --name centos_test centos:7.8.2003
#docker run ---》运行镜像
-it:交互式命令
--name:指定运行镜像名称
centos:7.8.2003:要被运行的镜像

一个镜像被运行后,后称为一个容器

使用一个新的控制台,使用命令查看容器运行的记录:
docker ps -a

 

删除容器的记录信息:
docker rm 容器的ID

如果出现无法删除就需要先退出在进行删除

docker stop 容器ID:停止容器
docker rm 容器ID:   删除容器

 

运行完后自动退出

docker run --rm -it --name centos_test centos:7.8.2003

 


删除镜像
1、依据镜像的名称删除
2、依据镜像的ID来删除

 

 

 

 如果遇到无法删除的镜像,说明这个镜像很有可能在运行中这时 就需要先停止它,再删除镜像的运行记录,然后再去删除

具体步骤:

1、在容器中停止它的运行
2、在容器中删除它的记录
3、根据镜像的名字或者ID来删除该镜像

 

docker rmi $(docker images -q) :批量删除所有的镜像(max的命令)
#docker images -q:获取镜像的ID
#$(docker images -q) :返回所有的镜像ID

 镜像导入导出的场景:
异地的办公模式,那么场景就是:异地的开发同学写完代码后,然后把自己的
应用程序打包成镜像,打包成镜像后,发送给测试同学,测试同学运行镜像(前
提是把镜像导入中docker中),镜像运行成功后,等于环境部署成功,可以测试
通许可以开始测试了。

开发同学操作:
开发同学操作:
1、写代码
2、写的代码打包成镜像
A、执行代码的依赖环境(比如写的代码需要在Linux上执行,那么就需要Linux的环境)
B、执行代码本身的环境(比如java的环境需要jdk)
3、把镜像导出
导出命令:docker image save :latest(被导出的镜像) -o (导出的镜像在本本地存储的目录)

 

 

 


4、发送给测试同学

测试同学操作:
1、接收开发发送的镜像
2、导入镜像到docker中(测试接收到镜像文件后,会把镜像文件通过scp命令上传到Linux的服务器(测试环境),然后再导入

导入命令:
docker image load -i (被导入的镜像存储目录)
#导入镜像成功后输出的信息

3、运行镜像docker run -p8080:8080 -d(后台的方式去运行) app

4、验证环境部署是否OK
http://localhost:8081/index#端口为Dockerfile文件中给定的端口
http://localhost:8081/testDev
5、开始测试

  

docker run 镜像名称 这个过程可以理解为:把镜像文件创建成docker容器的一部分,然后再进行启动。特别需要注意的是:
容器内的进程必须是前台运行状态,否则容器直接退出。还有一点特别需要提醒的是:docker run 镜像名 如果镜像文件在本地不存在,
就会在线去下载该镜像的资源信息,如:
docker run -it --rm hello-word

 

 

 

容器命令

在运行镜像中,后面需要带一些指令的信息,这些指令的信息具体汇总为如下: • -d:后台运行
• -it:交互式命令
• --rm:容器挂掉后自动被删除
• --name:给容器起一个名字
• -p:端口映射

 

容器信息的查看:
#linux
docker ps -a | grep 容器ID
#windows
docker ps -a | findstr 容器ID

#查看容器的详细的信息
docker container inspect 容器ID

 

 

 查看容器的日志步骤:
1、运行镜像
docker run -it --rm centos
2、查看运行中的容器的ID信息
docker ps -a
3、获取到容器的ID后,查看容器实时的日志信息
docker logs -f 容器ID

 

 

 docker logs -f 容器ID:查看实时的日志文件内容,如果想退出,就需要按ctrl+c
docker logs 容器ID:一次性查看所有的日志文件内容
docker logs 容器ID | tail -10:查看最新的10行日志文件(日志文件最后的内容)#仅仅适用于Linux的系统

docker logs -f -t --tail 行数 容器ID   #(win系统)-f详细信息-t时间戳
docker logs 容器ID | head -10:查看日志文件最前面的10行

容器提交

容器的提交解决了什么?
解决了容器中安装的环境,但是必须在容器退出前要进行提交,如果没有提交,那么退出后,安装的环境等于再次安装。
退出vim的步骤:
1、按下esc键
2、按下shift+:
3、:后面输入q!,按下回车键,就会退出

容器提交的步骤:
1、运行镜像,到容器后
2、在容器里面进行具体的操作(比如安装软件,比如搭建环境等等),但是容器千万不能退出
3、打开一个新的控制台,查看到容器的ID
docker ps -a
4、对容器进行提交
docker commit 容器ID 镜像新的名称 如下:
docker commit   8642918b44c   centos_vim(注意镜像ID和名称中间有空格)
5、待容器提交成功后,之前的容器进行退出
6、查看所有的镜像,就会发现存在centos_vim的镜像
7、运行新的镜像文件,如:
docker run -it --rm centos_vim

 

 
docker image tag 003d0acb5726(镜像的ID) centos_vim(镜像的名称) #修改镜像的名称
1、如果经常名称是none ,那么就不会复制,直接把none的镜像名称修改为新的镜像名称
2、如果镜像名称不是none,那么在此修改,等价于复制

 

 1、获取nginx的镜像:docker pull nginx
2、端口映射:-p 80(宿主机的端口):80(容器里面的端口)
3、后台方式运行容器:
docker run -d -p 80:80 nginx
4、查询容器的端口:docker port 容器的ID(容器必须运行中
docker port eea35abc9elc

dockerfile

Dockerfile概述
使用dockerfile主要是用于构建docker镜像文件信息,相当于一个脚本,通过dockerfile自己的指令,来构建软件依赖,文件依赖,存储等等情况。
Dockerfile使用
在docker中创建镜像可以分为两个方法,这两个方法具体可以总结为如下:
• 手动修改容器内容,然后docker commit提交容器为新的镜像文件
• 通过在dockerfile中定义一系列的命令和参数构成的脚本,然后这些命令应用于基础镜像,依次添加层,最终生成一个新的镜像,这样就极大的简化了部署的工作。


Dockerfile组成部分
dockerfile的主要组成部分可以汇总为:
• 基础镜像信息
• 制作镜像操作指令 RUM
• 容器启动时执行指令CMD["/bin/bash"]

Dockerfile基本指令

dockerfile的指令主要可以汇总为如下,使用dockerfile的前提是学习会这些指令的基本使用,具体如下: • FROM #指令基础镜像 • MAINTAINER #指定维护者信息,也可以没有
• RUN #具体执行的操作,在命令前面加上RUN即可
• ADD #COPY文件,会自动进行解压
• WORKDIR #设置当前工作目录
• VOLUME #设置卷,挂载主机目录
• EXPOSE #指定对外的端口
• CMD #指定容器启动后需要干的事情
• COPY #复制文件
• ENV #环境变量
• ENIRYPOINT #容器启动后执行的命令

构建镜像

在本地创建一个名为dockerfile的文件(注意这里没有后缀,其他名称无法识别)

文件内容:

FROM centos:7.8.2003
MAINTAINER 晨黎    #作者
ENV name Docker    #定义一个变量,变量的值是Docker
ENTRYPOINT echo "Hello $name"      #运行程序,输出变量的值

在控制台打开这个文件的路径,然后docker build .

build时首次或出现Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them这么一个提示,使用"docker 扫描"对映像运行 Snyk 测试

1、docker scan 输入命令后,再输入y
2、登录到docker hub的账户
docker login 输入后,输入docker hub的账户和密码
3、再次开始构建镜像
docker build -t centos_name -f Dockerfile .

这时就好了。如果无法登录,这时我们在这里登录,后控制台就默认登录成功。

构建成功

 

 

 

在本地常见创建dockerfile文件

文件内容

 

 

 出现这种情况是时 ,先去检查自己的dockerfile文件,这种情况是dockerfile文件出错了在 /bin/sh 查找命令之前,["java",它发现了不能识别的的问题。

 

 

 常用,不能被占用的端口:

80:web默认端口
443:安全协议
25 :邮件服务
22:ssh服务端口

 

ipconfig #查询到IP的地址
ifconfig

 

 

 

 

 

 

 

posted @ 2021-12-22 22:47  晨^O^黎  阅读(928)  评论(0编辑  收藏  举报