docker安装配置(centos7)

一、操作系统初始化配置
1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

2、关闭selinux
sed -i ‘s/enforcing/disabled/’ /etc/selinux/config # 永久
setenforce 0 # 临时

3、安装Docker

下载地址:https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz

解压二进制包
tar zxvf docker-19.03.9.tgz
mv docker/* /usr/bin

4、systemd管理docker
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF

5、创建配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
“registry-mirrors”: [“https://b9pmyelo.mirror.aliyuncs.com”]
}
EOF

6、启动并设置开机启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker

7、修改docker产生的日志大小处理:
修改docker daemon.json文件,配置日志文件参数
默认 /etc/docker/daemon.json
{
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “50m”,
“max-file”: “5”
}
}

修改后,docker需要重新加载配置文件和重启。
CentOS7的操作

systemctl daemon-reload
systemctl restart docker
1
2
注意:新创建的容器会生效,原有容器不生效。

9、查出Docker容器日志并删除脚本
默认查找目录 /var/lib/docker/containers/

#!/bin/sh
echo “======== start clean docker containers logs "
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo “clean logs : $log”
cat /dev/null > $log
done
echo "
end clean docker containers logs ========”

docker容器正在运行的话,使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。
原因是通过rm -rf删除,将会从文件系统的目录结构上解除链接(unlink)。
如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也是一直被占用。
正确操作覆盖操作 *cat /dev/null > -json.log。
或者可以通过rm -rf删除后重启docker容器。


docker启动web服务后出现的问题:
问题状况:
1、环境:centos7系统;
2、系统自带firewalld与docker的iptables有冲突;
3、对外端口本地可以访问,其它电脑无法访问并且访问不了外网,已经开启防火墙端口

解决方法:
一、更改系统防火墙为iptables
卸载原本系统自带firewalld防火墙:
1、停止并屏蔽firewalld服务
停止 systemctl stop firewalld
禁止开机自启动:
systemctl disable firewalld
屏蔽 systemctl mask firewalld
2、安装iptables-service软件包
yum install iptables-services
3、在引导时启用iptables服务
systemctl enable iptables
4、启动iptables服务
systemctl start iptables
5、保存防火墙规则
service iptables save

二、配置docker
第一步
vi /etc/docker/daemon.json
去掉
“iptables”:false

systemctl daemon-reload
systemctl restart docker

第二步:
service iptables save
service iptables restart
第三步:
vi /etc/docker/daemon.json
添加
“iptables”:false

systemctl daemon-reload
systemctl restart docker
第四步:
service iptables save
service iptables restart


使用命令:
列出所有容器
docker ps -a

删除容器
docker stop mynginx
docker rm mynginx

##########################################

运行Nginx部署网站
接下来思考问题:
Nginx配置、查看日志、部署网站
需要把外部的目录或文件映射到docker容器
创建目录
Ngdir=/www/docker/nginx
mkdir -p $Ngdir/{www,log,conf/conf.d}

创建配置(采用默认配置去注释)
`echo '#man config
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “KaTeX parse error: Double superscript at position 34: … '̲status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer” ’
‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
'>$Ngdir/conf/nginx.conf

echo '#nginx
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
'>$Ngdir/conf/conf.d/default.conf`

html
echo ‘Welcome to nginx!’> N g d i r / w w w / i n d e x . h t m l e c h o ′ e r r o r p a g e 50050250350440 4 ′ > Ngdir/www/index.html echo 'error_page 500 502 503 504 404'> Ngdir/www/index.htmlechoerrorpage500502503504404>Ngdir/www/50x.html

使用nginx镜像,创建容器mynginx
docker run -p 80:80 --name mynginx \ -v $Ngdir/conf/nginx.conf:/etc/nginx/nginx.conf:ro \ -v $Ngdir/conf/conf.d:/etc/nginx/conf.d:ro \ -v $Ngdir/www:/usr/share/nginx/html:rw \ -v $Ngdir/log:/var/log/nginx:rw \ -d nginx

测试html内容
curl 127.0.0.1
curl 127.0.0.1/123
查看error.log
cat $Ngdir/log/error.log
测试成功 _

参数说明:
-p 80:80:本地80端口:映射docker容器80端口
-v $Ngdir/log:/var/log/nginx 主机log目录挂载到容器log/nginx

##########################################

##########################################
常用命令
获取容器PID
docker inspect --format “{{.State.Pid}}” myngix
docker查看容器IP
docker inspect --format=‘{{.NetworkSettings.IPAddress}}’ $(docker ps -a -q)
查看变量
docker exec -it mynginx env

列出容器:docker ps -a
查看最近生成的容器:docker ps -l
查看正在运行的容器:docker ps
显示容器的标准输出:docker logs CONTAINERID
使用docker run的-i -t参数就会响应这种交互
停止正在运行的容器:docker stop CONTAINERID
查看容器或镜像的详细信息:docker inspect CONTAINERID|IMAGE
删除容器:docker rm CONTAINERID
查看所有容器ID:docker ps -a -q
删除所有的容器:docker rm $(docker ps -a -q)
删除镜像:docker rmi IMAGE

##########################################
官方安装
官网选择版本 https://github.com/docker/compose/releases 以下命令手动修改版本号,例如1.24.1

curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
复制

添加执行权限

chmod +x /usr/local/bin/docker-compose
复制

检查docker compose版本

docker-compose version

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

划水的运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值