CentOS7下安装docker 并配置nginx全过程

1、安装docker

首先先知道自己需不需要卸载已有的版本,如果想下载一个新版的docker版本,首先输入以下命令:

[root@localhost 桌面]# 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

没有匹配才能够重新安装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
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

接下来配置好yum仓库添加镜像地址,我们可以开始下载docker了。查看可用版本有哪些:

yum list docker-ce --showduplicates | sort -r

选择一个版本并安装:yum install docker-ce-版本号

yum -y install docker-ce-18.03.1.ce

安装完毕可以检查一下版本:

docker version

如果出现以下的内容,比如:

Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:41 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

那就是你还没有开启docker服务,是看不到server内容的。

打开服务:

systemctl start docker

再回去看版本(我临时换过版本,命名没问题):

[root@localhost 桌面]# docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:41 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:44:05 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

成功显示!!

2、拉取nginx镜像

首先拉取镜像,使得获取images镜像

docker pull nginx

docker images

在这里插入图片描述

上图是成功运行的截图。执行如下命令:

docker run -d --name nginx -p 8888:80 nginx

如果你在这一步失败了,比如如下:

在这里插入图片描述

这里我的解决办法就是重新卸载安装,因为我遇到的问题是docker与linux版本不兼容(CentOS7.0)。

继续运行,如果成功率那么就可以输入:

docker ps

看到自己的镜像ID说明已经成功了,那么继续进行配置。

3、配置nginx

首先进入bash里面。

[root@localhost etc]# docker exec -it fcd2a914f657 bash
root@fcd2a914f657:/# 
root@fcd2a914f657:/# 

这里我是直接复制好id的,实际上可以简单打出前几个字符即可。

首先查看配置文件:

cat /etc/nginx/nginx.conf 

如果我们想要使用vim /etc/nginx/nginx.conf ,修改会提示vim: command not found。

那么我们就要再安装一下vim了。

1. 先更新包管理
apt-get update
2. 安装vim
apt-get install vim

安装完毕就开始修改一下配置吧。

记住这四个文件的目录:

日志目录 : /var/log/nginx 
配置目录 : /etc/nginx/conf.d 
主配置文件:/etc/nginx/nginx.conf 
项目目录 : /usr/share/nginx/html nginx

然后exit退出,复制容器中四个路径下的文件到自己新建的目录下。

我这里创建的目录是:usr/local/docker/nginx。把四个文件放置于此即可。

在这里插入图片描述

这里复制了上面的内容,方便复制粘贴操作:

[root@localhost etc]# docker cp fcd2a914f657:/etc/nginx/nginx.conf /usr/local/docker/nginx
[root@localhost etc]# docker cp fcd2a914f657:/var/log/nginx /usr/local/docker/nginx
[root@localhost etc]# docker cp fcd2a914f657:/etc/nginx/conf.d /usr/local/docker/nginx
[root@localhost etc]# docker cp fcd2a914f657:/usr/share/nginx/html /usr/local/docker/nginx

4、启动服务

这次的启动服务在于我们要重新根据自己目录下的文件来配置,这样很利于方便日后自行配置nginx文件。

docker stop fcd2a914f657
docker rm fcd2a914f657

在这里插入图片描述

我们再次启动服务尝试运行;

docker run \
-p 80:80 \
--name my-nginx \
--restart=always \
-v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /usr/local/docker/nginx/html:/usr/share/nginx/html \
-v /usr/local/docker/nginx/logs:/var/log/nginx \
-d \
nginx
  • -v:我们在这里设置宿主机与容器的映射关系
  • –restart=always 一直保持运行,自动启动

在这里插入图片描述

这样子就算是大功告成了。

最终结果如下:

在这里插入图片描述

谢谢大家的阅读,希望这一篇文章能够解决你的问题。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐