Docker快速入门自用笔记

news2024/11/19 7:30:46

1. Docker - 介绍

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

不同Linux的内核一致。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. Docker - 与虚拟机的不同

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

3. Docker - Docker架构

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

在这里插入图片描述

dockerHub
在这里插入图片描述

docker架构:CS架构程序
在这里插入图片描述

在这里插入图片描述

4. 安装Docker

4.1 卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

4.2.安装docker

首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

4.3.启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

docker -v

4.3.配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

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

5. 安装DockerCompose

Linux下需要通过命令下载:

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

5.1.修改文件权限

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

5.2.Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

6. Docker镜像仓库

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。
官网地址:https://hub.docker.com/_/registry

6.1. 简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
    --restart=always \
    --name registry	\
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

6.2. 带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

6.3. 配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

7. Docker基本操作

镜像组成:repository:tag
如果没有指定tag,就代表latest 即最新。

  1. 从dockerfile里 docker build
  2. 从服务器拉取镜像 docker pull
  3. 查看镜像 docker images
  4. 删除镜像 docker rmi
  5. 推送镜像到服务器docker push
  6. 将镜像保存为压缩包 docker save
  7. 加载压缩包为镜像 docker load

查看 docker所有命令:docker helpdocker images --help

7.1 从dockerhub拉取一个镜像

https://hub.docker.com/

在这里插入图片描述

docker pull nginx
docker images

7.2 将镜像导出为压缩包

docker save -o nginx.tar nginx

在这里插入图片描述

7.3 删除镜像

docker rmi nginx:latest

在这里插入图片描述

7.4 从压缩包加载镜像

docker load -i nginx.tar

在这里插入图片描述

8. Docker 容器命令

docker run #创建并运行容器
docker pause #暂停
docker unpause #恢复运行
docker stop #停止
docker start #恢复运行


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

docker rm # 删除容器

8.1 创建并运行一个nginx容器

  1. 从 dockerhub 查看 Nginx的容器运行命令
docker run --name containerName -p 80:80 -d nginx
  • docker run 创建并允许一个容器
  • –name 起一个名字
  • -p 宿主机端口:容器端口
  • -d 后台运行

在这里插入图片描述

8.2 输出日志

docker logs myNginx
docker logs -f myNginx #持续跟踪

在这里插入图片描述

8.3 查看容器状态

docker ps

8.4 进入容器内部

docker exec -it mn bash
  • docker exec: 进入容器内部,执行一个命令
  • -it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn:要进入容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

在这里插入图片描述

没有vi命令怎么办?
可以用 sed命令

8.5 停掉容器

docker stop

8.6 查看所有容器(包括除了运行的)

docker ps -a

8.7 删除容器

docker rm xxxx -f #强制删除

在这里插入图片描述

在这里插入图片描述

docker pull redis:latest
docker run --name myRedis -d redis
docker run --name myRedis -p6379:6379 -d redis redis-server --appendonly yes
docker exec -it myRedis bash

9. 数据卷

在这里插入图片描述

在这里插入图片描述

docker volume
  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume
docker volume create html # 创建数据卷 html
docker volume ls # 查看所有数据
docker volume inspect html # 查看具体某个卷的详细信息
docker volume prune # 删除没有被使用的卷
docker volume rm html # 删除数据卷 html

10. 数据卷挂载

在这里插入图片描述

docker run \
--name mn\
-v html:/root/html \
-p 8080:80 \
nginx \

在这里插入图片描述

docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx
docker inspect html

11. 目录挂载

在这里插入图片描述

docker pull mysql:latest
mkdir /tmp/myql/data -p
mkdir /tmp/myql/conf -p

cp hmy.cnf /tmp/myql/conf

docker run \
--name some-mysql \
-p 3306:3306 \
-v /tmp/myql/data:/var/lib/mysql \
-v /tmp/myql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-e MYSQL_ROOT_PASSWORD=123 \
-d \
mysql:latest

在这里插入图片描述

12. dockerfile 自定义镜像

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

在这里插入图片描述

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
docker build -t javaweb:1.0 .
# . 就是dockerfile的目录
docker images
docker run --name web -p 8090:8090 -d javaweb:1.0

分层:

在这里插入图片描述
此时dockerfile可以简化为:

# 指定基础镜像
FROM java:8-alpine

COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

在这里插入图片描述

13. DockerCompose

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

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

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

相关文章

一文看懂人机对话

人机对话概述 人机对话是指,让机器理解和运用自然语言实现人机通信的技术,如图1所示,通过人机对话交互,用户可以查询信息,如示例中的第一轮对话,用户查询天气信息,用户也可以和机器机型聊天&am…

Pytorch深度学习【十三】

LeNet网络 基本结构图 构造思路 先用卷积层来学习图片空间信息池化层降低敏感度全连接层来转换到类别空间 代码实现 import torch from torch import nn from d2l import torch as d2l class Reshape(nn.Module):def forward(self ,x):return x.view(-1, 1, 28, 28) # vie…

ElasticSearch7 Kibana集群安装

文章目录ElasticSearch安装下载安装包基础环境安装JDK安装修改Linux配置安装ES启动报错bootstrap check failure [1] of [1]: memory locking requested for elasticsearch process but memory is not lockedKibana安装Kibana简介Kibana下载Kibana安装ElasticSearch安装 下载安…

RS485接口电路设计

RS485接口是串口的一种,常常用在一些工业控制中,485通信是半双工的通信,一条总线最多可连接256个485设备。RS485信号速率最高可以到10Mbps,传输距离最大能到1000多米485接口包含一对差分信号A和B,如下图所示RS485标准规…

springcloud3 Nacos的集群搭建

一 nacos的集群搭建说明 1.1 版本选择的说明 本案例采用的版本是1.4.2 ,当选用其他版本均有不同的问题: 1.4.4 nginx代理后,输入密码登录进去。 2.2.0 ,2.1.2等 2.x版本均是 3个节点的启动之后,只能访问一个节点。…

David Murray 加入 VeraViews 担任需求总监

近日,VeraViews宣布任命 David Murray 为需求总监。 VeraViews 是一个旨在提供透明和可审计的无效流量 (IVT) 预防的广告技术平台,很高兴地宣布任命David Murray为 VeraViews 需求总监。 大卫是伦敦的一位商业专家,他在英国许多最大、商业上…

三种方式二叉树求从根到叶子结点的所有路径的方法整理

二叉树求从根到叶子结点的所有路径的方法整理 1. 利用递归和回溯方法求解 思路: 利用递归和回溯的方法求解 首先将当前结点加入到path中,然后判断是否为叶子结点,如果为叶子结点,则保存path路径如果不是叶子结点,则…

IDEA 开发工具

文章目录IDEA 开发工具一、IDEA 概述二、IDEA 下载和安装1. IDEA 下载2. IDEA 安装三、IDEA 中的第一个代码1. IDEA 项目结构介绍2. IDEA 中的第一个代码1)创建 Project 项目2)创建 Module 模块3)创建 class 类4)在类中编写代码5&…

C++指针

指针的基本概念 作用&#xff1a;通过指针间接访问内存。 内存编号从0开始&#xff0c;一般使用16进制表示。 可以利用指针变量保存地址。 指针变量定义和使用 数据类型*变量名 #include<iostream> using namespace std;int main(){//定义指针int a10;//指针定义语…

绕线机-排线伺服速度解算FC(比例随动编程应用)

绕线机模型和算法详细讲解,专栏已有几篇介绍文章,这篇属于补充和升华。在介绍这篇文章算法之前大家有必要了解什么是"随动系统"。相关链接如下: 绕线机机械结构相关介绍: S7-200 SMART PLC和V20变频器绕线机控制应用_RXXW_Dor的博客-CSDN博客_plc绕线机绕线机P…

循迹小车基本原理和代码实现

目录 一、循迹模块使用 二、接线方式 三、循迹小车原理 四、代码实现 一、循迹模块使用 1、TCRT5000传感器的红外发射二极管不断发射红外线&#xff0c;当发出的红外线没有被反射回来或被反射回来但强度不太够时&#xff0c;红外接收管一直处于关断状态&#xff0c;此时模…

将本地SpringBoot微服务制作成Docker Image镜像包然后运行

将本地SpringBoot微服务制作成Docker Image镜像包然后运行 文章目录将本地SpringBoot微服务制作成Docker Image镜像包然后运行1&#xff09;环境准备2&#xff09;验证jar包3&#xff09;制作images镜像包4&#xff09;注意1&#xff09;环境准备 准备一个SpringBoot项目&…

音视频笔记

音视频笔记 基础理论知识 雷神的博客 [总结]视音频编解码技术零基础学习方法 视频压缩 H264码流结构 码流结构&#xff1a;原来你是这样的H264 H265码流结构 音视频基础&#xff1a;H265/HEVC&码流结构 FFMPEG 雷神的博客 [总结]FFMPEG视音频编解码零基础学习方法…

1583_AURIX_TC275_SMU的控制以及FSP

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) SMU的软件控制接口主要是实现了一些控制命令&#xff0c;用于控制SMU的状态机以及FSP。具体的内容在上面的一部分表格以及接下来的一页中的表格中有介绍。 涉及到ed命令&#xff0c;用几个…

NC6 Error to init aggVOStyle,Please check the back log

由于近期调整及抵消模板的公式字段长度不够&#xff0c;就修改了元数据的字符长度&#xff0c;结果导致修改保存后保存&#xff0c;报错如下&#xff08;如果大家有什么好的解决方案&#xff0c;欢迎评论留言一起探讨学习&#xff09;&#xff1a; 错误日志&#xff1a; 11:1…

Slurm中集群配置文件slum.conf

1.slurm.conf简介slurm.conf是一个ASCII文件&#xff0c;它描述了一般的Slurm 配置信息、要管理的节点、有关如何将这些节点分组到分区中&#xff0c;以及各种调度与这些分区关联的参数。此文件应为在群集中的所有节点上保持一致。可以通过设置SLURM_CONF在执行时修改文件位置 …

初识网络:IP、端口、网络协议、TCP-IP五层模型

目录 一、了解IP地址&#xff1a; 二、了解端口号: 三、网络协议 网络协议的三要素: ①语法 ②语义 ③时序 四、协议的分层(TCP/IP五层模型&#xff09; ①应用层 ②传输层&#xff08;也称为运输层&#xff09; ③网络层 ④数据链路层 ⑤物理层 五、A用户通过QQ给B发送一…

【Java基础知识 2】Java中常用的48个关键字和2个保留字 || Java命名规范(从此告别起名难)

本文已收录专栏 &#x1f332;《Java进阶之路》&#x1f332; 目录 本文已收录专栏 &#x1f332;《Java进阶之路》&#x1f332; Java中常用的48个关键字和2个保留字 关键字 保留字 Java命名规范&#xff08;从此告别起名难&#xff09; 01、包&#xff08;package&#…

Spring MVC 整合 Shiro 权限控制

Apache Shiro 是一个功能强大且灵活的开放源代码安全框架&#xff0c;可以细粒度地处理认证 (Authentication)&#xff0c;授权 (Authorization)&#xff0c;会话 (Session) 管理和加密 (cryptography) 等企业级应用中常见的安全控制流程。 Apache Shiro 的首要目标是易于使用和…

python实现excel和csv中的vlookup函数

本篇博客会介绍如何使用python在excel和csv里实现vlookup函数的功能&#xff0c;首先需要简单了解一下python如何操作excel 1. python处理excel 1.1 删除excel中指定行 在文件夹里创建了一个excel文件&#xff0c;可以看到里面放的是三国人物的数据 会发现在【蜀】里&#…