一、Centos 安装Docker
1.1 yum 扩展镜像包下载配置
[root@attack_server_one ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
1.2 配置docker的镜像源和安装
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils
# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
1.3 配置docker的镜像源

二、基本功能
2.1 docker search 功能不能使用 需要到镜像站点网页搜索
#网页搜索
https://docker.xuanyuan.me/
#命令行搜索
[root@attack_server_one ~]# docker search abc123def456.xuanyuan.dev/nginx

三、docker 安装 codecombat
3.1 查看拉取下来的镜像
[root@attack_server_one ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.xuanyuan.me/library/nginx latest be69f2940aaf 7 weeks ago 192MB
httpd latest 958373fdd7e8 4 months ago 148MB
operepo/ope-codecombat latest 9a97c50f288f 8 years ago 1.95GB
docker.xuanyuan.me/operepo/ope-codecombat latest 9a97c50f288f 8 years ago 1.95GB
swr.cn-east-3.myhuaweicloud.com/pingzhe/dvwa v1.10 e901498e651a 8 years ago 359MB
3.2 使用镜像创建容器,指定数据保存位置,不能使用80端口
#1.创建数据存放位置
docker volume create mydata
#2.创建容器
docker run -itd -v mydata:/home/coco/codecombat/data/ --name codecombat -p 0.0.0.0:3020:3000 --restart always operepo/ope-codecombat /bin/bash
#3.删除原容器后,数据卷仍存在
docker volume ls |grep mydata
3.3 可以直接使用supervisord运行程序
root@8752dbcbf601:/# cat /etc/supervisor/conf.d/supervisord.conf
[unix_http_server]
file=/var/run/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisord]
nodaemon=true
loglevel=debug
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
[program:coco]
user=root
directory=/home/coco
command=/home/coco/start.sh
autostart=true
autorestart=unexpected
user=root
stdout_logfile=/home/coco/codecombat/mongo/coco_stdout
stdout_logfile_maxbytes=50MB
redirect_stderr=true
priority=1000
[program:mongodb]
user=root
directory=/home/coco/codecombat
command=/home/coco/codecombat/bin/coco-mongodb
autostart=true
autorestart=unexpected
user=root
stdout_logfile=/home/coco/codecombat/mongo/mongodb_stdout
stdout_logfile_maxbytes=50MB
redirect_stderr=true
priority=100
3.4 导入数据和运行服务
#1.将数据传输到需要加载的目录
docker cp dump.tar.gz codecombat:/home/coco/codecombat/data/
#2.需要进入到容器中将数据解压
docker exec -it codecombat /bin/bash
tar -zxvf dump.tar.gz
#3.运行系统网页可以访问
supervisord -nc /etc/supervisor/conf.d/supervisord.conf
3.5 修改注册独立账号

3.6 修改注册账号为上帝模式
# 1).进入容器
docker exec -it mycodecombat /bin/bash
# 2).打开数据库
mongo
# 3).使用cocoo数据库
use coco
# 4).将admin账号升级为“上帝模式”,这里abccba为你自己注册时候用的名字
db.users.update({'name':'admin'},{$set:{'earned.gems':9999999,permissions:["godmode","admin"]}},true,false);
3.7 修改注册账号的密码
# 1).进入容器
docker exec -it mycodecombat /bin/bash
# 2).打开数据库
mongo
# 3).使用cocoo数据库
use coco
# 4).查看用户abccba密码
db.users.find({name: 'abccba'}, {name: 1, passwordHash: 1})
# 5).查看用户所有信息
db.users.find({name: 'abccba'})
# 6).修改用户abccba密码
db.users.updateOne({name: 'abccba'}, {$set: {passwordHash: '977aa9a1ce6a580116484f227cca6ded1d82f37987c22121748ff1625640a4623c52e0f420420d15bb89ae680e3f27cb5d7d92d1a2c738fae5d753d66c94c9e8'}})
3.9 查看保存的数据下次重新创建容器可以直接使用该数据
[root@attack_server_one mydata]# pwd
/var/lib/docker/volumes/mydata
[root@attack_server_one mydata]# ls _data/
.db_updated dump/ dump.tar.gz users.json
[root@attack_server_one mydata]# ls _data/
dump dump.tar.gz users.json
四、docker-compose 启动容器koodo-reader
4.1 docker images 查看镜像
[root@attack_server_one ~]# docker images |grep reader
liwangsheng/koodo-reader latest e65a6b7d078a 12 months ago 33.1MB
4.2 编辑docker-compose.yaml 文件
[root@attack_server_one ~]# cat docker-compose.yml
version: '3'
services:
koodo-reader:
image: liwangsheng/koodo-reader
container_name: koodo-reader
ports:
- 8860:80
restart: always
4.3 使用docker-compose启动docker 容器
[root@attack_server_one ~]# docker-compose up -d
Creating network "root_default" with the default driver
Creating koodo-reader ... done
4.4 查看启动的容器
[root@attack_server_one ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
601a09c9c6d3 liwangsheng/koodo-reader "httpd -f -p 80 -h /…" 6 minutes ago Up 6 minutes 0.0.0.0:8860->80/tcp, :::8860->80/tcp koodo-reader
4.5 浏览器访问容器

五、docker 配置代理
5.1 修改docker 启动配置文件
vim /lib/systemd/system/docker.service
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
5.2 重新加载配置文件和重启docker 服务
systemctl daemon-reload
systemctl restart docker