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 --nowUbuntu16 安装 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 dockerUbuntu20 安装 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 dockerDocker 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> bashUbuntu24 安装 Docker
1. 卸载旧版本(可选但建议执行)
为避免冲突,先移除系统中可能存在的旧版 Docker 相关包:
forpkgindocker.io docker-docdocker-composedocker-compose-v2 podman-docker containerd runc;dosudoapt-getremove$pkg;done2. 安装依赖包
更新软件源并安装所需的工具:
sudoaptupdatesudoaptinstall-yca-certificatescurlgnupg lsb-release3. 添加 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/null4. 安装 Docker Engine
更新软件包索引,然后安装 Docker 及所有核心组件:
sudoaptupdatesudoaptinstall-ydocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin5. 启动 Docker 并设置开机自启
sudosystemctlenabledockersudosystemctl startdocker6. 配置国内镜像加速(可选但强烈建议)
编辑 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 restartdockerDocker 常用命令
# 查看正在运行的容器 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/bashCentos安装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 \ mysqlmysql与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