【Docker】【基础】基本使用

举报
huahua.Dr 发表于 2021/05/13 19:22:08 2021/05/13
【摘要】 一、基本命令使用1. docker run -d -p 80:80  images_name 后台独立运行一个容器: 参数说明:-d       --在隔离模式下后台运行一个docker容器-p 80:80 --将宿主机的80端口映射到容器的80端口images_name --需要运行的镜像2. Docker exec <container_id>二、docker基本使用制作docker镜像...

一、基本命令使用

1. docker run -d -p 80:80  images_name 后台独立运行一个容器: 

参数说明:

-d       --在隔离模式下后台运行一个docker容器

-p 80:80 --将宿主机的80端口映射到容器的80端口

images_name --需要运行的镜像

2. Docker exec <container_id>

二、docker基本使用

制作docker镜像

镜像的制作有两种方法:

第一种,使用dockerfile文件制作镜像:

  • 制作镜像之前,需要有一个应用程序作为制作镜像的内容,将应用程序包准备好。
  • 制作镜像需要一个dockerfile文件,在准备好的应用程序包根目录下创建一个dockerfile文件。
  • 使用docker build -t images_name .  查找当前目录的dockerfile文件来将该应用程序包编译成指定名字镜像。

第二种,先docker run运行一下基础镜像,在容器中完成应用的部署与启动,再使用docker commit生成镜像。使用这种方式生成的镜像会在k8s中部署会出现问题,不推荐使用

运行应用容器

  • 使用基本运行命令docker run -d -p  src_port: dst_port  images_name,运行上面制作的镜像在一个容器中
  • 在浏览器访问http://localhost:src_port就会访问到刚才打包的应用App入口了
  • 打开docker仪表板或者使用命令docker ps就能看到后台正在运行的应用容器了。
  • 当我们想进去查看某个运行的容器的时候,我们可以使用命令:docker exec <container-id>进入到某个运行容器的环境中。

更新应用容器

当我们需要更新修改应用程序代码的时候,需要重新更新制作应用镜像,并重新运行应用容器;如果我们之间修改代码之后,重新制作镜像,并重新运行容器会出现端口冲突的问题,因为原来的旧容器还在运行,直接重新运行会发生冲突。更新方法是替换原来旧的容器。将旧 的容器给删除掉。

  • 获取需要删除的容器ID,使用docker ps命令获取
  • 停止运行旧的容器,使用命令docker stop <containerId>
  • 停止容器之后,就可以移除该容器,使用命令docker rm <containerId>
  • 也可以使用命令docker rm -f <containerId>,强制停止并删除容器
  • 最后就可以重新运行docker run -dp <src_port> : <dest_port>  <images_name>

共享应用容器

想要共享你的应用容器,首先的将你的镜像给共享出去,共享镜像,则需要docker仓库,docker默认的仓库是Docker Hub,Docker Hub仓库是最大的容器仓库和社区,提供能我们免费访问和使用,我们访问Docker Hub只需要注册一个Docker ID即可。

  • 在Docker Hub上面注册https://www.docker.com/pricing?utm_source=docker&utm_medium=webreferral&utm_campaign=docs_driven_upgrade
  • 登录到Docker Hub,创建一个仓库,自定义个仓库名
  • 共享的话,确保可见性为public,当然也提供私人仓库,供个人或者团队使用
  • 然后就可以使用示例命令:docker push <images_namepace> : tagname将镜像推送到共享仓库中了。
  • 登录docker Hub:docker login - u docker_id
  • 使用docker tag将要推送的镜像名称赋予一个新名称:docker tag <images_name> <docker_id/images_name>
  • 然后可以直接推送镜像了:docker push <dokcer_id/images_name>
  • 共享镜像之后,就可以在别的机子上面直接从你共享的仓库中拉取镜像并运行一个新的应用容器实例。

容器数据持久化DB

当我们运行一个应用容器之后,由于修改代码,重新更新应用容器,会发现之前的操作的数据不见了,为什么每次重启容器之后,数据都被清除掉了?因为每个容器运行之后,都拥有自己的独立文件系统,在其上面创建、更新和删除文件都不会影响到其他容器,使用的知识暂时的存储空间。因此我们需要将应用容器操作的数据保存进行持久化。

docker提供了存储卷volumes对象,每个容器可以利用存储卷可以将容器的文件系统路径连接到宿主机的文件路径,也就是说容器的文件目录装载的是宿主机的文件目录,容器对文件的更改在宿主机上也能看得到,如果重启容器时也是装载相同的目录,则也就共享到原来相同的文件了。docker默认是不使用volumes;使用volume有两种类型:一种是直接命名volumes,另一种是绑定挂载volumes

第一种直接创建并命名volume。

  • 创建一个volumes,通过使用命令:docker volume create <volume_name>
  • 将原来的运行容器都停掉,使用一下命令重新启动容器(增加对volume的使用):docker run -dp <src_port>:<dst_port> -v <volume_name>:/path <images_name>
  • 可以使用docker volume inspect <volume_name> 查看具体的存储信息:

docker volume inspect <volume_name>
[
    {
       
"CreatedAt": "创建时间",
       
"Driver": "local",
       
"Labels": {},
       
"Mountpoint": "数据存储位置",
       
"Name": "命名vulumes的名字",
       
"Options": {},
       
"Scope": "local"
    }
]

第二种:使用绑定挂载vulume

绑定挂载与直接命名volume区别在于:

  • 直接命名volume的存储位置有docker控制,有默认路径,并且可以查看volume信息
  • 绑定挂载存储位置不由docker控制,由我们自己定义

 docker run -dp 3000:3000 \
    
-w /app -v "$(pwd):/app" \
    
<images_name>

参数说明:

-w:设置容器运行的工作目录为/app

-v "$(pwd):/app" :绑定容器的工作目录/app挂载到宿主机的当前目录上

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。