docker的概述
docker架构
docker基本概念
镜像基本命令
容器基本命令
目录挂载方式
docker的概述
可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行Linux系统的服务器上,运行时利用沙箱机制形成隔离容器,各个应用互不干扰
docker架构
Docker是一个C/S架构的程序,有两部分组成
- 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
- 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。
docker基本概念
镜像
Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。相当于电脑上的“程序”
容器:
镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。相当于电脑上一个正在运行的程序,即进程
一个程序可以多开=》一个程序可以有多个进程=》一个镜像可以有多个容器!
1、docker安装与启动| 1)更新yum包 yum update 2)安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 3)设置yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库) 4)查看远程仓库中所有docker版本 yum list docker-ce --showduplicates | sort -r 5)安装docker yum install docker-ce #安装最新版 yum install docker-ce-20.10.1-3.el7 #安装指定版本(推荐安装此方式) 6)修改Docker远程仓库 本次使用阿里云镜像 登录阿里云,进入 “容器镜像服务” 控制台 容器镜像服务:https://www.aliyun.com/product/acr 注册后,可以在“镜像工具-镜像加速器” 来获得个人的 docker 加速链接地址,地址找到后,执行下面的命令: #创建目录地址 mkdir -p /etc/docker #创建 daemon 文件 vi /etc/docker/daemon.json 在 daemon.json 文件中添加下面内容: { "registry-mirrors": ["https://去阿里云复制的docker地址"] // 每个人的地址都不一样。 } 7)重新启动服务 systemctl daemon-reload systemctl restart docker 执行命令查看结果 docker info 因为docker会用到很多端口,建议直接关闭linux的防火墙。 #使用: systemctl start docker # 启动docker服务 systemctl stop docker # 停止docker服务 systemctl restart docker # 重启docker服务 docker -v #查看版本 |
docker images 查看所有镜像 docker pull nginx:1.14.1 下载镜像(若不加版本号,则下载最新版) docker rmi 605c77e624dd 按照镜像的image id 删除镜像,也可以写镜像和版本号删除,如: docker rmi nginx:latest 删除指定镜像 docker save -o [保存的目标文件名称] [镜像名称] 导出镜像 docker load -i nginx.tar 加载本地镜像 docker build 创建镜像 docker push 推送镜像3、容器基本命令
创建并运行容器: docker run --name [自定义容器名字,如nginx] -p 80:80 -d nginx:1.14.1 -d:后台运行。 80:80: 宿主机端口:容器端口 进入容器: docker exec -it nginx bash -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互 bash:进入容器后执行的命令,bash是一个linux终端交互命令 修改容器内文件内容:如修改nginx的index.html内容:(此命令仅做展示,日后有更好的方法) 先进入指定目录:目录可以在docker官网该镜像文档中的How to use this image栏查询。 cd /usr/share/nginx/html sed -i -e 's#Welcome to nginx#欢迎您#g' -e 's###g' index.html 查看容器状态: docker ps docker ps -a 查看所有容器,包括已经停止的 查看容器日志: docker logs (加 -f 可以持续查看日志) 容器开启 docker start 容器停止 docker stop 容器暂停 docker pause 容器继续 docker unpause 退出容器 exit 强制删除容器? docker rm -f -v nginx
3.1举例——解读命令:创建并运行容器
docker run --name containerName -p XX:XX -d imageName:tag 创建并运行容器 命令解读: docker run :创建并运行一个容器 --name : 给容器起一个名字,比如叫做containerName -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口 -d:后台运行容器 imageName:镜像名称,例如nginx tag:版本号
3.2举例——解读命令:进入容器
docker exec -it containerName bash 进入容器 命令解读: docker exec :进入容器内部,执行一个命令 -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互 containerName :要进入的容器的名称 bash:进入容器后执行的命令,bash是一个linux终端交互命令
4、目录挂载方式
4.1、案例-给nginx挂载数据卷数据卷挂载:通过一个虚拟目录指向宿主机文件系统中的某个目录。
#数据卷命令
创建数据卷
docker volume create html
查看所有数据
docker volume ls
查看数据卷详情
docker volume inspect html
删除指定数据卷
docker volume rm
删除所有未使用的数据卷
docker volume prune
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx 命令解读: -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中 html:数据卷名,任意起
直接挂载:宿主机目录 ---> 容器内目录
-v [宿主机目录]:[容器内目录] -v [宿主机文件]:[容器内文件]4.2、案例-给MySQL挂载本地目录
docker run // 创建容器 --name mysql // 给容器起名 -e MYSQL_ROOT_PASSWORD=root // 设置root账户密码 -p 3306:3306 // 端口映射 -d // 后台运行 -v /tmp/mysql/data:/var/lib/mysql // 绑定宿主机上的文件夹 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/my.cnf // 绑定宿主机上的文件 --privileged // 设置超级管理员远程访问权限 mysql:5.7 // 镜像名称



