[linux]docker快速入门

安装

docker官网: CentOS | Docker Docs

  • 准备工作: 准备ConstOS7的虚拟机环境
  • 账密: root/root
  • 飞书文档: Docs
  1. 卸载旧版本

    // 首先如果系统中已经存在旧的Docker,则先卸载
    yum remove docker
    docker-client
    docker-client-latest
    docker-common
    docker-latest
    docker-latest-logrotate
    docker-logrotate
    docker-engine

  • 注意,这些是一条指令

2.配置Docker的yum库

// 首先要安装一个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 fast

意外情况, 安装失败:

解决: 服务器连接不到网络,需要配置镜像源

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  • i 进入插入模式, esc 退出插入模式, :wq保存并退出
  • 清理缓存, 重新安装

3.安装Docker

// 执行命令,安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 查看版本: docker -v
  • 查看服务是否启动: docker images

4.启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
  • 先设置开启自启, 再启动, 再查看进程

5.配置镜像加速

镜像地址可能会变更,如果失效可以百度找最新的docker镜像。

配置镜像步骤如下:

# 创建目录
mkdir -p /etc/docker

# 复制内容
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirrors.tuna.tsinghua.edu.cn",
        "http://mirrors.sohu.com",
        "https://ustc-edu-cn.mirror.aliyuncs.com",
        "https://ccr.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.awsl9527.cn"
    ]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

部署MySql

先停掉虚拟机中的MySQL,确保虚拟机已经安装Docker,且网络开通的情况下,执行下面命令安装MySQL

docker run -d \
  --name mysql2 \
  -p 3307:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql
  • / 只是换行的作用

执行过程

  • 查看是否启动成功: docker ps
  • 我已经关闭防火墙

连接mysql

镜像和容器

当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。

镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。

Docker会在运行镜像时创建一个隔离环境,称为容器(container)。

镜像仓库: 存储和管理镜像的平台,Docker官方维护了一个公共仓库: DockerHub.

  1. 我们输入命令, 会被docker服务监听到, 然后交给守护进程执行
  2. 如果需要下载镜像, 就会去镜像仓库下载
  3. 下载完成后, 就会运行镜像, docker会为运行的镜像创建容器, 这样就可以多实例部署, 互不干扰

命令解读

  • docker run: 创建并运行一个容器,-d是让容器在后台运行
  • --name mysql: 给容器起个名字,必须唯一
  • -p 3306:3306: 设置端口映射(宿主机端口:容器服务端口)
    • 宿主机对外可以访问, 但是容器服务是对外隔离的
    • 需要使用宿主机代理, 访问容器服务
  • -e KEY=VALUE: 是设置环境变量
    • 各软件启动需要设置的环境变量不同
    • 可以去镜像仓库, 查看镜像启动所需要的环境变量
  • mysql: 指定运行的镜像的名字
    • 镜像名称一般分两部分组成: [repository]:[tag]。
    • 其中repository就是镜像名, tag是镜像的版本
    • 在没有指定taq时,默认是latest,代表最新版本的镜像
相关推荐
Syclus7 分钟前
成功解决WSL2上的Ubuntu22.04执行sudo apt-get update指令报错问题
linux·运维·服务器
kaoa0008 分钟前
Linux入门攻坚——36、Linux防火墙-iptables-2
linux·运维
EasyCVR43 分钟前
国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案
运维·科技·ffmpeg·音视频·1024程序员节·监控视频接入
筑梦之路1 小时前
k8s 处理namespace删除一直处于Terminating —— 筑梦之路
云原生·容器·kubernetes
恒创科技HK1 小时前
ssh和ssl的区别在哪些方面?
运维·ssh·ssl
上烟雨心上尘1 小时前
通过 ssh config 快速免密连接服务器
运维·服务器·ssh
颜淡慕潇2 小时前
【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】
后端·云原生·容器·kubernetes
Linux运维老纪2 小时前
K8s资源对象监控之kube-state-metrics详解(Detailed Explanation of Kube State Metrics)
网络·安全·云原生·容器·kubernetes·云计算·运维开发
meeiuliuus2 小时前
【读书笔记/深入理解K8S】集群控制器
云原生·容器·kubernetes