【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挂载到宿主机的当前目录上
- 点赞
- 收藏
- 关注作者
评论(0)