docker 学习笔记

本文详细介绍了Docker的安装步骤、基本使用方法,包括部署MySQL、镜像和容器的关系、Dockerfile的应用、数据卷管理以及自定义镜像和网络设置。涵盖了从初识到项目部署的关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker

1. 初识 Docker

快速构建、运行、管理应用的工具

1.1 安装

删除已有的 docker 版本

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

安装所需的软件包

首先安装 yum 工具

yun install -y yum-utils

安装成功后,配置 yum 源(阿里)

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

清华源

https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 Docker

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

校验安装

docker -v
docker images

images 会出现错误,代表 docker 还没有启动

启动和校验

# 启动 docker
systemctl start docker

# 关闭
systemctl stop docker

# 重启
systemctl restart docker

# 开机自启
systemctl enable docker

# 不报错说明安装成功
docker ps

配置镜像加速器

阿里云为例:镜像容器服务 -> 镜像工具 -> 镜像加速器

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://****.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2. Docker 使用

2.1 部署 MYSQL

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

# 3307:3306  映射端口:容器端口
# netstat -ntlp 查看所有端口

问题

# docker 暂停
docker stop mysql

# docker 删除
docker rm mysql
# 进入容器

# docker exec -it 容器号或名 /bin/bash
docker exec -it b30062adc08c /bin/bash
# 或
docker exec -it mysql /bin/bash

# 进入 mysql
mysql -uroot -p

# 查看信息
select host,user,plugin,authentication_string from mysql.user;

#更新

mysql> use mysql;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql> flush privileges;
mysql> select host,user,plugin,authentication_string from mysql.user;

2.2 镜像和容器

当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会 在运行镜像时创建一个隔 离环境,称为容器(container) 。

image-20240111172934762

2.3 常用命令

run 命令
docker run -d \
--name mysql \
-p 3307:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
  • run:创建并运行
  • –name:容器名称
  • -p:端口映射,docker端口:容器端口
  • -e:envouriment,环境变量,具体看文档

镜像名称结构

  • Repository:TAG,例 mysql:5.7

image-20240111180725331

注意

  • rmi:删除镜像

  • rm:删除容器

  • exec:进入容器内部操作

    docker exec -it <容器名> bash
    

2.4 数据卷

image-20240111182626491

命令说明
docker volume create创建数据卷
docker volume ls查看所有数据卷
docker volume rm删除指定数据卷
docker volume inspect <卷名>查看某个数据卷详情
docker volume prune清除数据卷
# 可以使用 help 命令查看参数详情
docker volume --help
注意
  • 必须在 docker run -v 数据卷名(这里可用绝对路径):容器内目录 时才能挂载映射,已经创建好的容器不可挂载

  • 当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建

    doucker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html(需求目录) nginx
    

2.5 自定义镜像

2.5.1 镜像结构

image-20240111191232626

2.5.2 Dockerfile
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN timedatectl set-timezone $TZ
# 拷贝jar包
COPY docker-demo. jar /app.jar
# 入口
ENTRYPOINT ["java","-jar","/app.jar"]
# 构建 docker 
docker build -t myImage:1.0 .
  • -t:镜像起名,格式(镜像名:版本号,默认latest)
  • :是指Dockerfile所在目录,如果就在当前目录就是 . 。

2.6 网络

加入自定义网络的容器才可以通过容器名互相访问

命令说明
docker network create创建网络
docker network ls查看所有网络
docker network rm删除指定网络
docker network prune清除未使用网络
docker network connect使指定容器加入某网络
docker network disconnect脱离某网络
docker network inspect查看网络信息
# 创建
docker network create yuxuan

# 查看
docker network ls

# mysql容器加入yuxuan网络
docker network connect yuxuan mysql
docker run -d --name mysql -p 3306:3306 --network yuxuan mysql

3. 项目部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值