Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
ex:
前端Vue需要build打包在nginx环境部署;
后端Java需要java -jar app.jar
运行;
前后端需要安装不同的环境去部署运行。
这个时候我们可以通过docker容器统一的环境去一键运行发布这些应用docker run ...
。
Docker 包括三个基本概念:
- 镜像(Image):一个特殊文件系统。ex: ubuntu系统。
- 容器(Container):容器是镜像运行时的实体。容器可以被创建、启动、停止、删除等。
- 仓库(Repository):保存镜像。 ex: https://hub.docker.com
- public(共有仓库):免费上传、下载公开的镜像。
- private(私有仓库):需要认证才能上传、下载镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
一、安装
1、Docker安装
可参考 https://docs.docker.com/engine/install/centos
tips: 已测可行环境
- CentOS Linux release 7.6.1810 (Core)
- CentOS Linux release 8.4.2105 (Core)
- TencentOS Server release 3.1 (Final) 上会有警告
/usr/local/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.6. from cryptography.hazmat.backends import default_backend
- CentOS Stream release 8
# 查看CentOS系统版本
cat /etc/redhat-release
# 配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 通过yum源安装docker
# sudo yum -y install docker
# 指定版本安装
sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
# 启动docker
# sudo systemctl start docker
# 重启docker
# sudo systemctl restart docker
# 开机自启
# sudo systemctl enable docker
# 设置开机自启 & 现在启动
sudo systemctl enable --now docker
# 查看运行情况
# sudo systemctl status docker
# 测试
docker run --rm alpine ping -c 5 baidu.com
配置镜像加速器
# 修改daemon配置文件`/etc/docker/daemon.json`
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 查看 `Registry Mirrors`
docker info
2、docker-compose
安装
# 安装EPEL软件包
sudo yum -y install epel-release
# 安装pip3
sudo yum install -y python36-pip
# 升级
sudo pip3 install --upgrade pip
# 验证pip3版本
pip3 --version
# docker-compose安装
sudo pip3 install -U docker-compose
# 验证docker-compose版本
docker-compose --version
# 安装补全插件
# curl -L https://raw.githubusercontent.com/docker/compose/1.25.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
docker-compose
相关命令
# 构建镜像
docker-compose build
# 构建镜像,--no-cache表示不用缓存,否则在重新编辑Dockerfile后再build可能会直接使用缓存而导致新编辑内容不生效
docker-compose build --no-cache
# config 校验文件格式是否正确
docker-compose -f docker-compose.yml config
# 运行服务
ocker-compose up -d
# 启动/停止服务
docker-compose start/stop 服务名
# 停止服务
docker-compose down
# 查看容器日志
docker logs -f 容器ID
# 查看镜像
docker-compose images
# 拉取镜像
docker-compose pull 镜像名
二、常用shell组合
# 删除所有容器
docker stop `docker ps -q -a` | xargs docker rm
# 删除所有标签为none的镜像
docker images|grep \<none\>|awk '{print $3}'|xargs docker rmi
# 查找容器IP地址
docker inspect 容器名或ID | grep "IPAddress"
# 创建网段, 名称: mynet, 分配两个容器在同一网段中 (这样子才可以互相通信)
docker network create mynet
docker run -d --net mynet --name container1 my_image
docker run -it --net mynet --name container1 another_image
三、卸载
1、Docker卸载
# 查看yum安装的docker软件包
yum list installed |grep docker
# 删除相关软件包
yum -y remove docker* containerd.io
# 删除关联数据
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
2、docker-compose
卸载
pip3 uninstall docker-compose