一文带你掌握docker 常见命令&架构原理&bug

文章目录

    • Docker原理
    • Docker架构
    • 容器操作
    • 数据卷操作
    • 镜像操作
    • 批量删除容器或镜像
    • docker-compose
    • 蓝绿发布&金丝雀发布
    • 开机自启动
    • docker 镜像启动成功但是无法访问

本文带你进入掌握容器化时代法宝-docker

Docker原理

内核与硬件交互,提供操作硬件的指令

系统应用封装内核指令为函数,便于程序员调用

用户程序基于系统函数库实现功能

Ubuntu和CentOS都是基于Linux内核,只是系统应用不同,提供的函数库有差异

Docker将用户程序和系统应用(ubuntu或centos)一起打包,基于操作系统的内核就可以运行,屏蔽了系统应用函数库依赖等问题。

一文带你掌握docker 常见命令&架构原理&bug_第1张图片

Docker架构

一文带你掌握docker 常见命令&架构原理&bug_第2张图片

容器操作

docker exec -it CONTAINER bash # 以终端交互的模式

docker run -p 端口映射 -e 环境变量 -d 后台运行

docker start&restart

docker ps [-a] 查看容器(所有)

docker logs -f 查看日志

docker rm 删除容器

docker inspect container_id | grep # 查看容器详细信息

一文带你掌握docker 常见命令&架构原理&bug_第3张图片

数据卷操作

docker volumn create&inspect&ls&prune&rm

一文带你掌握docker 常见命令&架构原理&bug_第4张图片

镜像操作

docker save保存镜像为压缩包

docker load加载压缩包为镜像

docker pull和docker push为镜像推送和镜像拉取

docker images 查看镜像

docker rmi删除镜像

通过使用docker build和Dockerfile构建镜像

一文带你掌握docker 常见命令&架构原理&bug_第5张图片

批量删除容器或镜像

sudo docker ps -a | grep Exited | awk '{print $1}' | xargs sudo docker rm 删除异常停止的docker容器

sudo docker images | grep '' | awk '{print $3}'| xargs sudo docker rmi -f 删除名称或标签为none的镜像

docker-compose

docker-compose 

-f:指定使用的compose模板文件,默认为当前目录下的docker-compose.yaml文件,可以多次指定。

-p:指定项目的名称,默认将使用所在目录名称作为项目名。

–verbose:输出更多调试信息。

-v:打印版本信息并退出



build 构建(重新构建)项目中的服务容器

config 检测compose文件的错误

up 启动服务

down 停止容器

images 列出项目中所包含的镜像

logs 查看服务容器的日志

kill 发送 SIGKILL 信号来强制停止服务容器

port 查看某个容器端口所映射的公共端口

ps 列出项目中目前的所有容器

restart 重启项目中的服务

rm 删除所有停止状态的服务容器

run 在指定服务上运行一个命令

scale 设置指定服务运行的容器个数

stop 停止处于运行状态的容器

start 启动被stop的服务容器

top 查看各个服务容器内运行的进程

pause 暂停一个服务容器

unpause 恢复处于暂停状态中的服务

蓝绿发布&金丝雀发布

蓝绿发布:蓝绿一个好一个坏,切换

金丝雀发布:一个一个替换

Harbor位置

/opt/harbor

启动命令

docker 启动命令
sudo systemctl start docker
 
docker 重启命令
systemctl restart docker

docker 查看状态命令
systemctl status docker

开机自启动

docker update name --restart
	no -  容器退出时,不重启容器;

    on-failure - 只有在非0状态退出时才从新启动容器;

    always - 无论退出状态是如何,都重启容器;

docker 镜像启动成功但是无法访问

解决办法:

vi /etc/sysctl.conf或者vi /usr/lib/sysctl.d/00-system.conf

添加如下代码:
net.ipv4.ip_forward=1

重启network服务

systemctl restart network

查看是否修改成功

sysctl net.ipv4.ip_forward
如果返回为“net.ipv4.ip_forward = 1”则表示成功了

参考:
某马

你可能感兴趣的:(中间件,docker,架构,bug)