docker

安装#

Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。 Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。因此, Docker必须部署在Linux内核的系统上。如果其他系统想部署Docker就必须安装一个虚拟Linux环境。

docker中的镜像像是Java中的类模版,容器则类型Java中的一个个实例对象,仓库就是存放镜像的地方。

安装步骤#

  1. 检测centos版本:cat /etc/redhat-release
  2. 卸载原有的docker。
  3. 设置存储库:yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo记得将官方库修改为阿里云的库。
  4. 安装docker:yum install docker-ce docker-ce-cli containerd.io
  5. 开启docker服务:systemctl start docker
  6. 测试docker是否能够正常运行:docker version或者docker run hello-world
  7. 关闭docker服务:systemctl stop docker

常用命令#

帮助启动类命令#

命令 作用
systemctl enable docker 开机启动
docker info 查看概要信息
systemctl start docker 开启docker
systemctl stop docker 关闭docker

镜像命令#

仓库名、标签都是none的镜像称为虚悬镜像。

命令 作用
docker images 列出本地主机的镜像
docker search 镜像名称 在远程仓库中查找镜像
docker pull 镜像名称 在远程仓库中下载镜像
docker system df 查看镜像/容器/数据卷所占的空间
docker rmi 镜像名/镜像ID 删除镜像,-f强制删除

容器命令#

docker容器后台运行的时候必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令,就会自动退出。只有那些需要后台守护的才能用后台方式,例如redis。

命令 作用
docker run 镜像名称 新建+启动容器,-d后台守护,-it前台交互
docker ps 列出所有运行的容器实例
exit 在容器内的交互界面输入,退出交互并关闭容器
Ctrl+p+q 退出当前容器交互,容器转为后台运行
docker start 容器ID/容器名 启动已停止的容器
docker restart 容器ID/容器名 重启容器
docker rm 容器ID/容器名 删除容器
docker logs 容器ID/容器名 查看容器日志
docker exec -it 容器ID bash/shell 进入运行中容器的交互界面,此时使用exit退出不会关闭
docker cp 容器ID:容器内路径 目的主机路径 将容器中的文件复制到主机
docker export 容器ID > 目标文件名 导出容器的内容作为tar文件
docker import 从tar导入容器
docker commit -m="vim cmd add ok" -a="xiqin" 25dcc7777449 xiqin/myubuntu:1.3 将容器提交为镜像

docker镜像#

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。

镜像分层最大的好处是共享资源,方便复制迁移,复用性好。

Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

容器数据卷#

Docker挂载主机目录访问如果出现cannot open directory.:Permission denied。解决办法:在挂载目录后多加一个--privileged=true参数即可。

容器数据卷类似共享文件夹,可用于容器和主机之间传输文件。

容器卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过联合文件系统提供用于持续存储或共享数据的特性。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

构建容器数据卷:docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu

特点#

  1. 数据卷可在容器之间共享或重用。
  2. 数据卷中的更改可以直接实时生效。
  3. 数据卷中的更改不会包含在镜像的更新中。
  4. 数据卷的生命周期一直持续到没有容器使用它为止。

软件安装#

Tomcat进行docker安装时,新版可能需要删除webapps文件夹才能生效,再将webapps.dist改名为webapps,因为webapps.dist里面才有东西。

docker安装MySQL后,需要先修改字符集编码以解决中文乱码问题。

docker中的MySQL和客户端的字符集编码可能显示不一样,以docker中的版本为准。

Mysql主从同步时Slave_IO_Running:Connecting ; Slave_SQL_Running:Yes的情况故障排除

Dockerfile#

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

Dockerfile每条保留字指令都必须为大写字母且后面要跟随至少一个参数,且每条指令都会创建一个新的镜像层并对镜像进行提交。

构建步骤:编写Dockerfile文件,docker build命令构建镜像,docker run依照镜像生成容器。

Dockerfile一定要命名为Dockerfile

Docker执行Dockerfile流程#

  1. docker从基础镜像运行一个容器。
  2. 执行一条指令并对容器作出修改。
  3. 执行类似docker commitl的操作提交一个新的镜像层。
  4. docker再基于刚提交的镜像运行一个新容器。
  5. 执行dockerfile中的下一条指令直到所有指令都执行完成。

Dockerfile实例#

FROM centos:7
MAINTAINER xiqin<xiqin@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u381-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u381-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_381
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 80

CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

作者:xiqin

出处:https://www.cnblogs.com/xiqin-huang/p/17898658.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   西芹-小汤圆  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示