【Docker】Docker入门学习

news2024/11/23 10:45:29

【Docker】学习docker

1.Docker安装与启动

1.1.安装

  • 【第一步】yum包更新到最新版本
sudo yum update
  • 【第二步】安装需要的软件包,yum-util提供的yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 【第三步】设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 【第四步】安装docker
  • 注意:docker有两个版本:社区版(docker-ce)免费,企业版(docker-ee)收费
sudo yum install docker-ce

1.2.设置ustc的镜像

ustc是老牌的linux镜像服务提供者,加速docker镜像下载,不需要注册,是真正的公共服务。

  • 【第一步】编辑daemon.json文件
# 编辑模式打开该文件:
vi /etc/docker/daemon.json
# 在文件中输入如下内容:
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

1.3.Docker的启动与停止

  • 【步骤一】使用systemctl命令操作docker的启动停止
#1.启动docker
systemctl start docker
#2.停止docker
systemctl stop docker
#3.重启docker
systemctl restart docker
#4.查看docker状态
systemctl status docker
#5.设置开机自启docker
systemstl enable docker
###6.查看docker的概要信息###
docker info
###7.查看docker的帮助文档###
docker --help

2.Docker常用命令

2.1.镜像相关命令

  • 【命令一】查看镜像
#查看镜像
docker images

在这里插入图片描述
注释:(镜像存储位置:Docker宿主机的var/lib/docker目录下)

REPOSITORYTAGIMAGE IDCREATEDSIZE
镜像名称镜像标签镜像ID镜像的创建日期(非我们拉取下载的日期)镜像大小
  • 【命令二】搜索镜像
#如果你需要从网络中查找需要的镜像,可以通过以下命令搜索
docker search 镜像名称

在这里插入图片描述
注释:

NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
镜像名称镜像描述用户评价是否官方自动构建,表示该镜像由Docker Hub自动构建流程创建的
  • 【命令三】拉取镜像
#1.拉取镜像:从中央仓库中下载镜像到本地
docker pull 镜像名称
#2.若未设置拉取镜像的版本,默认拉取最新的版本,如下设置拉取镜像的版本
# 冒号后跟版本号
docker pull centos:7
  • 【命令四】删除镜像
#1.按镜像ID删除镜像
docker rmi 镜像ID
#2.删除所有镜像
docker rmi `docker images -q`

2.2.容器相关命令

  • 【命令一】查看容器
#1.查看正在运行的容器
docker ps
#2.查看所有容器
docker ps -a
#3.查看最后一次运行的容器
docker ps -l
#4.查看停止的容器
docker ps -f status=exited
  • 【命令二】创建与启动容器
#1.创建容器的基础命令
docker run
#1.1.携带参数说明:
-i #表示运行此容器
-t #表示容器启动后会进入其命令行,加入这两个参数后,容器以可登录进去的方式创建一个伪终端。
--name #创建的当前容器的名字
-v #表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d #在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i-t两个参数,创建后就会自动进入容器)。
-p #表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射。

#2.创建容器的两种方式
#2.1.交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
#此时已经进入创建好的容器中了,并且可以使用ps命令查看启动的容器状态
#此时退出容器使用命令
exit
#2.2.守护式方式创建容器
docker run -di --name=容器名称 镜像名称:标签
#标签:就是容器的tag
#登录守护式容器方式
docker exec -it 容器名称(或者容器ID) /bin/bash

#注意结论:
#一、以交互式方式创建的容器,退出容器后,容器自动关机
#二、以守护方式创建的容器,不直接进入容器,默认后台运行容器,可以使用命令登录容器,退出容器,容器依然正常运行。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 【命令三】停止与启动容器
#1.停止容器
docker stop 容器名称(或者容器ID)
#2.启动容器
docker start 容器名称(或者容器ID)
  • 【命令四】文件拷贝
#1.将文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝的文件或目录 容器名称(或者容器ID):容器目录
#2.将文件从容器内拷贝出来
docker cp 容器名称(或者容器ID):容器目录 需要拷贝的文件或目录
  • 【命令五】目录挂载

目录映射:我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机某个目录的文件从而去影响容器。

#1.创建容器添加-v参数的后面为: (宿主机目录:容器目录),如下:
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=myTomcat tomcat:8
#注意:如果你共享的是多级的目录,可能会出现权限不足的提示
#这是因为CentOS7中的安全模块selinux把权限禁掉了,需要添加如下参数,来解决挂载的目录没有权限的问题。
--privileged=true
  • 【命令六】查看容器的IP地址
#1.通过如下命令查看容器运行的各种数据
docker inspect 容器名称(或者容器ID)
#2.直接输出IP的命令
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
  • 【命令七】删除容器
#1.删除指定容器
docker rm 容器名称(或者容器ID)

3.Docker的应用部署

3.1.MySql部署

#1.拉取mysql镜像
docker pull centos/mysql-57-centos7
#2.创建容器
docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
#注释: -p代表端口映射,格式为: (宿主机映射端口:容器运行端口)
#      -e代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登录密码
#3.进入mysql容器
docker exec -it tensquare_mysql /bin/bash
#4.登录mysql
mysql -u root -p
#5.远程登录mysql
#连接宿主机的IP,指定端口为33306

3.2.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
#注意:映射完路径的webapps文件夹会被清空,需要再宿主机上部署自己的war包到webapps目录下
#使用sftp上传包的命令:(单个文件上传命令)
sftp> put d:\目录1\dgc.war
#使用sftp上传一个目录的命令:
sftp> put -r d:\目录1\需要上传目录

3.3.Nginx部署

#1.拉取镜像
docker pull nginx
#2.创建Nginx容器
docker run -di --name=dgcNginx -p 81:80 nginx

#部署前端vue项目到容器内步骤:
#1.将需要部署的项目包 改名为 html: mv 需要部署的项目文件 html
#2.拷贝到nginx的目录下覆盖原有的html目录: docker cp html dgcNginx:/usr/share/nginx
#注意:docker安装的nginx地址在:/etc/nginx,但是项目部署访问映射的地址可以通过nginx.conf看到,一般在:/usr/share/nginx

3.4.Redis部署

#1.拉取镜像
docker pull redis
#2.创建容器
docker run -di --name=dgcRedis -p 6379:6379 redis:latest

#使用命令远程连接redis服务:本地得有redis-cli安装包
#执行连接命令:redis-cli -h 150.158.7.35

4.Docker的迁移与备份

4.1.容器保存为镜像

#1.将已有的容器保存为镜像
docker commit dgcNginx dgcnginx_1
docker commit 容器名称  镜像名称(目标镜像名称必须全部为小写)

4.2.镜像备份

#1.通过如下命令可以将镜像保存为tar文件
docker save -o dgcNginx.tar dgcNginx_1 
docker save -o 输出的文件名称  镜像名称

4.3.镜像恢复与迁移

#1.恢复前当前宿主机不能存在当前需要恢复的镜像,可以先删除dgcnginx_1镜像,使用如下命令导入备份的镜像,进行恢复:
docker load -i dgcNginx.tar
#注意:-i 输入的文件,执行完毕可以再次查看镜像,已经恢复
#注意删除镜像的顺序:
#1.1.停止当前运行的该容器
docker stop dgcNginx2
#1.2.删除当前镜像的相关容器
docker rm dgcNginx2
#1.3.删除镜像
docker rmi dgcnginx_i:latest

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/filedest_dir/file将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/filedest_dir/file和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录

5.3.案例:使用Dockerfile构建jdk1.8镜像

#1.在宿主机上创建一个目录,如下:
mkdir -p /usr/local/dockerjdk8
#2.上传本地jdk8的安装包到dockerjdk8目录下
#3.在dockerjdk8目录下创建一个文件:Dockerfile
#4.编写Dockerfile文件脚本,内容如下:
FROM centos:7
MAINTAINER dgc    #表示:创建镜像的创建者
WORKDIR /usr      #表示:设置当前目录
RUN mkdir /usr/loacl/java #表示:创建一个java目录
ADD jdk-8u144-linux-x64.tar.gz /usr/local/java  #表示:添加需要制作镜像的压缩包到虚拟机目录下且解压
ENV JAVA_HOME /usr/local/java/jdk1.8.0_144      #表示:配置环境变量第一步
ENV JRE_HOME $JAVA_HOME/jre                     #表示:配置环境变量第二步
ENV CLASSPATH $JAVA_HOME/bin/dt.jar;$JAVA_HOME/lib/tools.jar;$JRE_HOME/lib;$CLASSPATH
ENV PATH $JAVA_HOME/bin;$PATH
#5.使用docker命令构建jdk1.8镜像
docker build -t='jdk1.8' .         #表示: jdk1.8(镜像名称),点.:当前目录寻找Dockerfile脚本文件
#6.构建完成镜像,可以使用docker images查看自己构建的镜像

6.Docker私有仓库

6.1.私有仓库搭建与配置

#1.拉取私有仓库镜像(docker的私有仓库也是一个镜像,直接拉取构建容器启动即可)
docker pull registry
#2.启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
#3.通过浏览器访问如下地址,可以看到{"repositories":[]}表示私有仓库搭建成功并且为空
http://宿主机IP:5000/v2/_catalog
#4.修改daemon.json(文件地址在:/etc/docker/daemon.json)
vi /etc/docker/daemon.json
#4.1.添加如下内容:(配置:让docker信任这个私有仓库地址)
{"insecure-registries":["宿主机IP:5000"]}
#5.重启docker服务让配置生效
systemctl restart docker

6.2.镜像上传至私有仓库

#1.标记此镜像为私有仓库的镜像(打标签)
docker tag jdk1.8 宿主机IP:5000/jdk1.8
#2.上传标记的镜像
docker push 宿主机IP:5000/jdk1.8

6.3.拉取私有仓库镜像

#1.不同服务器拉取私有仓库镜像,第一步:服务器续安装docker
#2.修改daemon.json(文件地址在:/etc/docker/daemon.json)
vi /etc/docker/daemon.json
#2.1.添加如下内容:(配置:让docker信任这个私有仓库地址)
{"insecure-registries":["宿主机IP:5000"]}
#3.拉取私有仓库镜像
docker pull 私有仓库地址IP:5000/镜像名称

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三菱FX3U——ST编程定时器和计数器

在部件选择——FB——选择定时器类型 双击弹出标签登录/选择对话框,点击应用; 编辑器自动插入TON_1; 光标放在TON_1后,按下CTRLF1,补全代码; IN: 输入,PT:定时时间,Q:输…

windows上使用Gitblit搭建git服务仓库

第一步: 由于要运行jar包,得先安装好java环境,安装环境的教程很多,这步不做赘述 第二步: 找到Gitblit的安装包 http://gitblit.github.io/gitblit/ 这是官网地址,我就没下载成功过,你要不信,也可…

PyQt5 QMediaPlayer播放不了视频

代码: 编辑器 pycharm: from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent import sysapp QApplication(sys.argv)win QWidge…

数据库主键一定要自增的吗?有哪些场景下不建议自增?

我们平时建表的时候,一般会像下面这样。 CREATE TABLE user (id int NOT NULL AUTO_INCREMENT COMMENT 主键,name char(10) NOT NULL DEFAULT COMMENT 名字,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;出于习惯,我们一般会加一列id作为…

K8s基础之-Pod

第一章:什么是Pod 1.1 创建一个Pod1.2 更改Pod的启动命令和参数1.3 Pod状态及pod故障排查命令1.4 Pod镜像拉取策略1.5 Pod重启策略 第二章:Pod探针 2.1 Pod的三种探针2.2 Pod探针的实现方式 2.2.1 数据库建表语句2.2.2 数据库解析2.2.3 修改Hive数据库…

Servlet常用API

目录 一、HttpServlet 1、HttpServlet核心方法 2、Servlet的生命周期 二、HttpRequest 1、HttpRequest核心方法 2、代码示例 示例1:打印请求信息 示例2:获取GET请求中的query string 示例3:获取POST请求中的query string(form表单形…

功率谱分析笔记-------脑电相关

1:功率谱分析的方法介绍 功率谱分析的方法大致可以分为两大类:第一类是经典的功率谱计算方法,第二类是现代功率谱计算方法,如图1所示。其中第一类经典功率谱分析方法,又可以分为直接法、间接法和改进的直接法。直接法…

常见移动端导航类型

手机导航设计是人机交互最重要的桥梁和平台,旨在引导用户正确的方向,不迷路。 好的菜单设计不仅能提升整个产品的用户体验,还能让用户耳目一新。 一、导航菜单的作用是什么 ? 1.提升产品内容和功能结构和层次 2.重点展示核心功能…

windows cmd 常用操作命令

文章目录进程端口相关打开面板快捷键防火墙相关进程端口相关 可以查看本机开放的全部端口. netstat -ano 协议:分为TCP和UDP 本地地址(Local Address):代表本机IP地址和打开的端口号 外部地址(Foreign Address&#…

字节8年测试开发工程师感悟,说说我们自动化测试平台的进阶之路

前言 自2015年10月底加入Pactera Edge以来,我一直服务于客户的Quality Engineering项目。这之间经历了很多的技术变革,包括探索,实施,维护,淘汰等一整个流程。下面就写一下项目中 UTAP(unified testing automation pl…

Java多线程(三)

目录 一、线程的同步(二) 同步机制释放锁的操作 不会释放锁的操作 线程的死锁问题 死锁 解决方法 Lock(锁) 使用Lock(锁)创建多线程步骤: 使用Lock解决窗口售票问题 synchronized与Lock的对比 练习 二、线程的通信 通过例题说明线…

优化器-SQL语句分析与优化

一、连接-配置优化 1.1 连接数过多问题 有时会碰到Mysql:error 1040:Too many connection的错误。原因:超过了服务端设置的最大并发连接数。 1.2 从两个方面解决问题 服务端,增加服务端可用连接数;客户端&#xff0…

如何在视频上添加水印?建议收藏这些方法

小伙伴们平时会刷短视频吗?那你们会不会自己也在平台上,发布一些自己剪辑的短视频呢?在网上发布的视频,很容易被一些不安好心的人,直接窃取,所以为视频添加自己的水印显得尤为重要。那你们知道如何给视频加…

sqli-labs/Less-49

欢迎界面还是以sort作为注入点 首先判断属于数字型还是字符型 输入如下 sortrand() 页面从没有变化 说明属于字符型 然后输入1 发现没有报错信息 不能使用报错注入 只能通过结果去反映处你的注入是对是错 首先输入1-- 成功回显 说明注入类型就是属于单引号字符型 然后接…

Towards Class-Oriented Poisoning Attacks Against Neural Networks 论文笔记

#论文笔记# 1. 论文信息 论文名称Towards Class-Oriented Poisoning Attacks Against Neural Networks作者Bingyin Zhao会议/出版社WACV 2022pdf📄在线pdf代码无 基于类别的 availability attacks,不同于原本的 availability attacks 只考虑降低模型的…

VMware虚拟机中的Linux通过NAT模式共享主机网卡实现与外部设备通信

目前遇到的使用场景: 需要VMware虚拟机中linux通过PC端的物理网卡与外界其他设备或PC进行通信,因此需要配置虚拟机中linux的通信链路。 1.设置PC端IP网络 如果要实现虚拟机被局域网其它机子访问到,那么这里我们要选择桥架模式,具…

Oracle实验五Sql语句

每一句插入都要带commit提交,不然会出现很多报错 直接从WPS实验报告里复制过来的,可能有中英文标点问题 实验目的 (1) 掌握数据的插入(INSERT)、 修改(UPDATE) 和删除(D…

现代密码学导论-1-导论

目录 1.1 密码学和现代密码学 1.2 私钥加密 1.2.1 私钥加密的两个广泛应用 1.2.2 加密的语法 1.2.3 柯克霍夫原则 1.1 密码学和现代密码学 经典密码学(20世纪80年代以前)和现代密码学之间的另一个非常重要的区别与它的采用有关。历史上,密码学的主要消费者是军…

Android App开发实战项目之电子书架的实现(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、需求描述 在手机上浏览电子书的浏览体验跟阅读纸质书差不多,翻页过程仍旧呈现纸张翻转的视觉特效,让读者看起来赏心悦目。总结一下,手机阅读无非是要具有两大功能点:其一为书…

【GlobalMapper精品教程】025:影像数据集的建立与巧妙使用

GlobalMapper影像数据集类似于金字塔,作用是提高大量影像的加载与显示速度,还可批量进行一系列设置。本文的配套数据为data025.rar。 文章目录 1. 建立影像数据集2. 影像数据集的使用1. 建立影像数据集 (1)点击【文件】→【创建新地图目录】。 (2)选择影像数据集存放路径…