首页 > 其他分享 >docker study

docker study

时间:2024-11-30 20:43:25浏览次数:3  
标签:容器 study yum mysql 3306 镜像 docker

docker

安装

首先如果系统中已经存在旧的 Docker,则先卸载:

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

安装一个 yum 工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

安装成功后,执行命令,配置 Docker 的 yum 源(已更新为阿里云源):

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

更新 yum,建立缓存

sudo yum makecache timer

安装 Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

这里使用服务器安装

image-20241016140617437

使用阿里云镜像加速

image-20241016141138821

部署 MySQL

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql

*Docker会自动搜索并下载MySQL。注意:这里下载的不是安装包,而是镜像(image)镜像中不仅包含了MySQL本身,还包含了其运行所需要的环境、配置、系统级函数库。因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了。这套独立运行的隔离环境我们称为容器(container)

解读:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行
  • --name mysql : 给容器起个名字叫mysql,你可以叫别的
  • -p 3306:3306 : 设置端口映射
    • 容器是隔离环境,外界不可访问。但是可以将宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。
    • 容器内端口往往是由容器内的进程决定,例如 MySQL 进程默认端口是 3306,因此容器内端口一定是 3306;而宿主机端口则可以任意指定,一般与容器内保持一致。
    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的 3306 映射到容器内的 3306 端口(有多个mysql容器就可以设置3307,3308)
  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数
    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定
    • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置 MySQL 默认密码
  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像
    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号
    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest
# 用基本命令,寻找 Networks.bridge.IPAddress 属性
docker inspect mysql
image-20241016144703533

这个 ip 地址是对外隔离的

链接 docker 创建的 mysql:

mysql -h 172.0.0.1 -P 3306 -u root -p

输入密码 123

在外网访问时,是访问不到 docker 的 mysql 的 IP 172.17.0.2 的,所以直接访问服务器地址,3306 端口 映射 到 172.17.0.2:3306

image-20241016150355659

常见命令

image-20241016150650791

docker 镜像仓库

Docker Hub Container Image Library | App Containerization

数据卷(volume)

挂载数据卷

数据卷(volume)是一个虚拟目录,是 容器内目录宿主机目录 之间映射的桥梁

存放数据卷的目录:/var/lib/docker/volumes

命令 说明 文档地址
docker volume create 创建数据卷 docker volume create
docker volume ls 查看所有数据卷 docs.docker.com
docker volume rm 删除指定数据卷 docs.docker.com
docker volume inspect 查看某个数据卷的详情 docs.docker.com
docker volume prune 清除数据卷 docker volume prune

inspect v.检查,审视;检阅,视察;进行检查,进行视察

一般在创建容器的时候指定数据卷的挂载

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

html 是数据卷的名字

数据卷挂载的容器目录 /usr/share/nginx/html

(这里使用Nginx,端口号默认80)

这样实现了 双向绑定

挂载本地目录或文件

​ 数据卷的目录结构较深,如果我们去操作数据卷目录会不太方便。在很多情况下,我们直接将容器目录与宿主机指定目录挂载。挂载语法与数据卷类似:

# 挂载本地目录
-v 本地目录:容器内目录
# 挂载本地文件
-v 本地文件:容器内文件

注意:本地目录或文件必须以 /./开头,如果直接以名字开头,会被识别为数据卷名而非本地目录名

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  mysql

服务器用的是数据卷

image-20241016154231071

镜像

docker 的镜像是分层的:

image-20241016155820965

已经存在的层,再去 pull,就会省略
image-20241016155924813

指令 说明 示例
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量,可在后面指令使用 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY ./xx.jar /tmp/app.jar
RUN 执行Linux的shell命令,一般是安装过程的命令 RUN yum install gcc
EXPOSE 指定容器运行时监听的端口,是给镜像使用者看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar

标签:容器,study,yum,mysql,3306,镜像,docker
From: https://www.cnblogs.com/rainnan/p/18578844

相关文章

  • 【docker】Dockerfile指令讲解,与企业案例应用
    Dockerfile简介Dockerfile是一个文本文件,包含了构建Docker镜像所需的所有命令。通过执行dockerbuild命令,Docker会按照Dockerfile中的指令一步步构建出镜像。Dockerfile基本结构一个简单的Dockerfile可能包含以下内容:FROMubuntu:20.04LABELmaintainer="y......
  • wsl docker
    Hyper-V.batpushd"%~dp0"dir/b%SystemRoot%\servicing\Packages\*Hyper-V*.mum>hyper-v.txtfor/f%%iin('findstr/i.hyper-v.txt2^>nul')dodism/online/norestart/add-package:"%SystemRoot%\servicing\Packages\%%i&......
  • docker可用国内镜像源2024.11.30
    系统版本/proc/versionLinuxversion5.15.0-126-generic(buildd@lcy02-amd64-052)(gcc(Ubuntu9.4.0-1ubuntu1~20.04.2)9.4.0,GNUld(GNUBinutilsforUbuntu)2.34)#136~20.04.1-UbuntuSMPThuNov1416:38:05UTC2024docker版本Dockerversion27.3.1,buildc......
  • 修复 Docker Ubuntu 容器中 Tab 自动补全与上下键历史命令失效问题
    1简介在使用Docker容器运行Ubuntu系统时,有时会遇到Tab键自动补全和上下键历史命令失效的问题。这通常是由于终端模拟器的设置不当引起的。2解决方案2.1安装bash-completebash-completion是一个增强的命令补全工具,能够为许多常用的命令提供智能补全。这在复杂的命令行操作......
  • Docker Compose 优先拉取镜像,若无镜像则自动构建并启动服务
    言简意赅的讲解DockerComposebuild解决的痛点之前我介绍了Docker的一些基础使用和常见问题。后续遇见了拉取不到镜像的网络问题,解决了网络问题之后,有些童鞋反馈很多项目现场无法拉取镜像,甚至有内网限制的情况,需要优先拉取镜像否则本地构建,大家的需求越来越复杂,那本文......
  • UOS服务器版,在docker中使用elasticsearch碰到的权限问题
    对docker没研究,对elasticsearch也没研究,主打一个拿来就用,能跑就行.有些系统(主要指UOS服务器版,最近碰到)docker的版本是podman,如果直接yuminstall docker装上的可能是(因为另一台没问题)podman版本,运行起来乱七八糟问题,可以卸载podman,然后yuminstalldocker-ce......
  • docker-compose 报错 container.image_config['ContainerConfig'].get('Volumes') or
    应该使用dockercompose而不是docker-compose(废弃的1.0版本)env:WSLUbuntu-22.04报错关键字如下File"/usr/lib/python3/dist-packages/compose/service.py",line1579,inget_container_data_volumescontainer.image_config['ContainerConfig'].get('......
  • Docker部署常见应用之桌面版系统ubuntu-desktop
    文章目录ubuntu-desktop简介ubuntu-desktop部署参考文章ubuntu-desktop简介colinchang/ubuntu-desktop是一个Docker镜像,基于KasmWeb⁠的Ubuntu22.04桌面版(Web)DockerImage。镜像替换了阿里云UbuntuJammy镜像源,安装了GoogleChrome浏览器和流行的文本编辑器VS......
  • docker修改存储路径
    停止Docker服务:sudosystemctlstopdocker复制现有的Docker存储目录到新位置(如果已有数据,确保已备份):sudorsync-aP/var/lib/docker//new/path/docker/修改Docker的服务文件。Docker的服务文件通常在/lib/systemd/system/docker.service。使用编辑器打开并修改ExecStar......
  • rustdesk中继服务器的docker镜像使用-有手就行
    rustdesk中继服务器搭建踩坑文章目录前言一、官方文档二、使用的配置三、docker拉取并运行1、docker拉取镜像2、运行hbbs3、运行hbbr四、配置防火墙与安全组1、配置防火墙2、安全组配置3、测试网络连通性五、在客户端设置hbbs/hbbr地址1、点击ID......