docker基础

1. 基础

一次构建,处处运行。

三要素:仓库、镜像、容器。

docker和传统虚拟化方式的不同之处:

  1. 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在改系统上再运行所需应用进程;
  2. 而容器内的应用进程直接运行与宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便;
  3. 每个容器之间互相隔离,每个容器都有自己的文件系统,容器之间进程不会互相影响,能区分计算资源。

1.1.    镜像

 

 

 

 

1.2.    容器

1.3.    仓库

 

2. 安装

2.1.    Centos6.8安装

 

 

 

 

 

 

 

2.2.    Centos7安装

https://docs.docker.com/engine/install/centos/

 

 

 sudo管理员权限的切换,如果当前用户是root,就不用sudo了

\是连接符,不想写太长

 

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

 

yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

 

 

 

 

 

 

遇到问题:

执行docker ps时,报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决:

配置环境变量

sudo vim /etc/profile.d/docker.sh

export DOCKER_HOST=tcp://localhost:2375

source /etc/profile

source /etc/bashrc

配置启动文件

sudo vim /lib/systemd/system/docker.service

其中修改ExecStart所在行为下面:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654

#2375 是管理端口

#7654 是备用端口

sudo systemctl daemon-reload

sudo systemctl restart docker.service

docker version

 

3. 阿里云镜像加速器

3.1.    阿里云镜像加速器地址

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

 

3.2.    Centos6.8配置加速器

 

 

 

 

 

3.3.    Centos7配置加速器

 

 

 

3.4.    测试hello-world

 

4. 命令

 

4.1.    镜像命令

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2.    容器命令

 

docker pull centos

VMware创建centos7虚拟机时的centos7镜像4个多G,从阿里云上下载下来的镜像200M。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

启动容器 docker start 容器ID或容器名

重启容器 docker restart 容器ID或容器名

停止容器 docker stop 容器ID或容器名

强制停止容器 docker kill 容器ID或容器名

删除已停止的容器 docker rm 容器ID

 

xargs是Linux可变参数;| 是管道符,上一个命令的结果集作为输入参数传给下一个。

4.3.    重点命令

 

 

 

Docker的机制如果没有前台进程就会自杀,所以只用docker run -d 容器名的命令,会马上自杀,所以下面截图命令加了每2秒打印,容器还会在运行。

 

 

 

Docker是一层套一层的

 

 

 

 

 

 

 

 

 

如果容器停了,里面的文件就不存在了,所以想把文件拷贝到宿主机上。

 

 

 

 

 

5. 镜像

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. Commit操作

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7. 容器内添加数据卷

 

Docker容器数据卷能干嘛?1容器的持久化;2容器间继承+共享数据

 

 

 

7.1.    用命令添加

 

 

 

可以通过docker inspect命令查看描述中有以下

 

 

 

 

 

 

 

-v是卷的缩写,ro是read only缩写,容器里面不能做增删改,只能查

 

7.2.    用DockerFile添加

 

这台宿主机上有/myDataVolume目录,但是别的宿主机上可能没有,所以不能这么写。

 

 

 

 

 

相当构建了一个自定义的centos镜像,并且带了两个卷。

 

 

 

 

 

附:

  • 如果出现不能写的问题

 

 

 

 

  • 看Tomcat的dockerFile

 

 

 

点开后往下翻

 

8. 数据卷容器

 

 

 

 

 

 

 

dc02和dc03继承自dc01

 

删除dc01,dc02和dc03之间还能数据共享

再建个dc04,继承自dc03,再删除dc03

 

9. DockerFile解析

1. 编写dockerFile文件

2. docker build构建,获得一个自定义的镜像

3. docker run

dockerFile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。

看下centos的镜像长什么样?

https://hub.docker.com/_/centos

 

scratch是源镜像

第二行是作者邮箱

CMD是命令的意思

 

 

 

 

 

 

 

9.1.    DockerFile的体系结构

 

 

 

 

 

9.2.    案例-自定义镜像centos

 

 

 

 

 

 

 

 

 

 

 

 

 

9.3.    案例-CMD/EBTRYPOINT

 

 

 

 

 

如果把ENTRYPOINT换成CMD就会报错,因为CMD是把上一个命令覆盖,而ENTRYPOINT是追加,会把docker run之后的参数当做参数传递给ENTRYPOINT,之后形成新的命令组合。

9.4.    案例-ONBUILD

 

 

 

9.5.    案例-自定义镜像Tomcat

 

在宿主机上

 

DockerFile内容:

 

 

 

9.6.    案例-Redis

 

docker pull redis:3.2

 

 

 

 

 

 

posted @ 2020-11-19 09:46  lvyouyou  阅读(69)  评论(0编辑  收藏  举报