首页 > 其他分享 >docker

docker

时间:2024-06-01 13:00:35浏览次数:21  
标签:容器 -- nginx 镜像 docker Docker

  一、什么是Docker

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:
依赖关系复杂,容易出现兼容性问题
开发、测试、生产环境有差异

什么是Docker
Docker和虚拟机的区别
Docker架构

Docker如何解决依赖的兼容问题的?
将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
将每个应用放到一个隔离容器去运行,避免互相干扰

Docker如何解决不同系统环境的问题?
Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包


镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

Docker和DockerHub:

Docker是一个CS架构的程序,由两部分组成:
服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令

DockerHub:DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。
国内也有类似于DockerHub 的公开服务,比如 网易云镜像服务、阿里云镜像库等。

镜像:将应用程序及其依赖、环境、配置打包在一起
容器:镜像运行起来就是容器,一个镜像可以运行多个容器
Docker结构:
1.服务端:接收命令或远程请求,操作镜像或容器
2.客户端:发送命令或者请求到Docker服务端
DockerHub:一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry

 

  二、安装Docker

安装Docker 108M

启动docker


测试安装成功:
systemctl status docker (active running)
docker -v 查看版本

通过命令启动docker:
systemctl start docker # 启动docker服务

systemctl stop docker # 停止docker服务

systemctl restart docker # 重启docker服务

--镜像加速,需要下载镜像:
docker 下载镜像; 使用docker
docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors


镜像操作
容器操作
数据卷(容器数据管理)

  三、镜像操作

案例一:拉取镜像,和查看镜像;
镜像相关命令
镜像名称一般分两部分组成:[repository]:[tag]。
在没有指定tag时,默认是latest,代表最新版本的镜像
案例二:导出到 磁盘 ,然后再导入;

docker save --help
docker images
docker save -0 nginx.tar nginx:latest

docker rmi nginx:latest 删除 镜像;

docker load --help
docker load -i nginx.tar

查看 docker images
docker 镜像操作有哪些?

docker images
docker rmi
docker pull
docker push
docker save
docker load

练习:去DockerHub搜索并拉取一个Redis镜像:
1.去DockerHub搜索Redis镜像
2.查看Redis镜像的名称和版本 docker images
3.利用docker pull命令拉取镜像
4.利用docker save命令将 redis:latest打包为一个redis.tar包
5.利用docker rmi 删除本地的redis:latest
6.利用docker load 重新加载 redis.tar文件

  四、容器操作
镜像创建容器 :运行,暂停,停止;

docker pause 运行=>暂停
docker unpaose 暂停=>运行

docker start 停止=>开始
docker stop 开始=>停止
docker run

docker logs 查看容器运行日志
docker ps 查看所有运行的容器及状态
docker exec 进入容器执行命令

--案例一:创建运行docker 容器:创建运行一个Nginx容器

步骤一:去docker hub查看Nginx的容器运行命令
docker run --name containerName -p 80:80 -d nginx

命令解读:
docker run :创建并运行一个容器
--name : 给容器起一个名字,比如叫做mn
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端

--案例二:进入Nginx容器,修改HTML文件内容,添加“欢迎您” 传智教育

步骤一:进入容器。进入我们刚刚创建的nginx容器的命令为:
docker exec -it mn bash
命令解读:
docker exec :进入容器内部,执行一个命令
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
mn :要进入的容器的名称
bash:进入容器后执行的命令,bash是一个linux终端交互命令
步骤二:进入nginx的HTML所在目录 /usr/share/nginx/html:
cd /usr/share/nginx/html
步骤三:修改index.html的内容
sed -i 's#Welcome to nginx#传智教育欢迎您#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html


总结:
docker run命令的常见参数有哪些?
--name:指定容器名称
-p:指定端口映射
-d:让容器后台运行
查看容器日志的命令:
docker logs
添加 -f 参数可以持续查看日志
查看容器状态:
docker ps


--案例三:创建并运行一个redis容器,并且支持数据持久化(视频10)

步骤一:到DockerHub搜索Redis镜像
步骤二:查看Redis镜像文档中的帮助信息
步骤三:利用docker run 命令运行一个Redis容器


  五、数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

数据卷操作的基本语法如下:

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume

--案例一:创建一个数据卷,并查看数据卷在宿主机的目录位置

创建数据卷docker volume create html

查看所有数据docker volume ls

查看数据卷详细信息卷docker volume inspect html

标签:容器,--,nginx,镜像,docker,Docker
From: https://www.cnblogs.com/kongsq/p/18225888

相关文章

  • docker 镜像
    docker的镜像获取方式1通过开源的hubdocker仓库取拉去镜像2通过dockerfile文件取生产镜像3通过save命令去复制别的环境上的镜像,用于离线镜像操作1到仓库中获取镜像以下是一些常见的Docker国内镜像源:网易云Docker镜像:http://hub-mirror.c.163.com......
  • TDengine docker安装方法
    dockerrun-d--privileged=true\--restart=always--name=tdengine\-v/opt/taos/data:/var/lib/taos\-v/opt/taos/log:/var/log/taos\-v/usr/local/taos/driver/libtaos.so.3.2.0.0:/usr/lib/libtaos.so\-v/usr/share/zoneinfo:/usr/share/zoneinfo\-eTZ=A......
  • docker使用镜像jms_all部署jumpserver
    创建容器需要挂载出来的服务器对应目录mkdir-p/data/redis/datamkdir-p/opt/mysql/{data,conf,logs}docker安装redisdockerrun-d-it--nameredis-p6379:6379-v/data/redis/data:/data--restart=always......
  • docker-compose 安装 yapi
    docker-compose安装yapidocker-compose.yamlversion:'3'services:yapi-web:image:liuqingzheng/yapi:latestcontainer_name:yapi-webports:-3000:3000environment:[email protected]_ADMI......
  • linux 离线安装docker
    docker-ce下载地址很多情况下我们不能对docker进行在线安装,这时可以参照本篇博客尝试进行离线安装docker-ce1.下载对应版本的安装包2.解压安装包tar-zxvfdocker-XXX.tgz3.将解压的文件复制到指定位置cp./docker/*/usr/bin4.配置docker服务的文件如下cd/etc/syste......
  • Docker + maven build problem — unix://localhost:80: Permission denied
    使用docker-maven-plugin进行构建镜像报错如下:com.spotify.docker.client.shaded.org.apache.http.impl.execchain.RetryExecexecuteINFO:I/Oexception(java.io.IOException)caughtwhenprocessingrequestto{}->unix://localhost:80:Permissiondenied解决方案:Ad......
  • 面试专区|【DevOps-96道Docker 容器高频题整理(附答案背诵版)】
    简述什么是Docker容器?Docker容器是一个开源的应用容器引擎,它让开发者可以将他们的应用以及依赖包打包到一个可移植的容器中,然后发布到任何安装了Docker引擎的服务器上,包括流行的Linux机器、Windows机器等。Docker容器利用沙箱机制,使容器之间相互独立,互不影响。Docker容......
  • gitlab之cicd的gitlab-runner集成-dockerfile构建环境
    目录概述离线资源docker-compose问题docker-compose问题1问题2gitlab-runner集成gitlab概述  cicd引文目录是想通过dockerfile构建maven、jdk、docker环境的gitlab-runner运行环境。但docker最后测试的时候有点问题,且最后使用kubectl时有麻烦,所以放弃。但有......
  • 【docker】docker 下 MySQL偶然无法访问
    1.概述我有一个环境遇到了docker下MySQL偶然无法访问,具体情况如下可以被看到可以telnet通畅,这个jar是我自己研发的,主要这台机器是别人的没有装telnet但是任务还是报错所在机器telnet通但是无法登录,同事说遇到过比如网络卡或者不稳定,需要重启一下mysql我先去......
  • Docker 安装RabbitMq
    Docker安装RabbitMq文章目录Docker安装RabbitMq拉取镜像启动进入容器启动后台浏览器访问总结拉取镜像dockerpullrabbitmq启动dockerrun-d--hostnamemy-rabbit--namerabbit-p15672:15672-p5673:5672rabbitmq-d后台运行容器;–name指定......