简介

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上,基于go语言并遵从Apache2.0协议开源 Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。

CentOS镜像配置

配置了镜像站点以后服务器下载东西的速度会快点

参考:https://developer.aliyun.com/mirror/?spm=a2c6h.13651104.0.d1002.154412b2ZxG98v

备份

1
2
#备份镜像文件(好像会根据CentOS的版本不同 CentOS-Base.repo文件名也不相同)
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载新镜像配置文件

1
2
#下载新的的CentOS-Base.repo 到 /etc/yum.repos.d/   https://mirrors.aliyun.com/repo/Centos-7.repo这个链接会根据版本不同也会发生变化,这里是7版本
$ wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

编辑

1
2
#这一步反正是官网的操作,应该是编辑配置文件
$ sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

Docker的安装

参考官方文档:https://docs.docker.com/engine/install/centos/

卸载旧版本

1
2
3
4
5
6
7
8
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

卸载旧版本

设置存储库

1
2
3
4
5
6
#安装yum-utils软件包(提供yum-config-manager 实用程序)
sudo yum install -y yum-utils
#设置稳定的存储库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

设置存储库

安装Docker引擎

1
2
3
4
5
6
#方式一:安装最新版本的Docker Engine和容器
sudo yum install docker-ce docker-ce-cli containerd.io
#方式二:安装指定的版本
yum list docker-ce --showduplicates | sort -r #1.查看版本
#docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> 版本号为第二列从第一个冒号(:)到第一个连字符(-)
sudo yum install docker-ce-20.10.6 docker-ce-cli-20.10.6 containerd.io #2.安装指定版本

安装Docker引擎

安装确认

启动docker

1
2
3
4
5
6
#启动docker
sudo systemctl start docker
#版本查看
docker -v
#设置开机启动
systemctl enable docker

启动docker

Docker安装程序

Portainer

安装

通过web页面进行管理镜像和容器,参考:https://www.jianshu.com/p/575de760bfd4

1
2
3
4
5
6
7
8
9
10
11
12
#搜索相关Portainer镜像,以免错过更好的第三方镜像
docker search portainer
#下载选定的Portainer镜像,这里我们选择下载量最多的官方镜像,如果未指定版本则默认为最新版本,latest版本
docker pull portainer/portainer
#运行镜像:本机模式
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name prtainer portainer/portainer
#运行镜像:远程模式
docker run -d -p 9000:9000 --restart=always --name prtainer portainer/portainer
访问Portainer容器:http://IP:9000
首次登录需要设置admin的密码
#开放9000端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent

注:–restart=always,无论退出状态是如何,都重启容器,可达到开机自启

删除容器

可通过Portainer的可视化界面进行删除

Portainer 删除容器和挂载卷

删除Image

删除多余的镜像文件,需要先删除容器后再删除镜像

删除镜像

mysql

允许远程访问

1
2
3
4
5
6
7
8
9
10
11
12
#拉取 mysql 镜像
docker pull mysql:latest
# 启动容器分配端口 及密码 注意服务器端口的开放情况
docker run -itd --name centos7_mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
#查看正在运行的容器
docker ps
#进入指定容器
docker exec -it centos7_mysql57 /bin/bash
#登录mysql控制台(回车后输入密码)
mysql -u root -p
#设置远程登录权限校验版本(8 及以上版本失效百度试下)
grant all privileges on *.* to 'root'@'%' identified by 'abcd0987' with grant option;

mysql8 以下开启远程访问

Nginx

安装

1
2
3
4
5
6
7
8
#search nginx找到官方版本
docker search nginx
#pull nginx
docker pull nginx
#run -d 后台启动 --restart=always 重启时自动启动
docker run -d --name docker_nginx -p 8080:80 --restart=always nginx
# 通过浏览器访问ip+端口 看是否有提示 Welcome to nginx!
http://49.234.62.82:8080/

查找镜像

拉取和启动Nginx

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#nginx的配置文件在容器的/etc/nginx/nginx.conf文件,将这个文件放在当前宿主机所在目录下并命名为nginx.conf  $PWD指当前执行命令时候所在的目录
docker cp docker_nginx:etc/nginx/nginx.conf $PWD/nginx.conf #因为Nginx里面没有安装vi和vim不好编辑(也可以在容器内装一个直接修改不cp)
# 修改配置文件指定路径 在http{}中添加server{}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location /perf {
root /ada/nginx/html;
index perf.html perf.htm;
}
location /security {
root /ada/nginx/html;
index security.html security.htm;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#将修改好的 $PWD/nginx.conf 文件拷贝到 docker_nginx:etc/nginx/nginx.conf
docker cp $PWD/nginx.conf docker_nginx:etc/nginx/nginx.conf

修改Nginx.config

html文件

1
2
3
4
5
6
7
8
9
10
11
#exec进入 Nginx 容器
docker exec -it docker_nginx /bin/bash
#在容器内创建配置文件中写入的根目录
mkdir /ada/nginx/html -p
#退出容器
exit
#将宿主机下/ada/nginx/下的 perf.html、security.html两个文件复制到容器内的/ada/nginx/html/目录下
docker cp /ada/nginx/perf.html docker_nginx:/ada/nginx/html/perf.html
docker cp /ada/nginx/security.html docker_nginx:/ada/nginx/html/security.html
#因为刚才修改了配置文件,所以需要重启Nginx
docker restart docker_nginx

html文件移动

Redis

安装

1
2
3
4
# 拉取 images
docker pull redis:latest
# 查看拉取是否成功
docker images

安装 Redis

配置

下载配置文件

  • 访问官网下载压缩包后把配置文件 copy 出来(注意一下版本)Redis 官网

下载配置文件

服务器配置

  • 创建一个 redis/data 文件用于存放配置文件和数据
  • 上传刚才下载的配置文件到 redis 目录下
1
2
3
4
# 创建 data 目录
mkdir -p redis/data
# 写入配置文件(可以自己把 redis.conf 传上去或者文本 copy 进去)
vim redis/data/redis.conf
1
2
3
4
5
bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
daemonize no#用守护线程的方式启动
requirepass 你的密码#给redis设置密码
appendonly yes#redis持久化  默认是no
tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

启动

  • 注意端口要开放一下
1
2
# 启动 Redis
docker run -p 6379:6379 --name redis -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

启动Redis