docker安装及使用
什么是 docker
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
安装 docker
1、更新yum镜像仓库
# 设置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-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)# 设置docker镜像源
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
2、安装docker
# 卸载 podman 和 buildah 这两个软件包
yum erase podman buildah# 安装docker
yum install docker-ce docker-ce-cli containerd.io --allowerasing# 启动Docker
systemctl start docker #启动docker
systemctl status docker #查看docker 运行状态# 查看安装的docker
docker --version
3、为Docker配置镜像源
# 创建docker配置文件
sudo mkdir -p /etc/docker# 配置镜像加速源
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://akchsmlh.mirror.aliyuncs.com"]
}
EOF# 查看镜像加速问价内容是否配置成功
sudo systemctl daemon-reload# 重启docker
sudo systemctl restart docker
4、安装docker-compose工具
# 下载docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 复制文件
cp /opt/install/docker-compose-linux-x86_64 /usr/local/bin/docker-compose-linux-x86_64# 修改文件名
mv /usr/local/bin/docker-compose-linux-x86_64 /usr/local/bin/docker-compose# 赋予可执行权限
chmod +x /usr/local/bin/docker-compose# 查看版本号
docker-compose --version
docker 常用命令
常用系统命令
# 查看docker概要信息
docker info# 开机启动
systemctl enable docker# 查看docker状态
systemctl status docker# 启动、停止、重启docker
systemctl start stop restart docker
常用镜像命令
# 列出本地主机上的镜像
docker images# 搜索镜像
docker search 镜像名字# 拉取(下载)镜像
docker pull 镜像名字# 查看镜像
docker system df 查看镜像/容器/数据卷所占的空间# 删除镜像
docker rmi 某个XXX镜像名字ID
# 删除单个
docker rmi -f 镜像ID
# 删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG
# 删除全部
docker rmi -f $(docker images -qa)
# 将镜像归档为tar文件
docker save -o your_image.tar your_image
# 加载tar文件为镜像
docker load -i tar文件
常用容器命令
# 新建+启动命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
–name=“容器新名字” 为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
例如:
# 创建并启动 oracle
docker run -d --name depth-oracle11g --privileged=true --restart=always -p 5004:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g# 列出当前所有正在运行的容器
docker ps
# 查找容器
docker ps | grep 容器名称# 强制停止容器
docker kill 容器ID或容器名# 删除已停止的容器
docker rm 容器ID# 启动、停止、重启容器
docker start stop restart 容器ID或者容器名# 查看容器日志
docker logs -f --tail=300 容器名# 进入容器
docker exec -it 容器名 /bin/bash# 从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
# 从主机拷贝文件到容器内部
docker cp 主机路径 容器ID:容器内路径# 导出容器
docker export 容器ID > 文件名.tar# 导入容器
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
cat centos.tar.gz | docker import - xiaobear/centos:8.8