一、docker的思想
1、集装箱:会将所有需要的内容放到不同的集装箱中,谁需要这些环境就直接拿到这个集装箱就可以了。
2、标准化:
1)、运输的标准化:Docker有一个码头,所有上传的集装箱都放在这个码头上,当谁需要某一个环境,就直接指派大海去搬运这个集装箱就可以了。
2)、命令的标准化:Docker提供了一系列的命令,帮助我们去获取集装箱等操作。
3)、提供了REST的API:衍生出了很多的图形化界面,Rancher。
3、隔离性:
Docker在运行集装箱的内容时,会在Linxu内核中,单独的开辟一片空间,这片空间不会影响到其他程序。
4、docker底层运行原理
二、组成
注册中心:超级码头,上面放的就是集装箱
镜像:集装箱
容器:运行起来的镜像
三、Docker的基本操作
准备工作:
systemctl disable firewalld systemctl stop firewalld setenforce 0
1、安装docker
下载关于Docker的依赖环境
yum -y install yum-utils device-mapper-persisten-data lvm2
设置一下下载Docker的镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
yum makecache fast
yum -y install docker-ce
启动,并设置为开机自动启动,测试
systemctl start docker 启动docker systemctl enable docker 设置开机自启
docker run hello-world 测试
四、docker的基本命令
1、查看版本
[root@controller ~]# docker version 查看Docker版本号 Client: Version: 1.13.1 客户端版本号 API version: 1.26 Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64 Go version: go1.10.3 Git commit: 64e9980/1.13.1 Built: Wed Jul 1 14:56:42 2020 OS/Arch: linux/amd64 Server: Version: 1.13.1 服务端版本号 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64 Go version: go1.10.3 Git commit: 64e9980/1.13.1 Built: Wed Jul 1 14:56:42 2020 OS/Arch: linux/amd64 Experimental: false
2、docker网桥
3、Docker配置文件:
/etc/sysconfig/docker
/usr/lib/systemd/system/docker.service
4、Docker日志:Docker的日志文件写入到 /var/log/message里
[root@controller ~]# tail -f /var/log/messages |grep docker
5、帮助命令
6、镜像命令
7、查找镜像命令–search
8、删除镜像命令
9、运行一个容器
10、退出容器
11、停止容器
12、进入容器
13、拷贝容器内文件
14、汇总
五、docker的中央仓库
1、Docker官方的中央仓库:这个仓库是镜像最全的,但是下载速度较慢。
2、国内的镜像网站:网易蜂巢,daoCloud
http://hub.daocloud.io/ (推荐使用)
3、在公司内部会采用私服的方式拉去镜像(添加配置)
需要在 /etc/docker/daemon.json,没有则添加此文件 { "registry-mirrors": ["https://registry.docker-cn.com"], "insecure-registries":["ip:port"] } 重启两个服务 systemctl daemon-reload systemctl restart docker
六、镜像的操作
1、UnionFS(联合文件系统)
2、Docker镜像加载原理
3、镜像加速,获取加速器地址
centos6镜像加速配置:
测试:
centos7镜像加速配置:
拉取镜像到本地
docker pull 镜像名称[:tag] 举个例子 docker pull daocloud.io/library/tomcat:8.5.15-jre8
镜像命令
docker images 查看本地所有的镜像
docker rmi b8dfe9ade316 删除本地镜像,本地镜像必须处于停止状态
docker rmi -f b8df 强制删除
docker save -o ./tomcat.image b8dfe9ade316 导出镜像到本地
docker load -i tomcat.image 导入本地镜像
docker tag b8dfe9ade316 tomcat:8.5 修改名字
七、容器的操作
docker run 镜像标识|镜像名称[:tag] 运行容器,简单操作
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像标识|镜像名称[:tag]
-d后台运行容器,
-p宿主机端口:容器端口,为了映射当前linux的端口和容器端口
-P:随机分配端口
--name 容器名称:指定容器的名称
举例:
docker run -d -p 8080:8080 --name tomcat b8dfe9ade316
docker create --name java -it java /bin/bash 创建名为java的容器,但是不启动
提交容器
docker commit 02162513c338 myjava 以本地容器02162513c338为源,制作名为myjava的本地镜像
查看容器
docker ps [-qa] -a:查看全部容器,包括没有运行的
-q:只查看容器的标识
查看容器的日志
docker logs -f 49fc6dffb6df
进入容器内部
docker exec -it 容器id bash
docker exec -it 49fc6dffb6df /bin/bash 举个例子
删除容器(删除容器前。需要先停止容器)
docker stop 容器id 停止指定容器 docker stop $(docker ps -qa) 停止全部容器
docker rm 容器id 删除指定容器 docker rm $(docker ps -qa) 删除全部容器
启动容器
docker start 容器id
八、Docker的应用
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 daocloud.io/library/mysql:5.7.4 运行一个容器,必须指定root初始密码
具体应用例子见下一篇博客
九、数据卷
数据卷:将宿主机的一个目录映射到容器的 一个目录中。
可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变。
docker volume create tomcat 创建数据卷,数据卷默认存放位置:/var/lib/docker/volumes
docker volume inspect tomcat 查看单个数据卷
docker volume ls 查看所有数据卷
docker volume rm tomcat 删除数据卷
docker run -v shujujuan:/usr/local/ 9484402b4b7c 应用数据卷,在创建容器的时候设置映射,没有shujujuan则docker自动创建
docker run -v/opt/volume_tomcat:/usr/local/ 9484402b4b7c 指定数据卷存放位置
docker run -d -p 8080:8080 -v tomcat:/usr/local/ b7370dcde632
十、Docker自定义镜像
1、准备一个Dockerfile文件
vim Dockerfile
from php:7.2-apache copy wordpress /var/www/html
参数:
from:指定当前自定义镜像依赖的环境
copy:将相对路径下的内容复制到自定义镜像中
workdir:声明镜像的默认工作目录
cmd:需要执行的命令(在workdir下执行的,cmd可以写多的,只以最后一个为准)
2、准备好项目
3、通过Dockerfile的命令制作镜像
docker build -t ssm-wordpress:1.0.0 . 在当前目录执行
4、依赖自定义镜像启动一个容器
docker run -d -p 81:80 --name custom-ssm-wordpress 4100c40cae59
5、浏览器查看
原文链接:https://www.cnblogs.com/aqicheng/p/13426775.html