Docker
一、什么是docker
docker官方文档:https://docs.docker.com/get-started/
docker hub:https://hub.docker.com/
Docker通过隔离机制,既可以保障每个"集装箱里面的东西"是互不影响的,也可以将服务器的资 源压榨到最大程度。
二、docker和虚拟机的区别
虚拟机和docker的区别:
- 虚拟机虚拟出完整的操作系统,而docker直接运行在宿主机的内核上,没有自己的内核和虚拟硬件,所以更加小巧轻便。
- 虚拟机是操作系统级别的虚拟化,而docker是内核级别的虚拟化;
- 虚拟机比docker更重,更消耗资源,启动速度远远慢于docker;
- docker可以实现快速的运维部署;
- docker更便捷的升级和扩容/缩容;
- 可以更高效的利用物理机的硬件资源。
三、docker的安装
官方安装步骤:https://docs.docker.com/get-started/overview/
卸 载 老 版 本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装dockerEngines
## 第一步、使用仓库进行安装
sudo yum install -y yum-utils
## 第二步、使用官方源地址(比较慢)
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
## 使用阿里云
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
## 使用清华大学源
sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
## 第三步、安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
开启docker
sudo systemctl start docker
验证docker是否安装成功
sudo docker run hello-world
四、docker基础命令
查看版本
docker version
查看docker的信息
docker info
docker的帮助命令
docker [命令] --help
如: docker images --help
查看运行中的docker
docker ps
查看容器的top信息
docker top [容器唯一Id]
查看容器元数据信息
docker inspect [容器唯一Id]
进入容器
- 第一种方式 docker attach
docker attach [容器唯一Id]
- 第二种方式 docker exec
docker exec -it [容器唯一Id] /bin/bash
文件拷贝
- 从宿主机拷贝到容器 docker cp SRC_PATH [容器唯一Id]:DEST_PATH
docker cp /home/a.txt [容器唯一Id]:/home
- 从容器拷贝到宿主机
docker cp [容器唯一Id]:/home/b.txt /home/zlf
查看容器状态
docker stats
五、docker镜像命令
查询镜像列表
docker images
搜索镜像
- 第一种方式:docker search
docker search rabbitmq
- 第二种方式:docker hub
下载镜像
默认下载最新版本
docker pull rabbitmq
删除镜像
docker rmi -f [镜像唯一Id]
docker rmi -f [镜像唯一Id] [镜像唯一Id] [镜像唯一Id]
docker rmi -f $(docker images -aq)
六、docker容器命令
运行容器
docker run -it centos /bin/bash
docker run -d --name nginx3 -p 1113:80 nginx 0ed40ef4650bf9f6aad36bbf184e738a4316d04c3a48c77e7aac69d6b798e601
退出容器
- CTRL+P+Q: 退出容器,但不关闭容器
- exit、CTRL + D:退出容器,关闭容器
删除容器
- 删除一个容器
## 强制删除一个UP状态的容器 docker rm -f [容器唯一Id] ## 删除一个非UP状态的容器 docker rm [容器唯一Id]
- 删除多个容器
docker rm [容器唯一Id] [容器唯一Id]
- 删除所有容器
docker rm -f $(docker ps -aq)
启动和重启容器
docker start [容器唯一Id]
docker restart [容器唯一Id]
停止容器
docker stop [容器唯一Id]
杀死容器
docker kill [容器唯一Id]
七、docker原理
什么是镜像
镜像是一种轻量级、可执行的独立软件包。包含代码、运行时、库、环境变量和配置文件。所有应用,直接打包docker镜像,就可以直接跑起来。
获得镜像的方式:
- 从远程仓库下载;
- 通过传输拷贝方式获得;
- 自己通过DockerFile制作镜像。
镜像下载(拉取)
联合文件系统是一种分层、轻量级、高性能的文件系统。它支持对文件系统的修改作为一 次提交来一层层的叠加。
联合文件系统是Docker镜像的基础。
联合文件系统
下载的时候,看到的一层层下载,这个就是联合文件系统——UnionFS。
镜像加载原理
提交镜像
提交容器,成为一个新的副本。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
八、容器数据卷
什么是容器数据卷
docker是将应用和环境进行了打包。那么如果删掉容器的话,数据也会同时被删除掉。那么,如果我们有数据持久化的需求,或者容器之间数据共享的需求,那么就用到了容器数据卷。
挂载操作
执行挂载(把本机路径/home/muse/test,挂在到centos容器的/bin/bash目录下)
docker run -it -v /home/zlf/test:/home centos /bin/bash
具名挂载和匿名挂载
-
匿名挂载 (通过-v 指定容器内路径 )
docker run -d -P --name nginx1 -v :/etc/nginx nginx
-
具名挂载(常用方式) (通过-v 卷名:容器内路径,指定具名挂载 )
docker run -d -P --name nginx2 -v nginx2:/etc/nginx nginx
- 查看挂载列表
docker volume ls
- 查看挂载信息
docker volume inspect [VOLUME] 如:docker volume inspect mysql
数据卷容器
相互挂载的容器之间的文件是相互同步复制备份的,而不是共享的。