CentOS下Docker安装

CentOS下Docker安装

Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本

参考:
https://www.runoob.com/docker/centos-docker-install.html
https://www.cnblogs.com/murry/p/9332747.html



1 前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。


2 使用 yum 安装(CentOS 7下)

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

[root@localhost ~] uname -r
3.10.0-1062.1.1.el7.x86_64



3 安装 Docker

从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
本文介绍 Docker CE 的安装使用。
移除旧的版本:

$ 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

selinux关闭
查看

[root@dev-server ~] getenforce
Disabled
[root@dev-server ~] /usr/sbin/sestatus -v
SELinux status:                 disabled

临时关闭

##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0

永久关闭

vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
设置后需要重启才能生效

关闭防火墙

查看防火墙状态: systemctl status firewalld.service
绿的running表示防火墙开启
执行关闭命令: systemctl stop firewalld.service
再次执行查看防火墙命令:systemctl status firewalld.service
执行开机禁用防火墙自启命令  : systemctl disable firewalld.service

启动:systemctl start firewalld.service
防火墙随系统开启启动  : systemctl enable firewalld.service

配置yum源(这里可以保留自己需要的yum源,自己视情况而定)

[root@localhost ~] wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
...
[root@localhost ~]
[root@localhost ~] wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
...
[root@localhost ~]
[root@localhost ~] yum clean all
[root@localhost ~] yum makecache

确保 yum 包更新到最新

$ sudo yum update

安装一些必要的系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存

sudo yum makecache fast

可以查看所有仓库中所有docker版本,并选择特定版本安装

[root@localhost ~] yum list docker-ce --showduplicates | sort -r
 * updates: mirrors.tuna.tsinghua.edu.cn
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
Installed Packages
 * extras: mirrors.njupt.edu.cn
docker-ce.x86_64            3:19.03.2-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.2-3.el7                    @docker-ce-stable
docker-ce.x86_64            3:19.03.1-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                    docker-ce-stable
docker-ce.x86_64            3:18.09.9-3.el7                    docker-ce-stable
docker-ce.x86_64            3:18.09.8-3.el7                    docker-ce-stable
docker-ce.x86_64            3:18.09.7-3.el7                    docker-ce-stable
......
 * base: mirrors.tuna.tsinghua.edu.cn
Available Packages

安装 Docker-ce

sudo yum -y install docker-ce
------ or  ------
sudo yum install docker-ce-17.12.0.ce

启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

重新加载docker参数

[root@docker ~] systemctl daemon-reload

验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

[root@localhost ~] docker version
Client: Docker Engine - Community
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.8
 Git commit:        6a30dfc
 Built:             Thu Aug 29 05:28:55 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.8
  Git commit:       6a30dfc
  Built:            Thu Aug 29 05:27:34 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

通过浏览器查询Docker服务端信息
info:http://xxx:2375/info
version:http://xxx:2375/version


4 镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}



5 删除 Docker CE

执行以下命令来删除 Docker CE:

$ sudo yum remove docker-ce
$ sudo rm -rf /var/lib/docker



X 问题

X.1 已经安装过旧版本的docker

因为之前已经安装过旧版本的docker,在安装的时候报错如下:

Transaction check error:
  file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

卸载旧版本的包

$ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

再次安装docker

$ sudo yum install docker-ce



6 创建基本Nginx镜像

2.1 搜索centos镜像

[root@localhost ~] docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5575                [OK]
ansible/centos7-ansible            Ansible on Centos7                              123                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   112                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   99                                      [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   63
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              57                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      45
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   39
kinogmt/centos-ssh                 CentOS with SSH                                 29                                      [OK]

2.2 下载官方系统centos镜像并查看

[root@localhost ~] docker pull centos
Using default tag: latest
latest: Pulling from library/centos
d8d02d457314: Pull complete
Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@localhost ~]
[root@localhost ~] docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
centos                        latest              67fa590cfc1c        5 weeks ago         202MB
centos                        7.6.1810            f1cb7c7d58b7        6 months ago        202MB

2.3 启动并进入到镜像中

[root@localhost ~] docker run -it --name mynginx centos /bin/bash
[root@637e2766790f /]

2.4 镜像定制化(进入之后的操作就跟正常在centos中操作是一样的)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

2.5 开始安装nginx

[root@637e2766790f ~] yum install -y nginx #默认的网络连接方式是可以连接外网的
[root@637e2766790f ~] vim /etc/nginx/nginx.conf #修改参数
加上一行 daemon off;(禁止后台运行,docker不允许nginx后台运行)

[root@a8882e2ef0d9 ~] nginx -t    #检查nginx配置文件语法
[root@a8882e2ef0d9 ~] nginx    #启动ngin

2.6 检查结果

正常在nginx命令运行后,界面是夯住的,所以另外打开一个ssh渠道执行

[root@localhost ~] docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
637e2766790f        centos              "/bin/bash"              12 minutes ago      Up 12 minutes                            mynginx

2.7 提交镜像并查看

[root@localhost ~] docker commit -m "add new nginx docker images" mynginx murry/nginx:v2
sha256:6a3a0afe8f25bbe22cde37a9f3db4e7c8572504a6e06ef10648d179c6f318234
[root@localhost ~]
[root@localhost ~] docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
murry/nginx                   v2                  6a3a0afe8f25        3 seconds ago       593MB

2.8 测试nginx

运行自己的镜像

docker run -it -d --name webserver_v2 -p 9000:80 murry/nginx:v2 nginx

浏览器访问服务器IP地址:http://192.168.50.70:9000/

在这里插入图片描述

2.9 进入到容器内部

docker exec -it webserver_v2 bash

2.10 关于日志输出问题

采用挂载目录的方式

宿主机上创建目录

mkdir -p /docker_log/webserver_v2

将目录挂载到镜像中

docker run -it -d --name webserver_v2 -v /docker_log/webserver_v2:/nginx_log/ -p 9000:80 murry/nginx:v2 nginx 

修改镜像中Nginx配置中的日志路径

登录镜像
docker exec -it webserver_v2 bash

修改nginx配置
vim /etc/nginx/nginx.conf

重新加载Nginx配置

nginx -s reload

查看宿主机上的目录

[root@localhost ~] ll /docker_log/webserver_v2
total 4 日志文件已经正常创建和写入了
-rw-r--r--. 1 root root 1400 Sep 25 22:23 access.log
-rw-r--r--. 1 root root    0 Sep 25 22:23 error.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值