纳溪区城乡住房建设局网站自己怎么免费做百度推广
docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;docker平台就是一个软件集装箱化平台,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,也可以实现虚拟化,并且容器之间不会有任何接口。
安装Docker
我的安装在了centos 7-64-2上面了
(1).需要会一点linux基础
(2).Centos7以上版本
(3).使用xshell连接远程服务器进行操作
1.环境查看
查看系统内核 uname -r 需要系统内核3.10以上的
2.查看系统版本
语法:建议使用这条命令查看cat /etc/os-release 或 cat /etc/redhat-release 这个是适合redhat系的linux
需要7版本以上的
3.使用docker官网帮助文档
4.找到Developers里面有个Docs,双击打开
5.Get Docker就是下载docker,找到自己要下载的,我要下载linux版本,根据需求下载
6.找到Docker Engine 这是docker引擎,在下面找到Centos
7.卸载旧的安装包,开始前尽量卸载一下,以防万一
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
8.出现这个没有匹配说明你没装过docker
8.下载安装包
sudo yum -y install yum-utils 或 sudo yum install -y yum-utils ----y放哪都可以
9.设置镜像仓库
官网默认是国外的镜像,速度太慢不建议用,建议用阿里云的镜像,放在下面了
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
这个是阿里云镜像,使用国内阿里云的镜像 ,十分快(推荐用这个镜像)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
10.更新yum软件包索引
yum makecache fast
11.安装docker相关内容 docker-ce就是社区版本(一般使用的都是社区版) docker-ee就是企业版本
yum -y install docker-ce docker-ce-cli containerd.io
12.启动docker (只要下面没提示就是执行成功)
systemctl start docker
如果启动docker报错
报错原因:这是因为缺少 rhel-push-plugin.socket 单元,该单元是rhel-push-plugin软件包的一部分
接着执行 curl -sSL https://get.docker.com/ | sh
13.使用docker version验证是否安装成功
14.用hello-world测试一下docker引擎,执行 docker run hello-world
15.查看一下下载的这个hello-world镜像 docker images
16.同时也可以给docker设置开机自启状态,这样每次都不用手动启动了
systemctl enable docker 开启自启动
systemctl status docker 查看docker状态
查看已启动的服务
systemctl list-units --type=service
查看是否设置开机启动
systemctl list-unit-files | grep enable
到此docker下载完成
卸载Docker
想要卸载docker怎么做?
只需要两步:
1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
2.删除资源
rm -rf /var/lib/docker /var/lib/docker 是docker默认工作路径
Docker镜像加速器
1.百度aliyun
2.找到容器镜像服务ACR
3.搞一个个人版,用身份证验证一下就行了,很简单
4.找到镜像加速器Centos
5.在xshell执行下面4条命令:4条命令直接从上面加速器中粘贴,不容易出错
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://qhceg9a4.mirror.aliyuncs.com"] } EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
到此镜像加速器配置完成
Run流程和Docker原理
这个就是Run流程和Docker原理图
底层原理
Docker是怎么工作的?
Docker是一个Client -Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。
DockerServer接收到Docker-Client指令,就会执行这个命令
为什么Docker比VM快?
1.Docker有着比虚拟机更少的抽象
由于docker不需要Hypervisor(虚拟机),实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU,内存利用率上docker有绝对优势
2.Docker利用的是宿主机的内核,不需要加载操作系统OS内核,而VM需要Guest OS内核
新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,虚拟机需要加载OS,返回新建过程是分钟级别,而docker直接利用宿主机操作系统,省略了此过程,因此新建一个docker容器,只需要几秒
Docker和VM区别
1,启动速度不同:docker启动快速属于秒级别,而虚拟机通常需要几分钟去启动;2、性能不同:docker需要的资源更少;3、隔离性不同:docker属于进程之间的隔离,隔离性较弱,而虚拟机可以实现系统级别的隔离。4.安全不同,docker 的安全性更弱,5.利用率不同:利用率上docker有绝对优势
Docker常用命令
官方文档找到docker命令大全
docker version 显示docker的版本信息
docker info 显示docker的系统信息,包括镜像和容器的数量
docker --help 帮助命令 如:docker images --help
镜像命令
docker images 查看所有本机的主机上的镜像
REPOSITORY 镜像的仓库 TAG 镜像的标签 IMAGE D 镜像的id
CREATED 镜像创建的时间 SIZE 镜像的大小
查看镜像的常用选项 docker images --help 一般常用的选项就是-a和-q
常用的两个选项
-a 列出所有镜像
-q 只显示镜像id
一般 -aq一块使用
docker search 搜索镜像
这个搜索和你在官网上搜索的效果是一样的
我去搜索mysql镜像 docker search mysql
docker search --help 查看可用选项
案例:docker search mysql --filter=STARS=3000
索索出来的镜像是STARS大于3000的
docker pull 下载镜像
下载mysql镜像 docker pull mysql 不指定默认下载最新版本
指定版本下载
docker pull mysql:5.7 版本一定是官网有的,不能乱写
再次查看镜像docker images
docker rmi 删除镜像
指定删除mysql5.7的镜像,根据镜像id去删除 docker rmi -f 镜像id
也可以指定多个镜像一块删除 docker rmi -f 镜像id1 镜像id2 镜像id3
递归删除所有镜像 docker rmi -f $(docker images -aq)
查看rmi可用选项
容器命令
说明:我们有了镜像才能去创建容器,我们下载个centos镜像来测试学习
下载centos镜像
新建容器并启动 启动就是用run 语法: docker run [参数] 镜像
查看run常用选项 docker run --help 上面图就是常用选项 -d,-it -p,-P
进入了容器,从主机名变成就id号
ls查看容器内的centos,与外部的centos没有一点关系 容器内部命令还不算完善
退出容器,容器直接退出停止exit 想要退出容器不想停止容器按ctrl+p+q
列出所有运行的容器
docker ps 列出正在运行的容器
docker ps -a 列出正在运行的容器和历史运行的容器
docker ps -n=?显示最近创建的容器 docker ps -n=2
docker ps -q 只显示容器的编号id 一般与a连用
删除容器
语法:docker rm 容器id 指令删除容器,不能删除正在运行的容器,强制删除docker rm -f id
删除所有容器 docker rm $(docker ps -aq)
docker ps -a -q |xargs docker rm 也是删除所有容器
启动和停止容器操作
docker start 容器id #启动容器
docker restart 容器id 重启容器
docker stop 容器id 停止正在运行的容器
docker kill 容器id 强制停止当前容器(如果stop不能停掉,就用kill)
一个images镜像通过run命令启动成容器
常用其他命令
通过镜像centos启动容器 docker run -d centos -d选项是后台运行方式
当你docker ps 查看,发现没启动
常见的坑:docker容器使用后台运行(docker run -d centos),必须要有一个前台进程(docker run -it centos ),如果没有,docker发现没有应用,就会停止掉
查看日志
语法:docker logs -tf --tail 10 id号
logs帮助命令:docker logs --help
-tf 显示日志
--tail number 显示日志条数
查看容器的进程信息top命令
语法:docker top 容器id
查看镜像元数据
语法:docker inspect 容器id
inspect的帮助命令
进入当前正在运行的容器
语法1:docker exec -it 容器id /bin/bash -it就是交互式进入
语法2:docker attach 容器id
两者的区别:
docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
语法:docker cp 容器id: 容器内路径 目的的主机路径 (冒号别忘记)
大致流程:进入容器 docker attach 容器id ,在容器创建一个文件,然后退出容器exit,查看容器docker ps 尽管容器关闭了,只要他的容器id在就没事,接着开始拷贝,因为我们拷贝到/home目录,一定要cd切换到home目录查看。
docker部署Nginx
1.去搜索Nginx docker search nginx
2.下载Nginx docker pull nginx 不指定默认是最新版
3.查看下载的nginx镜像
4.通过镜像去run启动容器
-d 就是后台运行 --name 给容器取个新名字
-p 3344:80 宿主机端口和容器端口(nginx默认端口就是80)
5.本机测试一下3344 curl localhost:3344 看到了Welcome to nginx 说明测试通过
6.通过公网可以访问: http://192.168.211.15:3344
7.进入容器 docker exec -it nginx01 /bin/bash
8.查找一下nginx配置文件 whereis nginx
9.退出容器,并停止容器
10.发现访问不了了
思考一个问题:我们每次改动nginx配置文件,都需要进入容器内部十分麻烦,我要可以在容器外部提供一个映射路径,达到在容器外修改文件,容器内就可以自动修改,该怎么做到,以后再学习-v 就是数据卷 就能达到这个效果
端口暴露的概念