Docker三要素:镜像、容器、仓库
- Docker镜像就是一个只读的模板,镜像可以用来创键Docker容器,一个镜像可以创建很多个容器
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
- Docker利用容器独立运行的一个或者一组应用。容器是用镜像创建的运行实例
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。 - 仓库是集中存放镜像文件的场所。
仓库
和仓库注册服务器
是有区别的。仓库注册服务器往往存放着多个仓库,每个仓库中有包含多个镜像,每个镜像又有不同的标签(tag)
Docker执行流程图
Docker 安装
1、centos6.8 安装Docker
yum install -y epel-release
yum install -y docker-io
- 安装后的配置文件:
ls /etc/sysconfig/docker
cat /etc/sysconfig/docker
- 启动docker后台服务:
service docker start
- docker service 验证
2、centos7.0 安装Docker
# 以前安装过,需要执行这个命令卸载,否则跳过
>yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
- docker官方默认仓库地址
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
阿里云镜像仓库地址
yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
4.yum-config-manager --disable docker-ce-edge
5.yum install docker-ce
帮助文档:docker --help
ctrl+p+q
:退出容器,但不关闭
docker exec -it [容器名] /bin/bash
:重新进入容器中docker attach [容器名]
:重新进入
docker cp [容器名:容器内路径] 目的主机路径
:从容器中拷贝文件到主机上面
el:> docker cp centos:/tmp E:\
docker ps -q
:获取所有正在运行容器的ID
docker rm -f [容器名/ID]
:强制删除正在运行
容器
docker rm -f $(docker ps -q)
:强制删除所有
容器
——————————————————————————————————————
将容器打包成新的镜像——commit
docker commit -a="用户名" -m="日志信息" [容器ID/容器名] 目录1/xxxxx:1.2
:打包新的镜像
Docker容器数据卷
1、直接命令添加
docker run -it 镜像名
:简单的启动容器docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
:添加容器数据卷(容器和宿主机的数据能够同步)
docker run -it -v D:\Code\Docker/myDataVolume:/dataVolumeContainer centos
- 命令带权限
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
:添加容器数据卷(容器和宿主机的数据能够同步)只读
2、DockerFile添加
- 构建dockerfile文件
# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,----------success1"
CMD /bin/bash
类似于下面
docker run -it -v /host1:/dataVolumeContainer1 -v /host2:/dataVolumeContainer2 centos /bin/bash
-
通过
build
去构建,生成镜像
docker build -f [dockerfile的路径] -t [构建的镜像名字] .
el:docker build -f /mydocker/Dockerfile -t zzyy/centos .
★★最后的.
不要忘记了
-
run
容器
docker run -it --name centoslj lljjj/centos /bin/bash
**注意:**若Docker挂载主机目录Docker访问出现cannot open directory。:Permission denied错误。
解决办法:在挂载目录后面多加上一个--privileged=true
docker run -it -v D:\Code\Docker/myDataVolume:/dataVolumeContainer --privileged=true centos
★★★容器数据卷-容器间的传递共享
容器之间配置信息的传递,数据卷的周期一直持续到没有容器使用它为止!
docker run -it --name dc01 centos
:容器dc01
docker run -it --name dc02 --volumes-from dc01 centos
:容器dc02
,继承至dc01
docker run -it --name dc03 --volumes-from dc01 centos
:容器dc03
,继承至dc01
dc01,dc02,dc03
三个容器的数据都是共享的
- 当删除
容器dc01
时,dc02和dc03
里面内容还存在,二者可以继续共享 - 在删掉
容器dc01
基础下,dc02
里面发生改变,容器dc03
也会改变;反之改变dc03
,那么容器dc02
也会改变