Docker由哪些部分组成
Centeros 安装Docker
1 yum update(yum更新到最新)
2 yum install -y yum-utils device-mapper-persistent-data lvm2
3 sudo(如果不是root,需要加sudo)yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(设置yum 源为国内阿里云)
4 yum list docker-ce --showduplicates |sort-r (列出所有的docker)
5 yum installdocker-ce-17.12.1.ce
参考此 https://www.cnblogs.com/salmonLeeson/p/11610139.html 配置docker国内镜像加速器
docker服务相关的命令(damon)
systemctl start docker(启动docker)
systemctl status docker(查看docker的状态)
systemctl stop docker(停止docker)
systemctl restart docker(启动docker)
systemctl enable docker(开机启动docker)
docker镜像相关的命令
查看本地镜像 docker images
搜索镜像 docker search xx(联网搜索镜像)
拉取镜像(https://hub.docker.com/ 可以查询镜像的地址)
删除镜像 docker rmi imageid或者docker rmi imagename:tag(version)
删除全部镜像:docker image -q(列出全部的镜像id)
docker rmi docker image -q
docker容器相关的命令
根据镜像创建容器:
docker run -it --name=tomcattest tomcat:jdk14-openjdk-oracle /bin/bash
1 i(表示没有客户端连接时依然保持容器运行) 2 t(分配终端) 3 --name给容器命名 4 镜像以及版本 5 /bin/bash进入容器内部。根据下图红色区域可以看到
通过-it创建的容器,创建后立马进入容器,退出后,容器也退出
docker run-id --name=tomcattest1 tomcat:jdk14-openjdk-oracle
docker run --name xx -d -p 8080:8080(端口) imagename
1 d后台运行创建容器,通过命令才能进入容器
通过docker exec -it tomcattest1 /bin/bash
docker ps 查看正在运行的容器
docker ps -a查看全部的容器
退出容器:在命令行输入exit
启动容器 docker start containername
停止容器 docker stop containername
删除容器 docker rm containername/containerid
查看容器信息 docker inspect containername
杀死所以正在运行的容器 docker kill $(docker ps -a -q)
删除所有的容器 docker rm $(docker ps -a -q)
删除正在运行的容器 docker rm -f $(docker ps -q)
Docker容器卷
宿主机文件或目录挂载到docker里面
docker run -it --name=xx -v 宿主机目录:容器目录 imagename:version
宿主和docker的内容保持一致,修改都会互相作用
一个容器可以挂载多个目录 ,注意 \代表不执行命令,继续在下一行输入命令
注意:之前自己踩坑,容器目录里面是和宿主机一样的,也是有根目录,家目录等,所以挂载后,要进入容器内部在对应的目录去查看,如下图,
通一个数据卷可以挂载到不同的容器上,间接的实现容器的互相通信
多容器数据进行交换
方法一:挂载到同一个数据卷,比较麻烦,对了容器比较多的情况
方法二:配置数据卷容器
制作Docker镜像
容器转为镜像
docker commit 容器id 镜像名称:镜像版本号
docker save -o 压缩文件名称 镜像名称:镜像版本号(转成压缩文件后)
docker load -i 压缩文件名称(测试人员拿到后可以将镜像转为容器,继续使用)
Dockerfile概念
是一个文件,包含一条条的指令,每一条指令构建一层,最终构建出一个新的镜像
docker保留字指令详解
1 自己写了一个dockfile ,然后使用命令build images
docker build -f Dockerfile -t mycentos .
2 CMD 和ENTRYPOINT的区别
如果有两行CMD 命令的话,最后一行会覆盖前面的命令,如果使用ENTRYPOINT,则是追加命令
用上图的两个Dockerfile生成image时,第一个CMD版本的 image run的时候是不支持追加命令,会覆盖
entrypoint版本支持追加命令,例如在run 命令追加-i ,则代表 curl -s -i http://www.baidu.com