推广 热搜: 可以  搜索引擎  page  企业  百度  个数  使用  选择  音视频  行业 

Docker容器化技术实战操作汇总(附开发环境搭建)

   日期:2024-12-30     移动:http://ww.kub2b.com/mobile/quote/10975.html

配置阿里云镜像加速

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

  1. 登录阿里云找到阿里云控制台首页,搜索镜像点击容器镜像服务。
  1. 进入之后点击镜像中心目录下的镜像加速器,选择对应的服务器版本拷贝其配置并执行

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-‘EOF’

{

“registry-mirrors”: [“https://84pkycqd.mirror.aliyuncs.com”]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

  • 没有报错就说明配置完成喽~

底层原理

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

回顾我们安装好执行的 helloWord


Docker 是怎么工作的


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

Docker 为什么比VM快


  1. Docker有着比虚拟机更少的抽象层。

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

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


Docker的常用命令

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

帮助命令


  • 万能的帮助命令

docker 命令 --help

Dcoker 版本信息查看

  • 显示docker的版本信息,最好是启动 docker 服务后查看

docker version

Dcoker 系统信息查看

  • 显示docker的系统信息,包括镜像和容器的数量

docker info

镜像命令


镜像查看

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

docker images

这些列都是什么意思呢?不急下面我们逐一说明。

  1. REPOSITORY 镜像的仓库源

  2. TAG 镜像的标签

  3. IMAGE ID 镜像的id

  4. CREATED 镜像的创建时间

  5. SIZE 镜像的大小

这个命令还有两个常用可选项

  • 列出所有镜像
  • 值显示镜像的id

镜像搜索

  • 这个命令用于从Docker Hub查找镜像。

docker search 镜像名称

可选项,通过搜索来过滤

  • 搜索处理的镜像就是STARS (STARS相当于使用量) 大于3000

下载镜像

  • 从Docker Hub下载镜像到本地。

docker pull 镜像名[:tag]

  • Digest 签名

  • docker.io/library/mysql:latest 真实地址

指定版本下载

删除镜像

  • 删除指定镜像

docker rmi -f 镜像id

  • 删除多个镜像

docker rmi -r 镜像id1 镜像id2 镜像id3

  • 删除全部镜像(这里就涉及到 shell命令了感兴趣的可以查看文章:学妹面前装 “X” 必备,一篇文章教你学会Shell编程~

docker rmi -r $(docker images -aq)

删除时最好通过id来删除保证唯一。这里演示一个就可以了,大家下去自行尝试吧 ~

容器命令


  • 注意,我们要先有了镜像才可以创建容器。

新建容器并启动

docker run [可选参数] 镜像名

参数说明

  • 容器名字 tomcat01 tomcat02 用来区分容器

  • 后台方式运行

  • 使用交互方式运行,进入容器内查看内容

  • 指定容器的端口 -p 8080:8080

从容器退回主机

  • 直接容器停止并退出

exit

  • 容器不停止退出

ctrl + p + q

列出所有运行中的容器

  • 列出当前正在运行的容器

docker ps

可选参数

  • 列出当前正在运行的容器+历史运行过的容器

  • 显示最近创建的一个容器

  • 只显示容器的编号

可以看到现在没有在运行的容器,下面我们加上参数查看一下历史运行过的容器。

删除容器

  • 删除指定的容器,不能删除正在运行的容器

docker rm 容器id

  • 强制删除指定的容器,加上 参数即可

docker rm -f 容器id

  • 删除所有的容器

docker rm -f $(docker ps -aq)

这里只演示了,根据id号删除指定(hello world)容器

启动容器

  • 后台启动容器,没有则创建

docker run -d 容器名|容器id

  • 启动运行过的容器,需要先查看容器的id在根据id启动一个容器。

docker start 容器id

  • 重启容器,和启动容器方法基本一致。

docker restart 容器id

停止容器

  • 停止当前正在运行中的容器

docker stop 容器id

  • 强制停止当前容器

docker kill 容器id

其他命令


查看日志

docker logs -tf --tail 10 容器id

可选参数

  • 显示日志

  • 显示日志条数

查看容器中进程信息

docker top 容器id

查看镜像的元数据

docker inspect 容器id

进入当前正在运行的容器

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

第一种

docker exec -it 容器id /bin/bash

  • docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)

第二种


容器数据卷

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

什么是数据容器卷


  • docker的理念回顾。将应用和环境打包成一个镜像

  • 数据都在容器中,如果我们删除容器,数据就会丢失!需求:数据可以持久化,mysql数据可以存储在本地。

  • 容器之间可以有一个数据共享技术,docker容器中产生的数据,同步到本地

  • 这就是卷技术!目录的挂载,将我们容器内的目录,挂载到linux上面。

总结一句话

使用容器数据卷


  • 使用命令来进行挂载

docker run -dit -v 主机目录:容器内目录

启动成功后可以使用docker inspect 容器id 命令查看详细信息

测试文件的同步,我们现在宿主机上创建test.java文件

然后我们进入容器内查看文件是否存在

再次测试,停止容器,在宿主机上修改文件,启动容器,容器内的数据依旧是同步的

具名挂载匿名挂载


  1. 匿名挂载

docker run -d -P --name nginx01 -v /ect/nginx nginx

  • 查看所有的volume的情况

docker volume ls

这个就是匿名挂载,我们在 -v 后只写了容器内的路径,没有写容器外的路径

  1. 具名挂载

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

查看所有的volume的情况

具名挂载,通过 -v 卷名:容器内路径

  • 查看卷

我们通过具名挂载可以方便的找到我们的一个卷,大多数情况下使用 具名挂载

如何确定是具名挂载还是匿名挂载,还是指定路径挂载

  • 匿名挂载

  • 具名挂载

  • 指定路径挂载

  1. 拓展

通过 -v 容器内路径:ro rw 改变读写权限

  • 只读,只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作的。

  • 可读可写。

一旦设置了容器权限,容器对我们挂载出来的内容就有了限定

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx

d

ocker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx


初识Dockerfile

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

  • Dockerfile 就是用来构建 docker 镜像的构建文件!命令脚本!先体验一下

  • 通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层。

数据卷容器


  • 多个mysql同步数据

DockerFile


  • DcokerFile介绍

构建步骤

  1. 编写一个dockerfile文件
  1. docker build 构建成为一个镜像
  1. docker run 运行镜像
  1. docker push 发布镜像(DockerHub,阿里云镜像仓库)

我们来看一下官方是怎么做的

DockerFile构建过程


基础知识

  1. 每个保留关键字(指令)都必须是大写字母

  2. 执行从上到下顺序执行

  3. #表示注释

  4. 每一个指令都会创建一个新的镜像层,并提交。

  • dockerfile 是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!Docker镜像逐渐成为企业交付的标准,必须要掌握

  • 步骤:开发,部署,运维。。。缺一不可

  • DockerFile:构建文件,定义了一切的步骤,源代码

  • DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品

  • Docker容器:容器就是镜像运行起来提供服务的

DockerFile指令


  • 以前的话我们都是使用别人的,现在我们知道了这些指令后,我们来练习自已写一个镜像

| 指令 | 说明 |

| — | — |

| FROM | 基础镜像,一切从这里开始构建 |

| MAINTAINER | 镜像是谁写的,姓名+邮箱 |

| RUN | 镜像构建的时候需要运行的命令 |

| ADD | 添加内容 |

| WORKDIR | 镜像的工作目录 |

| VOLUME | 挂载的目录 |

| EXPOSE | 保留端口配置 |

| CMD | 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 |

| ENTRYPOINT | 指定这个容器启动的时候要运行的命令,可以追加命令 |

| onBUILD | 当构建一个被继承DockerFile 这个时候就会运行ONBUILD的指令。触发指令。 |

| COPY | 类似ADD,将我们文件拷贝到镜像中 |

| ENV | 构建的时候设置环境变量! |

CMD 和 ENTRYPOINT 区别

  • 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

[root@iZ8vbjbtw24uc8kaw16kvsZ dockerfile]# vim centostest

FROM centos

CMD [“ls”,“-a”]

[root@iZ8vbjbtw24uc8kaw16kvsZ dockerfile]# docker build -f centostest -t cmdtest .

[root@iZ8vbjbtw24uc8kaw16kvsZ dockerfile]# docker run ccf40f4cce18

.

.dockerenv

bin

dev

etc

home

lib

lib64

lost+found

media

mnt

opt

proc

root

run

sbin

srv

sys

tmp

usr

var

[root@iZ8vbjbtw24uc8kaw16kvsZ dockerfile]# docker run ccf40f4cce18 -l

docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: “-l”: executable file not found in $PATH: unknown.

ERRO[0000] error waiting for container: context canceled

  • 指定这个容器启动的时候要运行的命令,可以追加命令

[root@iZ8vbjbtw24uc8kaw16kvsZ dockerfile]# vim dockerfile-cmd-entory

FROM centos

ENTRYPOINT [“ls”,“-a”]

[root@iZ8vbjbtw24uc8kaw16kvsZ dockerfile]# docker build -f dockerfile-cmd-entory -t dockeren .

[root@iZ8vbjbtw24uc8kaw16kvsZ dockerfile]# docker run ffdaffe72ed2 -l

total 56

drwxr-xr-x 1 root root 4096 Mar 31 01:06 .

drwxr-xr-x 1 root root 4096 Mar 31 01:06 …

-rwxr-xr-x 1 root root 0 Mar 31 01:06 .dockerenv

lrwxrwxrwx 1 root root 7 Nov 3 15:22 bin -> usr/bin

drwxr-xr-x 5 root root 340 Mar 31 01:06 dev

drwxr-xr-x 1 root root 4096 Mar 31 01:06 etc

drwxr-xr-x 2 root root 4096 Nov 3 15:22 home

lrwxrwxrwx 1 root root 7 Nov 3 15:22 lib -> usr/lib

lrwxrwxrwx 1 root root 9 Nov 3 15:22 lib64 -> usr/lib64

drwx------ 2 root root 4096 Dec 4 17:37 lost+found

drwxr-xr-x 2 root root 4096 Nov 3 15:22 media

drwxr-xr-x 2 root root 4096 Nov 3 15:22 mnt

drwxr-xr-x 2 root root 4096 Nov 3 15:22 opt

dr-xr-xr-x 96 root root 0 Mar 31 01:06 proc

dr-xr-x— 2 root root 4096 Dec 4 17:37 root

drwxr-xr-x 11 root root 4096 Dec 4 17:37 run

lrwxrwxrwx 1 root root 8 Nov 3 15:22 sbin -> usr/sbin

drwxr-xr-x 2 root root 4096 Nov 3 15:22 srv

dr-xr-xr-x 13 root root 0 Mar 29 05:51 sys

drwxrwxrwt 7 root root 4096 Dec 4 17:37 tmp

drwxr-xr-x 12 root root 4096 Dec 4 17:37 usr

drwxr-xr-x 20 root root 4096 Dec 4 17:37 var

Dockerfile中很多命令都十分的相似,我们需要了解它们的区别,我们最好的学习就是对比他们然后进行测试效果

DockerFile实战测试


  • Docker Hub 中99%镜像都是从这个基础镜像过来的 FROM scratch,然后配置需要的软件和配置来进行构建

创建一个自已的centos

  1. 编写Dockerfile的文件

FROM centos # 基础镜像

MAINTAINER yl1903838739@qq.com # 作者和邮箱

ENV MYPATH /usr/local # 设置环境变量

WORKDIR $MYPATH # 设置工作目录

#下载相关依赖,默认下载的centos镜像是不支持vim和ifconfig指令的,下载了这两个依赖就可以运行vim和ifconfig指令

RUN yum -y install vim

RUN yum -y install net-tools

EXPOSE 80 # 暴露端口

CMD echo $MYPATH

CMD echo “—end—”

CMD /bin/bash # 容器启动时进入/bin/bash目录

  1. 通过这个文件构建镜像

docker build -f dockerfile文件路径 -t 镜像名:[tag]

  • mycentos 是文件名,如果不在文件所在文件夹路径下就要写全路径,mzccentos是自己的镜像名,0.1是版本号,注意后面还有个不能省略。
  1. 测试运行

docker run -it mzccentos:0.1

到这我们自已手写的dockerfile就运行起来了。

列出本地进行的变更历史


docker history 容器id


发布自已的镜像

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

发布到Dcoker Hub


  1. 前往Docker Hub官网注册账号确保可以登录

官网:https://registry.hub.docker.com/

  1. 通过命令行登录我们的DockerHub

docker login -u用户名 回车后输入密码

  1. 修改镜像名称

注意:如果不修改后续push时可能会出现异常

  1. 在我们服务器上提交自已的镜像

docker push 镜像名

  1. 前往Docker Hub 查看

发布到阿里云


  1. 登录阿里云并搜索容器镜像服务
  1. 创建命名空间
  1. 创建容器镜像
  1. 浏览阿里云

5. 推送

#登录阿里云

docker login --username=周周class registry.cn-zhangjiakou.aliyuncs.com

#修改镜像名

docker tag [ImageId] registry.cn-zhangjiakou.aliyuncs.com/mzcck/mzc-java:[镜像版本号]

#推送镜像到阿里云

m/mzcck/mzc-java:[镜像版本号]

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议

  1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力
  2. 项目经历:只写明星项目,描述遵循 STAR 法则
  3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

ermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5oy95ZGo55qESmF2YSBMaWJyYXJ5,size_20,color_FFFFFF,t_70,g_se,x_16)

  1. 创建容器镜像
  1. 浏览阿里云

5. 推送

#登录阿里云

docker login --username=周周class registry.cn-zhangjiakou.aliyuncs.com

#修改镜像名

docker tag [ImageId] registry.cn-zhangjiakou.aliyuncs.com/mzcck/mzc-java:[镜像版本号]

#推送镜像到阿里云

m/mzcck/mzc-java:[镜像版本号]

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议

  1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力
  2. 项目经历:只写明星项目,描述遵循 STAR 法则
  3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

[外链图片转存中…(img-Rsp7MKXI-1716309631532)]

[外链图片转存中…(img-Ka5IcVjd-1716309631532)]

本文地址:http://ww.kub2b.com/quote/10975.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号