Docker的学习记录

news/2024/10/23 5:45:37/

Docker是一个被广泛使用的开源容器引擎,基于Go语言,遵从Apache2.0协议开源。

docker的三个概念:容器、镜像和仓库。

  • 镜像(Image):镜像是Docker中的一个模板。通过 Docker镜像 来创建 Docker容器,一个镜像可以创建出多个容器。 镜像是由一系列指令一步一步构建出来
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

docker安装

安装相关系统工具

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

// 更新yum缓存

sudo yum makecache fast

// 安装

sudo yum -y install docker-ce

// 启动,查看,停止

sudo systemctl start docker

systemctl status docker

systemctl stop docker

查看docker版本

docker -v

// 查看docker操作命令

docker

修改docker数据目录

有时候需要将Docker的数据目录统一到某个目录中,默认的地址为/var/lib/docker,则需要配置data-root属性修改到对应目录,具体操作步骤如下:

## 查看当前目录 
docker info |grep Dir 
 
## 创建数据目录 
mkdir -p /opt/docker/data 
## 创建配置文件 
touch /etc/docker/daemon.json 
## 修改配置文件 
vim /etc/docker/daemon.json 
## 在文件中添加以下内容并保存
 { 
    "data-root": "/opt/docker/data"
 } 
 
## 重启Docker 
service docker restart 
 
## 查看修改后的目录是否为变更的目录 
docker info |grep Dir
 


从仓库获取镜像

搜索镜像:docker search image_name
搜索结果过滤:
是否是官方:
docker search --filter "is-official=true" image_name
是否是自动化构建
docker search --filter "is-automated=true" image_name
大于多少颗星
docker search --filter stars=3 image_name
下载镜像:docker pull image_name
本地镜像的查看:docker images
本地镜像的删除:docker rmi image_name

查看镜像的信息 docker inspect  mysql

如下,分别是镜像的名字,标签,id,创建时间和大小。

容器的操作

容器的创建、查看、停止、重启 

1.创建容器:docker run -itd --name=container_name image_name
-i 表示以交互模式运行容器;
-d 表示后台运行容器,并返回容器ID;
-t 为容器重新分配一个伪输入终端;
--name 为容器指定名称

2.查看容器(运行中的):docker ps
3.查看容器(包括已停止的):docker ps -a
4.停止容器:docker stop container_name/container_id
5.启动容器:docker start container_name/container_id
6.重启容器:docker restart container_name/container_id
7.删除容器:docker rm container_name/container_id

容器的修改及保存

1.进入容器:docker exec -it container_name/container_id /bin/bash
2.退出容器:exit
3.提交修改:
docker commit -a "author" -m "message" container_name/container_id new_image_name:tag_name

参数说明

-a:参数可选,用于指定作者,可以写你的名字
-m:参数可选,提交信息,可以说一下你做了哪些修改
container_id:该参数为被修改的容器ID
new_image_name:此为新镜像的名字,可自定义
tag_name:此为新镜像的标签,可不写,不写时标签默认为latest

容器的端口映射

docker run -itd  --name container_name -p 宿主机端口号:容器端口号  image_name

例如:docker run -itd --name nginx  -p 8081:80 nginx

文件挂载

docker run -itd -v /宿主机/文件目录:/容器/目录

将容器的文件复制到本地

docker cp 容器名:/容器目录/文件名 /宿主机目录/文件名

将本地的文件复制到容器
docker cp /宿主机目录/文件名 容器名:/容器目录/文件名

PS:文件挂载很重要,比如mysql数据库的容器数据很重要,通过文件挂载,可以使得容器的数据也保存在本地中。

容器互联

docker run -itd --link 要关联的容器名字:容器在被关联的容器中的别名

Dockerfile

Dockerfile就是名为Dockerfile的文件,文件中包含一些Linux命令,Docker通过读取文件中的命令来组建镜像。


Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,# 为 Dockerfile 中的注释。

运行Dockerfile
docker build -t image_name:tag_name .

也可以通过-f参数来指定Dockerfile文件位置
docker build -f /path/Dockerfile .

docker安装mysql

docker search mysql

docker pull mysql

然后查看docker images

 docker inspect  mysql  查看mysql的持久化目录

docker run -itd --name=mysql -p 3306:3306  -v /home/mysql/docker_mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password  mysql

参考课程:

Docker从入门到实战应用 - 网易云课堂


http://www.ppmy.cn/news/1126709.html

相关文章

MySQL常见数据类型、特点以及使用场景

以下是一些常见的MySQL数据类型及其特点,包括数据类型的占用字节数、最大存储值和适用场景: 1. 整数类型: TINYINT:1字节,范围从-128到127(有符号),0到255(无符号&…

第38节——useId——了解

一、思考如下问题 1、这段代码在通过服务端渲染的时候会出现什么问题 const id Math.random();export default () > {return <div id{id}>哈哈哈哈</div> }2、服务端渲染的过程 1、React在服务端渲染&#xff0c;生成随机id&#xff08;假设为0.1&#xff0…

java - 数组工具类Arrays

目录 前言 一、Arrays是什么? 二、常用方法 1.toString()&#xff1a;将数组转换为字符串形式。 2. binarySearch()&#xff1a;在已排序的数组中查找指定元素的索引。 3.fill()&#xff1a;将数组的所有元素都设置为指定值。 4. copyOf()&#xff1a;将一个数组的部分或…

串口电平信号分析--一下看懂不同的串口通信信号

串口电平信号分析–一下看懂不同的串口通信信号

【编译和链接——详解】

1. 翻译环境和运行环境&#x1f4bb; 在ANSI C的任何⼀种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执⾏的机器指令。 第2种是执⾏环境&#xff0c;它⽤于实际执⾏代码。 2. 翻译环境&#x1f4bb; 那翻译环境是怎么将…

应用在手机触摸屏中的电容式触摸芯片

触控屏&#xff08;Touch panel&#xff09;又称为触控面板&#xff0c;是个可接收触头等输入讯号的感应式液晶显示装置&#xff0c;当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置&#xff0c;可用以取代机械式的按钮面板&…

Redis 线程模式

Redis 是单线程吗&#xff1f; Redis 单线程指的是 [接收客户端请求 -> 解析请求 -> 进行数据读写操作 -> 发送数据给客户端] 这个过程是由一个线程 (主线程) 来完成的&#xff0c;这也是常说的 Redis 是单线程的原因。 但是 &#xff0c;Redis 程序不是单线程的&am…

初级软件测试入门教程

一、软件测试的基本概念 1、软件测试的定义 就是以发现错误为目的而运行程序的过程。 软件测试员的目标是找到软件缺陷&#xff0c;尽可能早一些&#xff0c;并确保其得以修复。 2、软件测试方法总体分类 试图验证软件是“工作的”&#xff08;所谓“工作的”就是指软件的…