Docker安装启动、常用命令、应用部署、迁移备份、Dockerfile、Docker私有仓库

目录

1.Docker安装与启动

1.1 安装Docker

 1.2 设置ustc的镜像

 1.3 Docker的启动与停止

2.常用命令

2.1 镜像相关命令

2.1.1 查看镜像

2.1.2 搜索镜像

 2.1.3 拉取镜像

2.1.4 删除镜像

2.2 容器相关命令

2.2.1 查看容器

2.2.2 创建与启动容器

2.2.3 停止与启动容器

2.2.4 文件拷贝

2.2.5 目录挂载

2.2.6 查看容器IP地址

2.2.7 删除容器

3.应用部署

3.1 MySQL部署

3.2 Tomcat部署

 3.3 Nginx部署

3.4 Redis部署 

4.迁移与备份

4.1 容器保存为镜像

4.2 镜像备份

4.3 镜像恢复与迁移 

5.Dockerfile

5.1 什么是Dockerfile

5.2 常用命令

5.3 使用脚本创建镜像

6.Docker私有仓库

6.1 私有仓库搭建与配置

6.2 镜像上传至私有仓库


1.Docker安装与启动

1.1 安装Docker

Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。
由于我们学习的环境都使用的是CentOS,因此这里我们将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。

(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

// ce社区版本 ee企业版本
sudo yum install docker-ce

 (5)安装后查看docker版本

docker -v

 1.2 设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker、

编辑该文件:

vi /etc/docker/daemon.json  

在该文件中输入如下内容:

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

 1.3 Docker的启动与停止

systemctl命令是系统服务管理器指令
启动docker:

systemctl start docker

停止docker:

systemctl stop docker

重启docker:

systemctl restart docker

开机启动:

systemctl enable docker

 查看docker概要信息

docker info

查看docker帮助文档

docker help

2.常用命令

2.1 镜像相关命令

2.1.1 查看镜像

docker images
  • REPOSITORY:镜像名称
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

2.1.2 搜索镜像

如果你需要从网络中查找需要的镜像,可以通过以下命令搜索

docker search 镜像名字
  • NAME:仓库名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

 2.1.3 拉取镜像

拉取镜像就是从中央仓库中下载镜像到本地

docker pull 镜像名称

例如,我要下载centos7镜像

docker pull centos:7

2.1.4 删除镜像

按镜像ID删除镜像。镜像在创建的容器中没有运行才可以删除镜像

docker rmi 镜像ID

删除所有镜像

// 不是引号
docker rmi `docker images -q`

2.2 容器相关命令

2.2.1 查看容器

查看正在运行的容器

docker ps

查看所有容器

docker ps -a

查看最后一次运行的容器

docker ps –l

查看停止的容器

docker ps -f status=exited

2.2.2 创建与启动容器

创建容器常用的参数说明:
创建容器命令:docker run

  • -i:表示运行容器
  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  • --name :为创建的容器命名。
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

 (1)交互式方式创建容器

docker run -it --name=容器名称 镜像名称:标签 /bin/bash

这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态  

退出当前容器

exit

(2)守护式方式创建容器:

docker run -di --name=容器名称 镜像名称:标签

登录守护式容器方式:

docker exec -it 容器名称 (或者容器ID)  /bin/bash

2.2.3 停止与启动容器

停止容器:

docker stop 容器名称(或者容器ID)

 启动容器:

docker start 容器名称(或者容器ID)

2.2.4 文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录

也可以将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或目录

2.2.5 目录挂载

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

docker run -di -v /usr/local/benjamin:/usr/local/benjamin--name=redis3 redis:latest

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

2.2.6 查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据

docker inspect 容器名称(容器ID) 

也可以直接执行下面的命令直接输出IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

2.2.7 删除容器

删除指定的容器:容器必须停止,没有运行

docker rm 容器名称(容器ID)

3.应用部署

3.1 MySQL部署

(1)拉取mysql镜像

docker pull centos/mysql-57-centos7

(2)创建容器

docker -id --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

-p 代表端口映射,格式为  宿主机映射端口:容器运行端口
-e 代表添加环境变量  MYSQL_ROOT_PASSWORD  是root用户的登陆密码

(3)远程登录mysql
连接宿主机的IP  ,指定端口为3306  

3.2 Tomcat部署

(1)拉取镜像

docker pull tomcat

(2)创建容器

docker run -id --name=tomcat -p 8080:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat

如果tomcat部署png图片,在webapps包下面新建一个文件夹,将静态图片放进去即可测试。

 3.3 Nginx部署

(1)拉取镜像

docker pull nginx

(2)创建Nginx容器

docker run -id --name=nginx -p 80:80 nginx

tip:nginx创建容器后nginx路径在/etc/nginx,进入容器就可以看到

进入nginx容器

docker exec -it nginx /bin/bash

 注意配置文件里面的配置以及映射资源的路径,对nginx资源映射不理解的可以看我发的相关nginx blog。如果刚创建的nginx容器没有修改就需要把资源放到图片中的配置文件指定的路径下面。

nginx资源映射路径配置文章浏览阅读6.6k次,点赞2次,收藏12次。一、Nginx代理后端服务nginx 服务器及端口 127.0.0.1:80后端服务:127.0.0.1:8080测试url:http://127.0.0.1:80/day06api/api/abc1.配置nginx配置如下:location /day06api/ { proxy_pass http://127.0.0.1:8080/;}实际访问的端口服务:http://127.0.0.1:8080/api/ab2.配置nginx配置如下:location_nginx location 斜杠https://blog.csdn.net/m0_48983233/article/details/120932973

3.4 Redis部署 

(1)拉取镜像

docker pull redis

 (2)创建容器

docker run -id --name=redis -p 6379:6379 redis

 部署好测试一下连接:

 

4.迁移与备份

4.1 容器保存为镜像

我们可以通过以下命令将容器保存为镜像

// docker commit 容器名 镜像名字
docker commit nginx nginx_bak

4.2 镜像备份

 我们可以通过以下命令将镜像保存为tar 文件

// docker save -o 备份名字 镜像名字 
docker  save -o nginx_bak.tar nginx_bak

4.3 镜像恢复与迁移 

docker load -i nginx_bak.tar

删除刚刚备份的镜像,通过镜像tar包重新恢复镜像 

5.Dockerfile

5.1 什么是Dockerfile

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

5.2 常用命令

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

5.3 使用脚本创建镜像

步骤:
(1)创建目录
mkdir –p /usr/local/tem
(2)下载jdk-8u261-linux-i586.tar.gz并上传到服务器(虚拟机)中的/usr/local/tem
(3)创建文件Dockerfile  vi Dockerfile(名字只能是这个Dockerfile)

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

 (4)执行命令构建镜像

docker build -t='jdk1.8' .

(5)查看镜像是否建立完成

docker images

6.Docker私有仓库

6.1 私有仓库搭建与配置

(1)拉取私有仓库镜像

docker pull registry

(2)创建私有仓库容器

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

(3) 访问http://192.168.64.129:5000/v2/_catalog为空,表示搭建私有仓库成功私有仓库5000

(4)修改daemon.json 

vi /etc/docker/daemon.json

添加以下内容,保存退出。

这个ip是我上传容器的服务器,拉取镜像也需要配置信任docker 私有仓库地址

{"insecure-registries":["192.168.64.129:5000"]} 

此步用于让 docker信任私有仓库地址

(5)重启docker 服务

systemctl restart docker

6.2 镜像上传至私有仓库

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

docker tag nginx 192.168.64.129:5000/nginx

(2)启动私服容器

docker start registry

(3)上传标记的镜像

docker push 192.168.64.129:5000/nginx

再次查询私服:

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

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

相关文章

Maven 简介

本文 Maven3.8.8 版本,搭配JDK17和IDEA2022版本, 依赖导入 项目构建 依赖分享 自动部署 1、为什么学习Maven 1.1、Maven是一个依赖管理工具 ① jar 包的规模 随着我们使用越来越多的框架,或者框架封装程度越来越高,项…

Hypervisor 和Docker 还有Qemu有什么区别与联系?

Hypervisor Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,可以让多个操作系统和应用共享硬件资源,也叫做虚拟机监视器(VMM)。 Hypervisor有两种类型:Type I和Type II。 Type I 直接运行在硬件上&a…

three.js 缓动算法.easing(渐入相机动画)

效果&#xff1a;淡入&#xff0c;靠近物体 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div c…

HBuilder X中uView UI框架的安装及使用

开发工具: HBuilder X 在最上方的工具中点击 插件安装 ——> 安装新插件 ——> 前往插件市场安装 在作者排行榜中找到 uView UI 选择该版本 然后点击下载并导入HBuilder X 然后选择你想导入的项目 在项目根目录中的main.js中&#xff0c;引入并使用uView的JS库&#xff…

CTFhub-bak文件

CTFhub-Web-信息泄露-备份文件下载-bak文件 题目信息 解题过程 看到提示说和index.php有关&#xff0c;在url后面加index.php.bak&#xff0c;跳转到http://challenge-7a4da2076cfabae6.sandbox.ctfhub.com:10800/index.php.bak网址&#xff0c;即&#xff1a; 跳转到下载页…

菜鸟关于做前、后端的整理(html、js),以及疑问

涉及到后端的接口py&#xff0c;前端html和js 这三部分就按照如下格式放到server项目主路径下&#xff0c;这样后端机可以作为一个前端server main.pystaticmain.jsmain.htmlhtml 首先是html要设定网页的显示 <!DOCTYPE html> <html> <head><title>…

循环神经网络的变体模型-LSTM、GRU

一.LSTM&#xff08;长短时记忆网络&#xff09; 1.1基本介绍 长短时记忆网络&#xff08;Long Short-Term Memory&#xff0c;LSTM&#xff09;是一种深度学习模型&#xff0c;属于循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;的一种变体。…

Wincoot消除拉式图里outlier的多种策略

在蛋白质中,氨基酸残基之间由肽键相连。 由于肽键的平面性,每个残基的构象都可以用两个扭转角来描述。而空间位阻的关系又导致这两个扭转角只能取有限的值,并用拉式图(Ramachandran plot)来表述它们的允许区域。 拉式图可被用来描述蛋白质结构模型的总体质量。 对于确定…

万物简单AIoT 端云一体实战案例学习 之 快速开始

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 物联网具有场景多且复杂、链路长且开发门槛高等特点,让很多想学习或正在学习物联网的学生或开发者有点不知所措,甚至直接就放弃了。    万物简单AIoT物联网教育…

(2)(2.1) Andruav Android Cellular(一)

文章目录 前言 1 Andruav 是什么&#xff1f; 2 Andruav入门 3 Andruav FPV 4 Andruav GCS App​​​​​​​ 前言 Andruav 是一个基于安卓的互联系统&#xff0c;它将安卓手机作为公司计算机&#xff0c;为你的无人机和遥控车增添先进功能。 1 Andruav 是什么&#xff…

接口自动化测试框架设计

文章目录 接口测试的定义接口测试的意义接口测试的测试用例设计接口测试的测试用例设计方法postman主要功能请求体分类JSON数据类型postman内置参数postman变量全局变量环境变量 postman断言JSON提取器正则表达式提取器Cookie提取器postman加密接口签名 接口自动化测试基础getp…

【5G 接口协议】N2接口协议NGAP(NG Application Protocol)介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

Miracast手机高清投屏到电视(免费)

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Miracast概述 Miracast是一种无线显示标准&#xff0c;它允许支持Miracast的设备之间通过Wi-Fi直接共享音频和视频内容&#xff0c;实现屏幕镜像或扩展显示。这意味着你可以…

【项目日记(三)】内存池的整体框架设计

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

k8s的对外服务---ingress

service的作用体现在两个方面&#xff1a; 集群内部&#xff1a;不断追踪pod的变化。他会更新endpoint中的pod对象&#xff0c;基于pod的IP地址不断变化的一种服务发现机制。 集群外部&#xff1a;类似负载均衡器&#xff0c;把流量IP端口&#xff0c;不涉及转发url(http、htt…

如何本地部署虚VideoReTalking

环境&#xff1a; Win10专业版 VideoReTalking 问题描述&#xff1a; 如何本地部署虚VideoReTalking 解决方案&#xff1a; VideoReTalking是一个强大的开源AI对嘴型工具&#xff0c;它是我目前使用过的AI对嘴型工具中效果最好的一个&#xff01;它是由西安电子科技大学、…

医学图像的数据增强技术 --- 切割-拼接数据增强(CS-DA)

医学图像的新型数据增强技术 CS-DA 核心思想自然图像和医学图像之间的关键差异CS-DA 步骤确定增强后的数据数量 代码复现 CS-DA 核心思想 论文链接&#xff1a;https://arxiv.org/ftp/arxiv/papers/2210/2210.09099.pdf 大多数用于医学分割的数据增强技术最初是在自然图像上开…

H5嵌入小程序适配方案

时间过去了两个多月&#xff0c;2024已经到来&#xff0c;又老了一岁。头发也掉了好多。在这两个月时间里都忙着写页面&#xff0c;感觉时间过去得很快。没有以前那么轻松了。也不是遇到了什么难点技术&#xff0c;而是接手了一个很烂得项目。能有多烂&#xff0c;一个页面发起…

Vue2移动端项目使用$router.go(-1)不生效问题记录

目录 1、this.$router.go(-1) 改成 this.$router.back() 2、存储 from.path&#xff0c;使用 this.$router.push 3、hash模式中使用h5新增的onhashchange事件做hack处理 4、this.$router.go(-1) 之前添加一个 replace 方法 问题背景 &#xff1a; 在 Vue2 的一个移动端开发…

tag 标签

tag 标签 在使用 Git 版本控制的过程中&#xff0c;会产生大量的版本。如果我们想对某些重要版本进行记录&#xff0c;就可以给仓库历史中的某一个commit 打上标签&#xff0c;用于标识。 在本章中&#xff0c;我们将会学习如何列出已有的标签、如何创建和删除新的标签、以及…