当前位置: 首页 > news >正文

Docker的安装与部署

Docker 基本概念介绍


通俗理解:镜像是类,容器是对象实例

仓库 = 应用商店、镜像 = 下载的应用安装程序、容器 = 应用程序

  • 镜像(Image)

    这里面保存了应用和需要的依赖环境

    为什么需要多个镜像?当开发、构建和运行容器化应用程序时,我们通常会有不同优先级。通过为这些独立的任务提供不同镜像

  • 容器(Container)

    镜像的实例。一个容器代表一个正在运行的应用程序、进程或服务。它由 Docker 镜像、执行环境和标准指令集组成。需要扩展服务时,我真正将镜像跑起来的东西,镜像在容器里面。可以看作是一个完全隔离的盒子。

    一个容器镜像实例代表一个独立的进程。

  • Hub

    远程存放镜像的平台, hub上已经有很多制作好的镜像(可以使用国内镜像平台)。

  • 仓库(repository)

    仓库用来保存镜像的地方。

    镜像构建完成后,可以直接在当前宿主上运行,但是 如果需要在其它服务器上使用这个镜像,就需要一个集中存储、分发镜像的服务。仓库就是这样的一个服务。


安装部署 Docker环境


1. 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

2. 添加稳定镜像源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

因为docker默认官方的镜像源地址是国外的,速度很慢,这里将数据源设置为阿里云的镜像。

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 安装 Docker-CE

yum install docker-ce

4. 启动 Docker-CE

#设置开机启动 docker服务:
systemctl enable docker
systemctl start docker

5. 卸载 Docker-CE

yum remove docker-ce
#清除所有的文件目录
rm -rf /var/lib/docker 

Docker 配置国内源加速


1. 修改配置文件

配置文件:/etc/docker/daemon.json,编辑该文件(没有的话先手动创建)加入国内镜像源

  • DockerProxy:https://dockerproxy.com
  • 网易源:https://hub-mirror.c.163.com
  • 百度源:https://mirror.baidubce.com
  • 腾讯源:https://ccr.ccs.tencentyun.com
# 编辑 Docker 配置文件
$ sudo vim /etc/docker/daemon.json
# 加入以下配置项
{"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"]
}

Docker镜像加速器(阿里云镜像源)

也可以使用 阿里云-容器镜像服务ACR > 镜像工具 > 镜像加速器

在这里插入图片描述

2. 重启 Docker 服务

# 方法一,采用 systemctl 来重启,推荐
systemctl daemon-reload
systemctl restart docker# 方法二,采用 service 来重启
service docker restart

3. 查看是否成功

# 查看 Docker 信息
docker info# 出现以下字段代表配置成功
Registry Mirrors:https://dockerproxy.com/https://hub-mirror.c.163.com/https://mirror.baidubce.com/https://ccr.ccs.tencentyun.com/

Docker 常用命令


#查看容器(-a 显示包括已经停止的容器):docker ps -a
#拉取镜像: docker pull
#查看镜像: docker images
#删除镜像: docker rmi 镜像name/id
#创建镜像(常用方式),注意结尾的.#使用当前目录的 Dockerfile 创建镜像(版本号不加默认为 latest)docker build -t [新镜像名称]:[新镜像标签] . #通过 -f Dockerfile 文件的位置docker build -f [Dockerfile的路径] .
#创建容器(运行镜像): docker run --name [容器名] -d -p 8080:80 [镜像名称]:[镜像标签]--name 容器名称 ,后面跟着是镜像路径或名称--rm 运行完后删除该容器-p 端口映射 8000 外部端口 80镜像里面运行的端口 将8000映射到镜像里面的80-it 输出容器命令行的内容 即容器的自身的程序输出在控制台(进入容器)-d 和it相反 隐藏后台运行
#容器交互: docker exec -it [容器name/id] /bin/bash
#退出交互: Ctrl+P,Ctrl+Q(Ctrl键一直保持按下)
#启动容器: docker start 容器name/id
#重启容器: docker restart 容器name/id
#停止容器: docker stop 容器name/id
#杀掉运行中的容器docker kill 容器name/id
#删除容器: docker rm 容器name/id
#查看容器日志docker logs -f -t 容器name/id-f : 跟踪日志输出-t : 显示时间戳
#设置开机自启: systemctl enable docker

Docker镜像无法删除的解决办法

#使用强制删除命令:docker rmi -f 镜像id

Docker容器无法stop的解决办法

docker在rm或者kill相应的容器时,发现无法删除,或者出现报错

提示 Error response from daemon: Conflict, cannot remove the default name of the container

解决方法:

#使用强制删除命令:docker rm -f 容器id
#清理该容器的网络占用:docker network disconnect --force bridge 容器id

Docker 镜像导出-导入


将docker image导出保存为tar文件,方便在服务器之间进行传输

1. Docker镜像导出

-o 和 > 表示输出到文件(不加路径则会输出到当前所在目录),[新镜像名称].tar为目标文件

docker save -o D:\[新镜像名称].tar [镜像名称]:[镜像标签]docker save [镜像名称]:[镜像标签] > D:\[新镜像名称].tar 

2. 通过Xftp将导出的tar文件传输到其他服务器上

3. Docker镜像导入

docker load -i [新镜像名称].tar

4. 导出-导入过程中遇到的问题

导入完成后,镜像的名字和 TAG为 <none>

这个问题的根本在于这个镜像压缩包在打包的时候操作不当所导致

例如,使用镜像ID打包的话导致解压的出来的镜像没有名字

docker save -o D:\[新镜像名称].tar [镜像id]

因此,推荐使用镜像名进行打包,此方式打包的镜像,解压出来就有镜像名称了

docker save -o D:\[新镜像名称].tar [镜像名称]:[镜像标签]

重命名镜像的方法:

docker tag [镜像id] [新镜像名称]:[新镜像标签]
http://www.lryc.cn/news/97633.html

相关文章:

  • 【数据结构】实验四:循环链表
  • 【FPGA/D7】
  • Vue的下载以及MVVM分析
  • ElasticSearch学习--自动补全
  • 【C++】多态,虚函数表相关问题解决
  • 探索大型语言模型的开源人工智能基础设施:北京开源AI Meetup回顾
  • Langchain 的 Conversation buffer window memory
  • 电流源电路
  • iOS开发-CMMotionManager传感器陀螺仪
  • 影刀下载,插件安装
  • Linux的tcpdump命令详解
  • springboot运行报错Failed to load ApplicationContext for xxx
  • [SQL挖掘机] - 内连接: inner join
  • mysql(四)数据备份
  • Spring 拦截器
  • 【libevent】http客户端3:简单封装
  • JavaScript的函数中this的指向
  • Caddy 中实现自动 HTTPS
  • SK5代理(socks5代理)在网络安全与爬虫应用中的优势与编写指南
  • 【LeetCode-简单】剑指 Offer 06. 从尾到头打印链表(详解)
  • 【LeetCode】114.二叉树展开为链表
  • DAY3,Qt(完成闹钟的实现,定时器事件处理函数的使用)
  • TL-ER3220G设置vlan
  • PHPWord 实现合并多个word文件
  • rust持续学习Box::leak
  • 通过SSH实现将本地端口反向代理到公网服务器
  • Fragment的基本用法、Fragment和活动间的通信、Fragment的生命周期、动态加载布局的技巧
  • 机器学习 day30(正则化参数λ对模型的影响)
  • 图文教程:如何在 3DS Max 中创建3D迷你卡通房屋
  • 根据UIL下载图片/视频、根据URL自动下载图片/视频、GUI自动下载想要的图片