一:docker的安装
1:查看CentOS的版本
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上, 要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x
cat /etc/redhat-release
用来查看Red Hat系列Linux发行版的版本信息的
uname -r
命令用于显示操作系统的发行版号
2:确定你的虚拟机可以上外网
ping www.jd.com 或者 ping www.baidu.com
YUM相当于一个大的智能仓库里面啥组件和依赖包都有而且一次性找多个东西,在Linux中可以解决多个依赖包的关系。比如要安装支持c和c++的语言编译器,如gcc、gcc-c++要使用RPM方式安装,则要一个个装多个依赖包,太繁琐了,这里我们用YUM就可以一键安装非常方便。
先安装基础环境。
yum -y install gcc
yum -y install gcc-c++
3:安装需要的软件包(官网要求)
执行:
yum install -y yum-utils
4:设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5:更新yum软件包索引
yum makecache fast
6:安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
7:启动docker
systemctl start docker
8:测试docker
docker version
阿里云镜像加速
操作流程
复制 配置 在Linux上运行自动运行即可。
systemctl restart docker 重启docker
为什么docker 比虚拟机快
(1)docker有着比虚拟机更少的抽象层
由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
docker 常用命令
·启动docker: systemctl start docker
·停止docker: systemctl stop docker
·重启docker: systemctl restart docker
·查看docker状态: systemctl status docker
·开机启动: systemctl enable docker
·查看docker概要信息: docker info
·查看docker总体帮助文档: docker --help
·查看docker命令帮助文档: docker 具体命令 --help
镜像相关
# 搜索镜像仓库,推荐:https://hub.docker.com/ (界面)
docker search 镜像名称
# 查看本地镜像
docker images
# 下载(拉取)镜像,镜像名称格式为 名称:版本号
docker pull 镜像名称
# 删除镜像(慎重)
docker rmi 镜像名称
容器相关
# 查看本地容器
docker ps # 能查看正在运行容器
docker ps -a # 能查看所有的容器(运行的和停止的)
# 创建一个新的容器并运行(-d 后台运行容器,并返回容器ID -p 主机端口:容器端口 指定映射关系)
docker run -d -p 8089:80 --name=容器名 镜像名称
# 进入容器内部
docker exec -it 容器名称 /bin/bash /bin/bash 希望交互模式是shell
# 查看容器信息
docker inspect 容器名称
# 启动容器
docker start 容器名称
# 停止容器
docker stop 容器名称
# 删除容器
docker rm 容器名称
#删除所有容器
docker rm -f $(docker ps -aq)
举例:
1. 查看容器 docker ps -a
2. 运行nginx进行为容器 docker run -d -p 8089:80 --name=mynginx nginx
3. 进入 docker exec -it mynginx /bin/bash
4. 停止 docker stop mynginx
5. 删除 docker rm mynginx
Docker镜像制作
Docker镜像是一个分层文件系统,最底端是bootfs,它会直接使用宿主机的bootfs;第二层是root文件系统rootfs,称为base image
然后再往上可以叠加其他的镜像文件,一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。
docker允许将一个容器直接转化为镜像,使用的命令如下:
docker commit 容器id 镜像名称:版本号
案例:修改当前的nginx容器中的index.html文件内容为hehe,然后将修改后的容器做成一个名为mynginx:hehe的镜像
#1. 查看当前正在运行的容器
[root@itcast ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ce0bf14399d nginx "/docker-entrypoint.…" 14 hours ago Up 14 hours 0.0.0.0:80->80/tcp nginx
#2. 进入nginx容器,然后向主页面覆盖写入"hehe",然后退出容器
[root@itcast ~]# docker exec -it nginx /bin/bash
root@0ce0bf14399d:/# echo "hehe" > /usr/share/nginx/html/index.html
root@0ce0bf14399d:/# exit
#3. 将修改之后的容器生成为mynginx:hehe镜像
[root@itcast ~]# docker commit nginx mynginx:hehe
sha256:139a9ea6a6008bc5557566e54316ccd8b93f508dba1daf7296235a461c8d471e
#4. 查看镜像
[root@itcast ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx hehe 139a9ea6a600 8 seconds ago 133MB
Docker下载infulxDB时序数据库
docker pull influxdb
#拉取influxdb镜像
#查看所有镜像
docker images
#启动influxdb
docker run --name influxdb --restart=always -p 8086:8086 influxdb
docker logs --since 30m influxdb
--since 30m 是查看此容器30分钟之内的日志情况。
随后访问 ip+8086即可
172.17.0.1 容器内去呼叫服务器内的ip地址 172.17.0.1:8080 呼叫服务器的8080端口号 -network host 容器与服务器都是同一个网段 127.0.0.1:8080 呼叫服务器的8080端口
127.0.0.1 去呼叫容器内的地址 私有化的系统 8080 8090 127.0.0.1:8080 呼叫容器内的8080
docker 进入mysql 命令:
docker exec -it <容器ID或名称> /bin/bash
mysql -h localhost -u <用户名> -p
docekr run 到底是干了一个什么事情图解