空闲时间大概过了一遍Docker,于是就整理一下 🐾
Docker官方镜像站
Linux中安装Docker
下载并解压Docker安装包
// 下载并解压Docker安装包
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
tar -zxvf docker-20.10.9.tgz
// 将Docker下的文件移入/user/bin目录下
cp docker/* /usr/bin/
新增docker.service
在/etc/systemd/system/目录下新增docker.service文件
cat /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
// 给执行权限
chmod +x /etc/systemd/system/docker.service
// 重新加载配置文件
systemctl daemon-reload
// 设置开机启动
systemctl enable docker.service
// 启动Docker
systemctl start docker
一些基础命令
// 拉取镜像
docker pull centos
// 拉取指定版本,可参考Docker Hub
docker pull centos:centos7.9.2009
// 镜像列表
docker images
// 使用镜像创建容器, centos_test:容器名, centos:镜像
docker run -itd --name centos_test centos /bin/bash
// 使用镜像创建容器,并添加端口映射,此时主机的 8080 端口将被映射到容器的8080端口
docker run -itd --name nginx_test -p 8080:80 nginx
// 进入容器, 36b8d47cbdd1:容器id
docker exec -it 36b8d47cbdd1 /bin/bash
// 启动容器
docker start 36b8d47cbdd1
// 关闭运行中容器
docker stop 36b8d47cbdd1
// 重启容器
docker restart 36b8d47cbdd1
// 删除容器
docker rm 36b8d47cbdd1
// 查看所有容器
docker ps -a
// 查看运行中容器
docker ps
// 变更镜像tag
docker tag centos:latest centos:0.1
// 删除镜像
docker rmi c919045c4c2b
Docker搭建Nginx容器实操
1️⃣ 拉取Nginx镜像
docker pull nginx
当然,也可以使用Centos/Ubuntu镜像,安装后再手动安装Nginx
2️⃣ 使用镜像创建容器并添加端口映射以及文件映射
docker run --name nginx_test -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/html/:/usr/share/nginx/html --privileged=true -d nginx
(将配置文件以及网站文件提出来更方便管理
此时在防火墙及云服务器安全组均放通 80 端口的情况下,并将项目文件丢到 /data/nginx/html/ 下,使用ip即可直接访问
配置文件可参考此处
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
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 - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server
{
listen 80;
server_name your_ip_address;
index index.php index.html index.htm default.php default.htm default.html;
root /usr/share/nginx/html;
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
}
include /etc/nginx/conf.d/*.conf;
}
3️⃣ OR
假如不进行文件映射操作
docker run --name nginx_test -p 80:80
那么此时在端口放通的情况下,使用ip则可以直接访问到nginx初始页
End
起初也是因为太懒的原因,用宝塔习惯了,所以没有考虑到使用Docker,因为敲命令和直接在管理后台中配置相比还是麻烦不少(单纯不想敲命令🥲
不过吧,经过下午的摸索,差不多也理解了Docker的使用场景,比如说配合阿里云的容器镜像服务使用,将搭建好的各种环境上传,然后再其他机器上则只需要docker pull ...
这样做也就可以省去一部分在环境搭建上所消耗的时间
也就好比win上重装系统时附带了一部分所必须的软件 🤔
Comments | NOTHING