Docker 之入门安装

Docker 之入门安装

文章目录

  • CentOS7 安装 DockerCE
  • Ubuntu16 安装 DockerCE
  • Ubuntu20 安装 Docker
  • Docker Compose 安装与卸载
  • Docker常用命令
  • Ubuntu24 安装 Docker
  • Docker 常用命令
  • Centos安装Docker(指定Docker版本)
  • 配置镜像加速器
  • 数据卷
    • 创建nginx容器
    • 创建mysql容器
  • Docker 容器网络

Docker 镜像使用和安装
Docker安装官方文档
Dokce镜像官网

CentOS7 安装 DockerCE

在 CentOS 下安装 Docker Engine

一起执行下面的命令:

# 1、移除以前docker相关包 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2、配置yum源 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 3、安装docker sudo yum install -y docker-ce docker-ce-cli containerd.io # 启动 docker、设置 docker 开机自启 systemctl enable docker --now

Ubuntu16 安装 DockerCE

# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd # 安装 https 相关的软件包 sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common # 添加 阿里云 的apt仓库 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable" # 安装 Docker sudo apt-get update sudo apt-get install docker-ce

设置开机自启动:

sudo systemctl enable docker

Ubuntu20 安装 Docker

卸载旧版本:

sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update

安装 https 相关的软件包:

sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release

添加 Docker 的 GPG 密钥:

sudo mkdir -p /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

向 sources.list 中添加 Docker 软件源:

echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次更新 apt 包索引:

sudo apt-get update

安装最新版本的 Docker Engine、containerd 和 Docker Compose:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

设置开机自启动:

sudo systemctl enable docker

Docker Compose 安装与卸载

Docker Compose下载地址:
https://github.com/docker/compose/releases/download/v2.29.6/docker-compose-linux-x86_64
将下载的文件复制到/usr/local/bin目录,重命名为:docker-compose
添加可执行权限sudo chmod +x /usr/local/bin/docker-compose

# docker-compose -v Docker Compose version v2.27.3

卸载:
删除文件即可:sudo rm /usr/local/bin/docker-compose

Docker常用命令

查看正在运行的容器

# 查看正在运行的容器 docker ps # 查看所有的容器,包括已经停止的。 docker ps -a

查看所有镜像

docker images

拉取镜像

docker pull <镜像名:tag> # 例如以下代码 docker pull mysql

停止、启动、杀死指定容器

docker start <容器名 or ID> docker stop <容器名 or ID> docker kill <容器名 or ID>

删除容器

docker rm -f <容器名 or ID> # 删除所有容器 docker rm -f $(docker ps -a -q)

查看容器日志

docker logs -f <容器名 or ID>

进入容器

docker exec -it <容器名 or ID> bash

Ubuntu24 安装 Docker

1. 卸载旧版本(可选但建议执行)
为避免冲突,先移除系统中可能存在的旧版 Docker 相关包:

forpkgindocker.io docker-docdocker-composedocker-compose-v2 podman-docker containerd runc;dosudoapt-getremove$pkg;done

2. 安装依赖包
更新软件源并安装所需的工具:

sudoaptupdatesudoaptinstall-yca-certificatescurlgnupg lsb-release

3. 添加 Docker 的 GPG 密钥和软件源(使用阿里云镜像)

# 创建密钥存储目录sudomkdir-p/etc/apt/keyrings# 下载阿里云镜像上的 Docker GPG 密钥curl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgsudochmoda+r /etc/apt/keyrings/docker.gpg# 添加 Docker 阿里云软件源(Ubuntu 24.04 适用)echo\"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null

4. 安装 Docker Engine
更新软件包索引,然后安装 Docker 及所有核心组件:

sudoaptupdatesudoaptinstall-ydocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. 启动 Docker 并设置开机自启

sudosystemctlenabledockersudosystemctl startdocker

6. 配置国内镜像加速(可选但强烈建议)
编辑 Docker 配置文件,添加国内镜像源(如中科大、网易、阿里云),可以大幅提升拉取镜像的速度:

sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://mirror.aliyuncs.com" ] } EOFsudosystemctl daemon-reloadsudosystemctl restartdocker

Docker 常用命令

# 查看正在运行的容器 docker ps # 查看所有的容器,包括已经停止的。 docker ps -a 查看所有镜像 docker images # 拉取镜像 docker pull <镜像名:tag> # 如果不写tag,默认就是latest,最新的版本 docker pull mysql docker pull mysql:5.7.42 # 停止、启动、杀死指定容器 docker start/stop/kill/restart <容器名 or ID> # 删除容器 docker rm -f <容器名 or ID>

进入容器

docker exec -it <容器名 or ID> /bin/bash

Centos安装Docker(指定Docker版本)

# 列出当前所有docker的包 yum list installed | grep docker # 卸载docker包 yum -y remove [docker的包名称] # 删除docker的所有镜像和容器 rm -rf /var/lib/docker # 如果系统没有docker可以直接从这一步开始 # 安装必要的软件包 sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 # 设置下载的镜像仓库 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 列出需要安装的版本列表 yum list docker-ce --showduplicates | sort -r # 安装指定版本(这里使用18.0.1版本) sudo yum install docker-ce-18.06.1.ce # 查看版本 docker -v # 启动Docker sudo systemctl start docker # 设置开机启动 sudo systemctl enable docker # 重启Docker sudo systemctl restart docker

配置镜像加速器

sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://docker.1panel.live","https://hub.rat.dev"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

数据卷

数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。
数据卷目录:/var/lib/docker/volumes

如何挂载数据卷:
在创建容器时,利用 -v 数据卷名:容器内目录完成挂载。
容器创建时,如果发现挂载的数据卷不存在时,会自动创建。

数据卷的常见命令:
查看数据卷:docker volume ls
删除数据卷:docker volume rm [数据卷目录名称]
查看数据卷详情:docker volume inspect [数据卷目录名称]
删除未使用的数据卷:docker volume prune

查看容器详情:docker inspect [容器名]
挂载的数据卷目录详情:

创建nginx容器

挂载html目录

docker run -d --name=nginx -p 80:80 -v html:/usr/share/nginx/html nginx docker run -d \ --name=nginx \ -p 80:80 \ -p 18080:18080 \ -v /home/nginx/html:/usr/share/nginx/html \ -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \ --network hm\ nginx

创建mysql容器

并挂载数据和配置文件目录:

# 保存数据 mkdir /root/mysql/data # 初始化数据 mkdir /root/mysql/init # 配置文件 mkdir /root/mysql/conf

将初始化脚本复制到 /root/mysql/init
将配置文件复制到 /root/mysql/conf,mysql.cnf

[client] default_character_set=utf8mb4 [mysql] default_character_set=utf8mb4 [mysqld] character_set_server=utf8mb4 collation_server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
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/init:/docker-entrypoint-initdb.d \ -v /root/mysql/conf:/etc/mysql/conf.d \ mysql

mysql与navicat建立连接出现1251错误:
原因:mysql8之前的版本中加密规则是mysql_native_password,在mysql8之后,加密规则是caching_sha2_password。
解决方案:把mysql用户登录密码加密规则还原成mysql_native_password。

docker exec -it mysql /bin/bash mysql -uroot -p # 修改加密规则 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; # 更新用户密码,可以不执行 ALTER USER 'root'@'%' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES; show variables like "%char%";

Docker 容器网络

# 创建一个网络 docker network create # 查看所有网络 docker network ls # 删除指定网络 docker network rm # 清除未使用的网络 docker network prune # 使指定容器连接加入某网络 docker network connect # 使指定容器连接离开某网络 docker network disconnect # 查看网络详细信息 docker network inspect docker network create net1 docker network inspect net1 docker network connect net1 mysql