这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战 [TOC]
Docker
快速入门
https://www.docker.com
https://docs.docker.com
https://github.com/docker/docker.ce
docker 一般指Docker Engine, 是一个客户端-服务器应用程序,由docker守护进程, 一个Rest API 指定与守护进程交互的接口, 和一个命令行接口(CLI)与守护进程通信(通过封装REST API)
组成
docker主机(Host): 安装Docker程序的机器
docker仓库(Registry): 用来保存各种打包好的软件镜像
docker镜像(images): 软件打包好的镜像,放在仓库中
docker容器(Container): 镜像启动后的实例, 独立运行的一个或一组应用
与虚拟机比较
| 特性 | 容器 | 虚拟机 |
|---|---|---|
| 启动速度 | 秒级 | 分钟级 |
| 性能 | 接近原生 | 较弱 |
| 内存代价 | 很小 | 较多 |
| 硬盘使用 | MB级别 | GB级别 |
| 运行密度 | 单机上千台 | 一般几十个 |
| 隔离性 | 安全隔离 | 完全隔离 |
| 迁移性 | 优秀 | 一般 |
安装
centos安装配置
http://mirrors.aliyun.com/centos/7/isos/x86_64
cat /etc/centos-release
yum install -y wget
mv /etc/yum.repos.d /etc/yum.repos.d.backup
mkdir -p /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum repolist
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel -lt
grep initrd16 /boot/grub2/grub.cfg
grub2-set-default 0
reboot
uname -r
uname -a
lscpu
free
fdisk -l
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforece 0
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-arptables=1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu=1
sysctl --system
yum -y install bash-completion bash-completion-extras
source /etc/profile.d/bash_completion.sh
yum -y install lrzsz
## 下载一个文件
sz filename
## 下载多个文件
sz filename1 filename2
## 下载目录下所有文件, 不包含文件夹
sz dir/*
安装docker
教程
前置条件
yum install -y yum-utils device-mapper-persistent-data lvm2
添加源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum list docker-ce --showdulicates | sort -r
yum -y install docker-ce
systemctl start docker
systemctl status docker
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://exakpxqk.mirror.aliyuncs.com/"]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker -v
docker version
docker info
docker 命令
docker 环境命令
docker [info|version]
容器生命周期管理
docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
-
docker run
- -d --detach=false: 后台运行容器, 返回容器ID
- -i --interactive=false: 以交互模式运行容器, 通常与-t同时使用
- -P, --publish-all=false: 随机端口映射, 容器内部端口随机映射到主机的端口,不推荐
- --rm=false 容器停止后自动删除容器, 不能以docker run -d启动的容器
- -p, --publish=[]:指定端口映射 (主机)宿主端口: 容器端口, 推荐
- -t --tty=false: 为容器重新分配一个伪输入终端, 与-i 同时使用
- --name="nginx": 为容器指定个名称
- -h, --hostname="lao": 指定容器的hostname
- -e, --env=[]: 设置环境变量, 容器中可以使用此环境变量
- --net="bridge": 指定容器的网络连接类型, 支持bridge/host/none/contaiiner四种
- --link=[]: 添加链接到另一个容器,不推荐
- -v, --volume: 绑定一个卷
- --privileged=false: 指定容器是否为特权容器, 特权容器拥有所有的capabilities
- --restart=no: 指定容器停止后的重启策略
- no: 不重启
- on-failure: 故障退出时重启
- always: 容器退出时总是重启
-
docker create
- 与docker run 大致相同
-
docker start
-
docker stop
-
docker rm
-
docker restart
-
docker exec -it 2a32 /bin/bash
- /bin/bash 在没有bash命令的linux系统里是sh
-
docker update --restart always tomcat9 有些命令不支持, rm后重新run
-
docker kill tomcat9.2
容器操作命令
docker [ps|inspect|top|attach|wait|export|port|rename|stat]
-
docker inspect tomcat:9
docker inspect tomcat:9
-
docker stop 8d
-
docker rm 8d
- -f 通过SIGKILL信号强制删除
- -l 移除网络连接
- -v 删除与容器关联的卷
-
docker ps -a -q
有七种状态
- created
- restarting
- running
- removing
- paused
- exited
- dead
实用命令
docker stop $(docker ps -qa) docker rm $(docker ps -aq) docker rmi $(docker images -q)
容器rootfs命令
docker [commit|cp|diff]
镜像仓库
docker [login|pull|push|search]
-
docker pull
docker pull tomcat:9.0.39-jdk15docker 比较占用磁盘空间, 主要是日志问题
-
docker search tomcat
本地镜像管理
docker [build|images|rmi|tag|save|import|load]
-
docker save redis: 6.0.9 -o redis.tar
-
docker load -i redis.tar
-
docker tag tomcat:9 a:1
此时打上标签, 前缀image ID可能会重复
如果此时已经有修改后的镜像, 再去tag, 会不做操作
-
docker rmi tomcat:9
这里如果有多个相同前缀image ID , 这时候去删除也不会删除
-
docker image prune
-a 删除所有没有用的镜像, 不仅仅是临时文件
-f 强制删除镜像文件
容器资源管理
docker [volume|network]
系统日志信息
docker [events|history|logs]
- docker history tomcat:9
- docker logs -f
- docker logs --tail 10 ---since="" mysql