一、docker应用的安装
1.1 安装方式
- Docker的自动化安装,即使用提供的一键安装的脚本,进行安装。
官方的一键安装方式:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
国内 daocloud一键安装命令:curl -sSL https://get.daocloud.io/docker | sh
执行上述任一条命令,耐心等待即可完成Docker的安装。
- Docker手动安装(博主用的手动安装)
1.2 安装环境条件
Docker从17.03版本之后分为CE(Community Edition: 社区版)和EE(Enterprise Edition: 企业版)。Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。
lsb_release -a #查看系统版本
uname -r #查看内核版本
#其它查看系统版本命令 cat /etc/os-version 、cat /etc/os-release、cat /etc/redhat-release
#其它查看内核版本方式 cat /proc/version、uname -a
本机linux系统和内核版本:
1.3 手动安装方式
1.3.1 卸载旧版本
如果安装过旧版本,可执行该步骤
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
1.3.2 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
1.3.3 设置Docker源仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
官方的源地址比较慢,可使用国内比较快的地址:
阿里云:http:**//mirrors.aliyun.com/docker-ce/linux/centos/**docker-ce.repo 清华大学源:https:**//mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/**docker-ce.repo
设置之后的结果:
docker-ce.repo内容:
1.3.4 安装
安装版本:docker-ce为社区免费版本。
yum install -y docker-ce docker-ce-cli containerd.io
如果不需要docker-ce-cli或containerd.io可直接执行如下命令
yum install -y docker-ce
1.3.5 检测Docker安装情况
docker version #查看docker版本
1.3.6 卸载docker
yum remove docker-ce #删除安装包
rm -rf /var/lib/docker #删除镜像、容器、配置文件等内容
二、docker服务启停命令
systemctl start docker #启动
systemctl stop docker #停止
systemctl status docker #状态
systemctl restart docker #重启
systemctl enable docker #开机自启
systemctl disenable docker #关闭开机自启
systemctl daemon-reload #守护进程重启
查看本机docker服务状态:
三、docker的使用
3.1 镜像-常用操作命令
docker search 镜像名 #搜索仓库镜像 如:docker search nginx
docker pull 镜像名:版本号 #拉取镜像 如:docker pull mongo:4.44
docker images #查看已拉取的所有镜像
docker rmi image_id #删除镜像
3.2 容器--常用操作命令
3.2.1 docker run 命令(重要)
docker run :创建一个新的容器并运行一个命令
命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run -it ubuntu /bin/bash #启动(新)容器
docker run --name mynginx -d -p 80:80 nginx #启动一个新的nginx容器
docker run -d -p 1521:1521 --name oracle11g \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g #启动一个新的oracle数据库容器
docker run --name nginx01 -d -p 80:80 \
-v $PWD/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/html:/etc/nginx/html \
-v $PWD/log/nginx:/var/log/nginx nginx #启动一个新的nginx容器 加了数据卷 -V
3.2.2 docker 其它命令
docker start 容器ID或名字 #启动容器
docker stop 容器ID或名字 #停止容器
docker restart 容器ID或名字 #重启容器
docker ps #查看正在运行的容器
docker ps -a #查看所有容器
docker rm container_id #删除容器
docker exec -it 容器ID|容器name /bin/bash #进入容器
exit #退出容器
docker inspect 容器ID|容器name #获取容器/镜像的元数据
#使用方法
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $CONTAINER_ID #获取容器 IP
docker inspect tomcat7 | grep IPAddress #获取IP地址
3.2.3 容器数据卷
(1)挂载数据卷
-v 本地目录:容器内目录:权限 如ro #指定路径挂载
-v 卷名:容器内目录:权限 如rw #具名挂载
-v 容器内目录:权限 如rw #匿名挂载
(2)查看数据卷
docker volume ls
docker volume inspect 卷名
(3)查看容器挂载情况
docker inspect nginx01
docker inspect oracle11g
(4)数据卷默认位置
注:所有docker容器的卷,没有指定目录情况下(具名挂载和匿名挂载),都在 /var/lib/docker/volumes/ 下。
四、docker深度学习(拓展)
以上三部分,日常使用足矣。下面是更深的学习内容了。防止遗忘,还是记录在这里。
4.1 run 的参数是重点
重点的几个参数,不止以下这些,太多、记不住就不罗列了,有兴趣可以度娘。
-u root #如果执行docker run 是root用户执行的,生成的container不是root的话,在docker run时加参数
--net="bridge"
#容器网络设置:
-e, --env=[] #
指定环境变量,容器中可以使用该环境变量
4.2 Dockerfile文件和docker build
Dockerfile文件和docker build 创建镜像
Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像.
Dockerfile分为四部分:
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
4.3 docker save 和docker load
上传本地镜像到docker服务器, 和 保存docker服务器里的镜像到本地。
# docker save -o [定义一个tar文件的文件名] [要保存的镜像的id]
docker save -o imagesname.tar dd886f784c2c
# 生成的tar文件存储路径为当前路径下
docker load -i imagesname.tar
然后可以再次通过docker images命令查看加载的镜像
docker commit [要保存的容器id] [起一个镜像名] #保存对一个docker容器的改动
4.4 Docker-Compose
- Docker-Compose项目是基于Python开发的Docker官方开源项目,负责实现对Docker容器集群的快速编排。
- Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。
- Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。
多个应用镜像组合在一起, 写在一个配置文件中, 一次写好,处处使用,超方便、超速度。直接就按文件内容部署、编排容器了。自动部署相关应用、创建容器、运行容器。
看图理解比较直观一点