Docker理论与实践
理论知识
官网:https://hub.docker.com/
简介 :
- 镜像:Docker镜像相当于是一个root文件系统
- 容器:镜像和容器的关系,就像类和对象一样,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
- 仓库:仓库可以看成一个资源中心,用来保存镜像
数据卷:
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
配置数据卷:
-
创建启动容器时,使用
-v
参数 设置数据卷docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
-
注意事项:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
-
数据卷容器
docker run -it --name= -v /volume centos:7 --volume-from 数据卷容器名称
Docker下载安装
-
安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源(以下命令二选一)
- 阿里云:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 国外:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 设置yum源(以下命令二选一)
-
安装docker
yum install -y docker-ce docker -v #查看docker版本,验证是否成功
-
安装docker-compose
# 安装 curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose #设置文件可执行权限 chmod +x /usr/local/bin/docker-compose #查看版本信息 验证是否安装成功 docker-compose -v
-
启动docker,创建docker网络
#启动docker systemctl start docker # 创建网络(admin跟docker配置文件一致,注意ip) -- (可做可不做,看具体配置,如果创建了需要为每个容器分配ip) docker network create admin --subnet 172.10.3.0/24 --opt com.docker.network.bridge.name=docker-app
-
创建相应文件夹及编写docker-compose.yml配置文件、编写nginx.conf文件
-
启动docker-compose服务
# 启动docker-compose并根据docker-compose.yml拉取镜像,创建相应的容器 docker-compose up -d #关闭 docker-compose down
Docker命令
- 服务相关命令
#启动docker服务
systemctl start docker
#重启docker服务
systemctl restart docker
#停止
systemctl stop docker
#查看docker服务状态
systemctl status docker
#设置开机启动docker
systemctl enable docker
- 镜像相关命令
#查看所有镜像
docker images
#查看所有镜像ID
docker images -q
#搜索镜像
docker search 镜像名称
#拉取镜像 没有加版本则默认最新版本
docker pull 镜像名称
docker pull redis:5.0 #指定版本,指定版本时可以到官网搜索相应镜像会有对应版本
#删除镜像
docker rmi 镜像名称:版本号/镜像id
- 容器相关命令
#查看当前正在运行的容器
docker ps
# 查看所有容器
docker ps -a
#创建并启动容器
docker run -参数 镜像名称:版本号 /bin/bash
#进入容器
docker exec -it 容器名称 /bin/bash
- 参数说明
- -i:保持容器运行。通常与-t同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用
- -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec进入容器docker exec -it c2 /bin/bash。退出后,容器不会关闭
- -it创建的容器一般称为交互式容器;-id创建的容器一般称为守护式容器
- –name:为创建的容器命名
- eg:
docker run -id --name=mysql -v ./mysql/data:/var/lib/mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 MYSQL:5.7
- -e 设置环境参数
- -p 端口映射
- -v 文件挂载,实现容器中的文件会随着挂载文件夹更新
- eg:
docker exec -it mysql /bin/bash
#停止
docker stop 容器名称
#删除,如果删除失败,要先将容器停止再删除
docker rm 容器名称
#查看容器信息
docker inspect 容器名称
#容器日志信息打印
docker logs -f --tail=数值 容器名称
#tail参数是从倒数第几行开始打印
常用容器
-
mysql
docker exec -it 容器名称 bash mysql -uroot -p密码 #如果远程连接失败 use mysql; select host from user where user ='root'; update user set host ='%' where user ='root'; #刷新命令权限 flush privileges; #关闭防火墙 systemctl status firewalld.service; systemctl stop firewalld.service; #重启docker systemctl restart docker
-
redis
#方式一 docker exec -it yshop-redis redis-cli; auth 密码; #方式二 docker exec -it yshop-redis bash; redis-cli; auth 密码;