Docker

1.概念

容器和虚拟机比较:
容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。
在这里插入图片描述

2.安装及配置

2.1安装在centos7中

  1. yum 包更新到最新
    sudo yum update
  2. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 设置yum源为阿里云
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo
  4. 安装docker
    sudo yum install docker-ce
  5. 安装后查看docker版本
    docker -v

2.2设置ustc镜像

ustc是老牌的linux镜像服务提供者了,ustc的docker镜像加速器速度
很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

//编辑该文件
vi /etc/docker/daemon.json
//输入如下内容
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }

3.docker相关命令

3.1docker启动和停止

//启动
systemctl start docker
//停止
systemctl stop docker
//重庆docker:
systemctl restart docker
//查看docker状态
systemctl status docker
//开机启动:
systemctl enable docker
//查看docker信息
docker info
//查看帮助文档
docker --help

3.2镜像相关命令

//查看镜像
docker images
//搜索镜像
docker search 镜像名称
//拉取镜像
docker pull 镜像名称           如:docker pull centos:7
//删除镜像
docker rmi 镜像id
//删除所有镜像
docker rmi docker images -q

3.3容器相关命令

3.3.1查看容器

//查看正在运行的容器
docker ps
-a 所有容器
-l 最后一次运行的容器
-f status=exited 停止的容器

3.3.2创建启动和停止容器

//交互式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
//守护式方式创建容器:
docker run -di --name=容器名称 镜像名称:标签
//登录守护式容器方式:
docker exec -it 容器名称(或者容器ID) /bin/bash
//退出当前容器
exit
//停止容器
docker stop 容器名称(或者容器ID)
//启动容器:
docker start 容器名称(或者容器ID)
  • -i:表示运行容器
  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  • –name :为创建的容器命名。
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文
    件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t
    两个参数,创建后就会自动进去容器)。
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

3.3.4目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录
的文件从而去影响容器。 创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

如果你共享的是多级的目录,可能会出现权限不足的提示。
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没
有权限的问题

3.3.4其他

//文件拷贝
docker cp 需要拷贝的文件或目录 容器名称:容器目录
//也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录//查看容器IP地址
///我们可以通过以下命令查看容器运行的各种数据
docker inspect 容器名称(容器ID)
///也可以直接执行下面的命令直接输出IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
//删除指定容器
docker rm 容器名称(容器ID)

4.应用部署

mysql 部署

//拉取镜像
docker pull centos/mysql-57-centos7
//创建容器
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

tomcat部署

(1)拉取镜像
docker pull tomcat:7-jre7 
(2)创建容器
创建容器  -p表示地址映射
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

nginx部署

(1)拉取镜像
docker pull nginx 
(2)创建Nginx容器
docker run -di --name=mynginx -p 80:80 nginx

redis部署

(1)拉取镜像
docker pull redis 
(2)创建容器
docker run -di --name=myredis -p 6379:6379 redis

5.迁移和备份命令

//容器保存为镜像
//我们可以通过以下命令将容器保存为镜像
docker commit mynginx mynginx_i//镜像备份
//我们可以通过以下命令将镜像保存为tar 文件
docker save -o mynginx.tar mynginx_i//镜像恢复与迁移
//首先我们先删除掉mynginx_img镜像 然后执行此命令进行恢复
docker load -i mynginx.tar

6.Dockerfile编写脚本

6.1概念

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;
2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;
3、对于运维人员:在部署时,可以实现应用的无缝移植。

6.2常用命令

命令作用
FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name声明镜像的创建者
ENV key value设置环境变量 (可以写多条)
RUN command是Dockerfile的核心部分(可以写多条)
ADD source_dir/filedest_dir/file将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/filedest_dir/file和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录

6.3 使用脚本创建镜像

(1)创建目录

mkdir –p /usr/local/dockerjdk8 

(2)下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录
(3)创建文件Dockerfile vi Dockerfile

#依赖镜像名称和ID 
FROM centos:7 
#指定镜像创建者信息 
MAINTAINER ITCAST 
#切换工作目录 
WORKDIR /usr
RUN mkdir /usr/local/java 
#ADD 是相对路径jar,把java添加到容器中ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ #配置java环境变量 
ENV JAVA_HOME/usr/local/java/jdk1.8.0_171 
ENV JRE_HOME $JAVA_HOME/jre 
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH 
ENV PATH $JAVA_HOME/bin:$PATH 

(4)执行命令构建镜像

docker build -t='jdk1.8' .

注意后边的空格和点,不要省略
(5)查看镜像是否建立完成

docker images

7.搭建使用docker私有仓库

7.1 私有仓库搭建与配置

(1)拉取私有仓库镜像(此步省略)

docker pull registry 

(2)启动私有仓库容器

docker run -di --name=registry -p 5000:5000 registry 

(3)打开浏览器 输入地址http://192.168.184.141:5000/v2/_catalog看到 {“repositories”:[]} 表示私有仓库搭建成功并且内容为空
(4)修改daemon.json

vi /etc/docker/daemon.json
//添加以下内容,保存退出。此步用于让 docker信任私有仓库地址
{"insecure-registries":["192.168.184.141:5000"]}

(5)重启docker 服务

systemctl restart docker

7.2 镜像上传至私有仓库

(1)标记此镜像为私有仓库的镜像

docker tag jdk1.8 192.168.184.141:5000/jdk1.8 

(2)再次启动私服容器

docker start registry

(3)上传标记的镜像

docker push 192.168.184.141:5000/jdk1.8

8常见报错

1.Error response from daemon: pull access denied for node.js, repository does not exist or may require ‘docker login’
name敲错了
2.get https://registry-1.docker.io/v2/:ner/http:TLS handshake timeout 或者 request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers

vim /etc/docker/daemon.json
文件中加入:
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}2.然后重启守护进程
systemctl daemon-reload
systemctl restart docker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23339.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android:编译libevent动态库并移植jni中,在Android AVD虚拟机上实现一个http服务器

libevent源码:libevent-2.1.8-stable Android Studio版本:Android Studio Electric Eel | 2022.1.1 Patch 2 AVD虚拟机为x86. https://developer.android.google.cn/studio/run/emulator-networking?hlzh-cn#connecting 大体步骤: 1.在ws…

超级超级好用的浏览器扩展插件

良心亲测,绝对好用 1. AdBlock —最佳广告拦截工具(拦截广告) 2.AIX智能下载器(图片/视频/音乐/文(下载图片、视频) 3.Allow Copy 超级复制&AI智能小...(复制文案) 4.EndNote Click - Forme…

菜谱APP源码和设计报告

《移动互联开发》 课程作业 学 院: 班 级: 学 号: 姓 名: 日 期: 设计要求(提交文档时需删除): 1.本课程设计作为《Android 程序设计》的期末考查内容。 2.任务安排: &…

实测:GPT -3.5 与GPT -4.0 编程能力对比

在本文中,我们将从三个不同角度对比GPT-4和GPT-3.5的代码能力,包括:技术概念解释、代码编写能力和调试代码能力。这将有助于我们了解这两个版本的人工智能语言模型在各方面的优劣。 推荐人 | 互联网老孙 编辑者 | JK 1. 技术概念解释对比 问题…

官方 gpt3.5, gpt4.0、github copilot chat、gpt3.5 api、gpt4 api 对比

这是「进击的Coder」的第 848 篇技术分享 作者:刘志军 来源:Python 之禅 “ 阅读本文大概需要 9 分钟。 ” gpt4 的智能程度大于 gpt3.5,毫无争议,但是 OpenAI 提供的 GPT3.5 API 能力是否和官方的 GPT3.5 相当?对应…

刺激,GPT4/ChatGPT3.5/DALL-E同时玩

GPT4/ChatGPT3.5/DALL-E: AI创想师 ​ 这个画图效果着实可以 用来回答某某的问题GPT4确实比GPT3.5准 ​ 这是GPT4的回答 ​ 这是GPT3.5的回答,确实差一些 用了几天,发现可以一直(bai)用(piao)!!!

这套源码融合了chatgpt3.5、chatgpt4.0、midjourney、stable diffusion等技术,简直是炫酷至极

首先,让我们来看下面的效果演示图: 经过实际体验,这套chatgpt技术提供了令人惊艳的快速响应。整个系统可以在国内服务器上部署,只需配置好反向代理功能。 midjourney和stable diffusion在运行过程中表现得十分稳定。而且&#xff…

用OceanBase试了一下ChatGPT开源文档问答助手

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 随着去年年底 ChatGPT 的火爆出圈,到近日 OpenAI 发布了最新的 GPT-4 模型,大家都在思考、尝试如何利用 ChatGPT 的能力来构建自己的应用。 我们最近发现,在开…

淘宝天猫API详情接口调用分享

为了进行此平台API的调用,首先我们需要做下面几件事情。 1、 获取一个KEY。 2、 参考API文档里的接入方式和示例。 3、查看测试工具是否有需要的接口,响应实例的返回字段是否符合参数要求。 4、利用平台的文档中心和API测试工具,对接口进行测…

淘宝天猫API_获取商品详情原数据

item_get_app-获得淘宝app商品详情原数据 获取key和secret API返回结果 { "item": { "apiStack": [ { "name": "esi", "value": "{\"global\":{…

云从发布从容AI大模型;莫言用ChatGPT帮余华写颁奖词;罗普特遭立案调查丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 亚马逊网络服务将向印度的云基础设施投资127亿美元 5月18日,亚马逊宣布,亚马逊网络服务计划到2030年向印度的云基础设施投资10560亿印度卢比(127亿美元)&#xff…

03.SELF-INSTRUCT+Alpaca

文章目录 前言泛读储备知识提示学习提示工程Promt Engineering答案工程 背景介绍研究SELF-INSTRUCT的动机研究意义&贡献 精读Overview种子任务步骤1:定义指令数据步骤2:自动指令数据生成步骤2.1指令生成步骤2.2指令分类步骤2.3实例生成步骤2.4筛选和…

Windows应急响应 - 敏感目录文件痕迹排查,最近打开的文件 Recent,临时目录Temp,预读取文件Prefetch,程序执行情况Amcache.hve,Windows文件访问时间不更新原理

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 敏感文件痕迹排查 一、根据时间查找 Forfiles1、访问时间不更新问题 二、最近打开的文件 …

留学生如何利用好Chat GPT,助力留学生活?

目录 01.什么是Chat GPT ? 02.Chat GPT使用的问题 03.Chat GPT为留学生活提供了哪些便利? 04.海外院校对Chat GPT的态度 禁止使用 允许使用 05.如何正确使用呢? 07.使用技巧 08.使用的注意事项 寄语 01.什么是Chat GPT ?…

文笔润色-文本校对改写工具

文段改写软件 写作是一项对于很多人来说都需要频繁进行的活动,无论是工作中的商业写作还是学术写作,在完成优质内容的同时也需要付出大量的时间和精力进行语言润色和修改。然而,现在有了147ChatGPT改写润色软件,该软件可以全自动…

chatgpt赋能python:Python中怎么开方

Python中怎么开方 在Python中,开方是一种非常常见的数学操作。开方指的是求一个数的平方根或立方根等等。在Python中,我们可以使用自带的math库或使用第三方库numpy来进行开方操作。 使用math库进行开方操作 math库提供了sqrt()函数,可以用…

chatgpt赋能python:Python怎么计算开方

Python怎么计算开方 Python语言是一种高级程序语言,具有易学、易读、易写、易维护等特点。在数据分析、科学计算、人工智能等领域,Python被广泛应用。计算开方在数学计算中是一个常见的操作,Python也提供了多种求开方的方法。 常见的求开方…

chatgpt赋能python:Python怎样开方?完整解析Python开方方法

Python怎样开方?完整解析Python开方方法 Python作为一种流行的编程语言,用途十分广泛,可以用来进行数据分析、网络爬虫、Web开发等。Python还支持数学计算,包括开方。Python怎样开方?下面我们来一一解析Python开方的方…

chatgpt赋能python:开方在Python中的用法

开方在Python中的用法 开方是数学中常见的一种运算,用于求一个数的平方根。在Python中,开方运算可以通过使用math模块中的sqrt函数来实现。本文将介绍开方运算的概念、Python中的应用以及一些常见问题的解决方法。 开方的概念 开方是指,对…

陆奇-奇绩创坛-chatGPT新范式,新时代,新机会

奇绩创坛-新范式,新时代,新机会 01-新范式 新范式的新拐点 新范式的历史环境 新范式的社会影响 新范式的缔造者:Sam Altman和OpenAI 新范式的动力引擎 新范式的演化路径 02-新时代 新时代的宏观发展格局 新时代的中国机会 新时代的OpenAI生…