一.安装 docker
查看 yum 是否能够使用, 如果报错:
Cannot find a valid baseurl for repo: base/7/x86_64
则替换 yum 源
vim /etc/yum.repos.d/CentOS-Base.repo
替换为:
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
1. 安装系统所依赖的工具需要
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.yum的配置管理,添加docker的软件源地址
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
或者
从阿里云的镜像源下载 Docker 的 CentOS 仓库文件,并将其保存到 /etc/yum.repos.d/ 目录下。将 Docker 的软件源添加到你的 CentOS 系统中,确保能够从该源安装 Docker。
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
以上两种方式二选一即可
3.更新 yum 缓存
sudo yum makecache fast
4.可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
5. 安装 docker
此命令默认安装最新版本
sudo yum install docker-ce
我这里安装 24.0.7 版本
我们可以使用 以下命令查看yum 中 docker 的版本
yum list docker-ce --showduplicates | sort -r
注:注意指定版本的拼接方式, 同时指定 docker-ce-cli 命令行工具的版本, 不然也会安装为最新版本
sudo yum install docker-ce-24.0.7 docker-ce-cli-24.0.7 containerd.io
6. 启动并设置 Docker 开机自启
sudo systemctl enable docker && systemctl start docker
7.修改 docker 镜像源
vim /etc/docker/daemon.json
添加:
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://b9pmyelo.mirror.aliyuncs.com",
"https://alzgoonw.mirror.aliyuncs.com"
]
}
执行:
sudo systemctl daemon-reload
sudo systemctl restart docker
8.将docker文件设置为自定义位置(可选)
docker 文件默认在 /var/lib/docker
我们降之放入自定义的位置, 以防止文件磁盘不够用
停止 docker
sudo systemctl stop docker
移动原数据到新位置
mkdir -p /hdata/docker_data
mv /var/lib/docker/* /hdata/docker_data/
修改 Docker 配置文件
vim /etc/docker/daemon.json
加入配置:
"data-root": "/hdata/docker_data"
启动 docker
sudo systemctl start docker
查看 docker 文件的地址
docker info | grep "Docker Root Dir"
如果输出的还是老地址, 可以再执行以下命令
sudo systemctl daemon-reload
sudo systemctl restart docker
9. 验证 Docker
docker run hello-world
如果失败, 可以查看一下防火墙
二. 安装 docker-compose
1.下载docker-compose 并放入指定文件夹
我们这里使用 1.18.0 版本
sudo curl -L "https://github.com/docker/compose/releases/download/1.18.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
参数说明:
- 1.18.0 : 1.18.0 版本
- uname -s : 自动根据本地的系统(Linux)
- uname -m : 自动根据本地的 CPU 架构(x86_64)
注: docker-compose v1 和 v2 的区别
- v1 是独立程序 docker-compose
- 从 v2 开始,docker-compose 集成到了 docker 本身,可以通过 docker compose 命令使用
2.赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
3.查看版本
docker-compose -v
三.docker 常用操作
1. docker 操作
1.启动 docker
systemctl start docker
2.重启 docker
systemctl restart docker
3.停止docker
systemctl stop docker
4.查看 docker 状态
systemctl status docker
或者
docker info
5.卸载docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
6.查看 docker 版本
docker version
或
docker -v
2.镜像操作
1. 拉取镜像
docker pull nginx
2. 列出机器上的镜像(images)
docker images
或
docker image ls
或
docker image list
3. 删除镜像
docker rmi nginx
4.强制删除镜像
docker rmi -f nginx
3.容器操作
1.默认显示当前正在运行中的容器
docker ps
2.查看包括已经停止的所有容器
docker ps -a
3.显示最新启动的一个容器(包括已停止的)
docker ps -l
4.启动容器
docker start nginx(镜像名称或id)
5.停止容器
docker stop nginx(镜像名称或id)
6.删除容器
docker rm nginx(镜像名称或id)
4.系统互操作
1.向docker中传文件
docker cp /mnt/zhujianbu.bak ffc094709e6c:/mnt/zhujianbu.bak
2.从docker中拷贝出文件
docker cp 796bc1b17289:/etc/nginx/nginx.conf ./
3.与容器进行交互
docker run -i -t ubuntu:15.10 /bin/bash
参数说明:
- -t : 在新容器内指定一个伪终端或终端。
- -i : 允许你对容器内的标准输入 (STDIN) 进行交互。
输入 exit 退出
5.docker 简单应用
docker 创建并启动一个容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数说明:
- -d :后台运行容器,返回容器ID。
- -it :以交互模式运行容器,常用于调试或进入容器内部。
- –name :为容器指定一个名称。
- -p :映射容器端口到宿主机端口,例如-p 8080:80。
1. 使用 docker run 命令来在容器内运行一个应用程序
docker run ubuntu:15.10 /bin/echo "Hello world"
参数说明:
- docker : Docker 的二进制执行文件。
- run :与前面的 docker 组合来运行一个容器。
- ubuntu:15.10 : 指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo “Hello world” : 在启动的容器里执行的命令
2.后台运行容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
参数说明:
- docker run : 启动一个新的容器。
- -d : Detached 模式运行,也就是后台运行容器(不是在当前终端里直接输出)。
- ubuntu:15.10 : 使用 ubuntu:15.10 这个镜像
- /bin/sh -c “…” : 在容器里启动 /bin/sh(一个很基础的Shell),并通过 -c 参数让它执行引号内的整段命令。
- “while true; do echo hello world; sleep 1; done” : 一个死循环,每秒输出一次 hello world。
会返回容器的id:
863a5a7805ba5f22686306ed53f51a0dc12944f861a71911dca8b203021c9160
四.docker 安装 nginx
1.安装nginx
拉取 nginx 最高版本镜像
docker pull nginx:latest
安装完成后,我们可以使用以下命令来运行 nginx 容器:
docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
- –name nginx-test :容器名称。
- -p 8080:80 : 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
- -d nginx : 设置容器在在后台一直运行。
2.修改 nginx 配置文件
共两种方式:
2.1 进入容器内部修改
docker exec -it 796bc1b17289 /bin/bash
参数说明:
- exec : 命令代表附着到运行着的容器内部
- -it : 是 -i 与 -t两个参数合并写法,-i -t 标志着为我们指定的容器创建了TTY并捕捉了STDIN
- 796bc1b17289 : 是我们要进入的容器Id
- /bin/bash : 指定了执行命令的shell
2.2 将nginx容器内部配置文件挂载到主机
2.2.1 在主机目录 /mnt 下建立相关文件夹
mkdir -p ./nginx/{conf,html,logs}
2.2.2 将容器内的nginx.conf与default.conf文件分别拷贝到主机/mnt/nginx和/mnt/nginx/conf下,分别执行
docker cp 796bc1b17289:/etc/nginx/nginx.conf ./
docker cp 796bc1b17289:/etc/nginx/conf.d/default.conf ./conf/
参数说明:
- cp : 命令代表复制
- 796bc1b17289 : 是我们nginx容器的ID,/etc/nginx/nginx.conf 是容器内部nginx.conf 路径
3.停止 nginx 容器并移除
docker stop 796bc1b17289
docker rm 796bc1b17289
4.启动 Nginx
docker run -d --name mynginx -p 8080:80 -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/nginx/logs:/var/log/nginx -v /mnt/nginx/html:/usr/share/nginx/html -v /mnt/nginx/conf:/etc/nginx/conf.d --privileged=true nginx
参数说明:
- -v : 挂载目录,格式 -v: 表示将主机目录与容器目录之间进行共享
- –privileged=true : 容器内部对挂载的目录拥有读写等特权
五.docker安装mysql
1.查找 mysql 版本
docker search mysql
或者在网站
https://hub.docker.com/_/mysql?tab=tags
2.拉取 Docker Hub上的 mysql 镜像
以拉取5.6版本为例
docker pull mysql:5.6
3.建立需要映射的mysql相关文件夹
mkdir -p ./mysql_data/{conf,data,logs}
conf下建立 my.cnf 文件
vim my.cnf
4.启动容器
docker run -d -p 3308:3306 --name mymysql -v /mnt/mysql_data/conf/my.cnf:/etc/mysql/my.cnf -v /mnt/mysql_data/logs:/var/log/mysql -v /mnt/mysql_data/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123zxcv --privileged=true mysql:5.6
参数说明:
- -p 3308:3306 :将容器的3306端口映射到主机的3308端口
- -v /mnt/mysql_data/conf/my.cnf:/etc/mysql/my.cnf :将主机目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
- -v /mnt/mysql_data/logs:/var/log/mysql :将主机下的logs目录挂载到容器的/var/log/mysql
- -v /mnt/mysql_data/data:/var/lib/mysql :将主机下的data目录挂载到容器的/var/lib/mysql
- -e MYSQL_ROOT_PASSWORD=123zxcv :初始化root用户的密码
- mysql:5.6 : 需要运行的容器名称以及版本号