docker--基础--2.5--部署--常用操作和配置

docker–基础–2.5–部署–常用操作和配置


1、镜像加速

默认情况下,将来从docker hub(https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器。

1.1、创建daemon.json

# 调整docker缺省存储位置(缺省位置为/var/lib/docker)
sudo mkdir -p /home/hd/docker/data

# 创建daemon.json
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json

 

{
  "data-root": "/home/hd/docker/data",
  "registry-mirrors": [ 
    "http://hub-mirror.c.163.com",
    "http://registry.hub.docker.com",
    "https://registry.dockermirror.com",
    "https://fsqbo5wy.mirror.aliyuncs.com",
    "https://s3d6l2fh.mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com" 
  ]
}



2.2、重新启动服务

sudo systemctl daemon-reload
sudo systemctl restart docker

2、设置docker开机启动

# 设置docker开机启动
systemctl enable docker.service
# 开启docker服务
systemctl start docker

3、将当前用户(hd)加入docker组

#添加docker用户组
sudo groupadd docker
#将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker
#更新用户组
newgrp docker

退出当前shell终端,重新登录,使得上面配置生效

4、常用命令

# 启动
sudo service docker start
# 重启
sudo service docker restart
# 停止
sudo service docker stop
# 查看状态
sudo service docker status


# 启动
sudo systemctl start docker
# 重启
sudo systemctl restart docker
# 停止
sudo systemctl stop docker
# 查看状态
sudo systemctl status  docker


# 重新加载配置
sudo systemctl daemon-reload

# 设置开机启动
systemctl enable docker


# 查看docker概要信息	
docker info

# 查看docker帮助文档	
docker --help

5、docker.service文件

5.1、位置

/usr/lib/systemd/system/docker.service

5.2、内容

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin

## docker启动执行命令
ExecStart=/usr/bin/dockerd-current 
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current 
          --default-runtime=docker-runc 
          --exec-opt native.cgroupdriver=systemd 
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current 
          $OPTIONS 
          $DOCKER_STORAGE_OPTIONS 
          $DOCKER_NETWORK_OPTIONS 
          $ADD_REGISTRY 
          $BLOCK_REGISTRY 
          $INSECURE_REGISTRY
      $REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave
KillMode=process

[Install]
WantedBy=multi-user.target

5.3、ExecStart中启动参数

ExecStart=/usr/bin/dockerd -H fd://

在这里插入图片描述

在这里插入图片描述

6、Docker Engine 配置文件

用作docker服务中ExecStar后参数的补充

6.1、位置

/etc/docker/daemon.json

6.2、内容

{
	# 注意此为json语法,有的是数据类型,有的是数组类型
	# 方括号为数组类型,数据由逗号分隔,数据在名称/值对中
	
    "authorization-plugins": [],//访问授权插件
    "data-root": "",//docker数据持久化存储的根目录
    "dns": [],//DNS服务器
    "dns-opts": [],//DNS配置选项,如端口等
    "dns-search": [],//DNS搜索域名
    "exec-opts": [],//执行选项
    "exec-root": "",//执行状态的文件的根目录
    "experimental": false,//是否开启试验性特性
    
    "storage-driver": "",//存储驱动器
    "storage-opts": [],//存储选项
    
    "labels": [],//键值对式标记docker元数据
    "live-restore": true,//dockerd挂掉是否保活容器(避免了docker服务异常而造成容器退出)
    
    "log-driver": "",//容器日志的驱动器
    "log-opts": {},//容器日志的选项
    
    "mtu": 0,//设置容器网络MTU(最大传输单元)
    "pidfile": "",//daemon PID文件的位置
    "cluster-store": "",//集群存储系统的URL
    "cluster-store-opts": {},//配置集群存储
    "cluster-advertise": "",//对外的地址名称
    "max-concurrent-downloads": 3,//设置每个pull进程的最大并发
    "max-concurrent-uploads": 5,//设置每个push进程的最大并发
    "default-shm-size": "64M",//设置默认共享内存的大小
    "shutdown-timeout": 15,//设置关闭的超时时限(who?)
    "debug": true,//开启调试模式
    
    "hosts": [],//监听地址(?)
    "log-level": "",//日志级别
    
    "tls": true,//开启传输层安全协议TLS
    "tlsverify": true,//开启输层安全协议并验证远程地址
    "tlscacert": "",//CA签名文件路径
    "tlscert": "",//TLS证书文件路径
    "tlskey": "",//TLS密钥文件路径
    "swarm-default-advertise-addr": "",//swarm对外地址
    "api-cors-header": "",//设置CORS(跨域资源共享-Cross-origin resource sharing)头
    "selinux-enabled": false,//开启selinux(用户、进程、应用、文件的强制访问控制)
    "userns-remap": "",//给用户命名空间设置 用户/组
    "group": "",//docker所在组
    "cgroup-parent": "",//设置所有容器的cgroup的父类(?)
    "default-ulimits": {},//设置所有容器的ulimit
    "init": false,//容器执行初始化,来转发信号或控制(reap)进程
    "init-path": "/usr/libexec/docker-init",//docker-init文件的路径
    "ipv6": false,//开启IPV6网络
    "iptables": false,//开启防火墙规则
    "ip-forward": false,//开启net.ipv4.ip_forward
    "ip-masq": false,//开启ip掩蔽(IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术)
    "userland-proxy": false,//用户空间代理
    "userland-proxy-path": "/usr/libexec/docker-proxy",//用户空间代理路径
    "ip": "0.0.0.0",//默认IP
    
    "bridge": "",//将容器依附(attach)到桥接网络上的桥标识
    "bip": "",//指定桥接ip
    
    "fixed-cidr": "",//(ipv4)子网划分,即限制ip地址分配范围,用以控制容器所属网段实现容器间(同一主机或不同主机间)的网络访问
    "fixed-cidr-v6": "",//(ipv6)子网划分
    "default-gateway": "",//默认网关
    "default-gateway-v6": "",//默认ipv6网关
    "icc": false,//容器间通信
    "raw-logs": false,//原始日志(无颜色、全时间戳)
    "allow-nondistributable-artifacts": [],//不对外分发的产品提交的registry仓库
    
    "registry-mirrors": [],//registry仓库镜像
    "insecure-registries": [],//非https的registry地址
        
    "seccomp-profile": "",//seccomp配置文件
    "no-new-privileges": false,//禁止新优先级(??)
    "default-runtime": "runc",//OCI联盟(The Open Container Initiative)默认运行时环境
    "oom-score-adjust": -500,//内存溢出被杀死的优先级(-1000~1000)
    "node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],//对外公布的资源节点
    "runtimes": {//运行时
        "cc-runtime": {
            "path": "/usr/bin/cc-runtime"
        },
        "custom": {
            "path": "/usr/local/bin/my-runc-replacement",
            "runtimeArgs": [
                "--debug"
            ]
        }
    }
}

7、修改docker运行时根目录

Docker的默认存放位置是在 /var/lib/docker

7.1、修改方式1:修改 docker.service

# 通过 --data-root 参数来设置运行时目录
# 找到 ExecStart=/usr/bin/dockerd 行,在其后添加
# 修改后需要重载配置并重启服务
# 会自动生成/new/path 目录(0700),并在该目录下创建 docker 相关文件
# 重启后原来的镜像和容器都找不到了,因为路径改了

ExecStart=/usr/bin/dockerd --data-root=/new/path

7.2、修改方式2:修改 /etc/docker/daemon.json


mkdir /etc/docker

cat > /etc/docker/daemon.json << EOF
{
    "data-root": "/data/docker"
}

8、开启远程API访问端口

修改 docker.service

# 在 ExecStart 后添加-H 0.0.0.0:2375,端口可以随意指定
# 修改后重启服务
# 访问http://127.0.0.1:2375/info进行验证

ExecStart=/usr/bin/dockerd -H fd:// -H 0.0.0.0:2375

9、允许不安全的仓库连接

docker默认请求https仓库地址,要访问非https的registry地址,需要配置 insecure-registries

修改 /etc/docker/daemon.json

{
	"insecure-registries": [ "http://10.10.10.10:8082" ]
}

10、设置日志文件大小及个数

修改 /etc/docker/daemon.json

{
	"log-driver": "json-file",
	"log-opts": {
		"max-size": "500m",
		"max-file": "3"
	 }
}

11、查看某时间段日志

docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如1m(即1分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如1m(即1分钟)



查看近30分钟日志
docker logs --since 30m e-onborading_service > 30m.log


查看某时间之后的日志:
docker logs -t --since="2024-07-24T11:15:37" my_service  

查看指定时间后的日志,只显示最后100行:
docker logs -t --since="2024-07-24T11:15:37" --tail 100 my_service  


查看某时间段日志:
docker logs -t --since="2024-07-24T11:15:37"  --until "2024-07-24T11:19:37" my_service  > new.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值