docker环境和dockerfile制作
docker
一、环境和安装
1、 docker安装
- 使用 root 权限登录 CentOS。确保 yum 包更新到最新
sudo yum update
- 卸载旧版本
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ce
- 安装 Docker 所需依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
- 指定 Docker 镜像源,使用阿里云加速
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker
sudo yum -y install docker-ce
2、安装成功
1.验证 Docker 是否安装成功:查看安装的版本号
docker -v
- 启动 Docker
sudo systemctl start docker
- 设置开机启动
sudo systemctl enable docker
- 测试镜像
sudo docker run hello-world
3 、错误解决
错误1:更新 yum 报错
备份仓库配置文件:CentOS-Base.repo => CentOS-Base.repo.back
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back
修改仓库配置文件,使用阿里云加速
sudo tee /etc/yum.repos.d/CentOS-Base.repo <<-'EOF'
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7EOF
错误2:yum-config-manager:找不到命令
这个是因为系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum-utils 安装就可以了。
yum -y install yum-utils
错误3:Error response from daemon: Get “https://registry-1.docker.io/v2/”(访问失败,需配置代理/镜像加速)
通过修改 Docker 的配置文件 daemon.json 来配置镜像加速器,可以加速 Docker 镜像的拉取速度,尤其是在国内环境下。操作步骤如下:
编辑 /etc/docker/daemon.json 文件:
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com","https://docker.m.daocloud.io","https://dockerhub.icu","https://docker.anyhub.us.kg","https://docker.1panel.live"]
}
重新加载 deamon.json 配置文件
sudo systemctl daemon-reload
重启 Docker
sudo systemctl restart docker
通过 docker info 命令查看当前 Docker 配置,是否成功加载了镜像加速器:(可能只输出Registry Mirrors:,通过拉取镜像测试)
sudo docker info | grep -i 'Registry Mirrors'
测试拉取镜像
docker pull hello-world
二、docker常用命令
帮助命令
docker xxx --help
镜像命令
docker images #列出所有镜像
docker search mysql #查找mysql镜像
docker pull mysql:5.7 #拉取mysql镜像
docker rmi -f 镜像 #删除镜像
容器命令
- 查看容器
docker ps #列出运行的镜像
docker ps -aq #列出运行镜像id
- 删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 加-f
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q|xargs docker rm #删除所有的容器
- 启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
常用其他命令
后台启动容器
docker run -d -t 容器名
查看日志
docker logs -f -t --tail number 容器id
-tf #显示日志
--tail number #显示日志条数
查看容器中进程信息
docker top 镜像id
查看镜像元数据
docker inspect 镜像id
进入当前正在进行的容器
# 方式一
docker exec -it 容器id /bin/bash
# 方式二
docker attach 容器id
从容器中拷贝文件
docker cp 容器id:目标主机目录
三、容器数据卷
使用数据卷
方式一 使用-v 选项
docker run -it -v 主机目录:容器目录 容器
docker run -it -v /home/ceshi:/home/ centos /bin/bash-d 后台运行
-e 环境配置
-v 配置挂载卷
-p 端口映射
--name 容器名字
docker run -d -p 3307:3306 -v /home/etc/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.7
# 启动mysql并挂载到主机目录
# 使用sqlyog等数据库工具连接时可能会出现连接失败,可能是防火墙的原因,手动关闭防火墙试一下
systemctl stop firewalld
查看容器卷