首页 > 其他分享 >docker

docker

时间:2023-12-13 11:25:47浏览次数:348  
标签:容器 ID 镜像 docker Dockerfile 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<[email protected]>

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

标签:容器,ID,镜像,docker,Dockerfile,Docker
From: https://www.cnblogs.com/xiqin-huang/p/17898658.html

相关文章

  • Docker部署Transmission | Linux 下的一款 BitTorrent 下载软件
    在【镜像管理】>【镜像仓库】输入关键词transmission进行搜索。搜索结果中,找到要搭建的容器镜像linuxserver/transmission,点击下载或双击镜像即可下载。版本默认选择latest,等待镜像拉取完成即可。​​​​​​创建容器在【镜像管理】>【本地镜像】您可以看到刚刚已下载......
  • docker启动容器报错:Error response from daemon: driver failed programming external
    安装的docker启动报错如下:Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointnacos(2b0f4edff8f640559af9626936d1b38d965302ef525af483716e8e8c9121583e):(iptablesfailed:iptables--wait-tnat-ADOCKER-ptcp-d0/0--dp......
  • Docker_harbor-网络排查以及redi排查
    仓库registry公共仓库DockerHub这样的公共仓库 本地仓库docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。 Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是DockerRegistry的更高级封装还整合了两个开源的安全组件,一个是N......
  • 【docker】根据docker inspect获取启动参数
    背景服务器里起了好些服务,但启动脚本已经丢失了,怎样通过运行中的容器反推启动脚本呢?启动脚本:环境变量,端口映射什么的通过dockerinspect通过dockerinspect可以拿到一些信息,但信息确实很多,并且几十个服务,总不能一个一个去查,怎么办,当然是写脚本,但写脚本之前,先找一下,通过一......
  • PMM 基于 Docker 部署
    1、Docker、Docker-Compose安装https://www.cnblogs.com/a120608yby/p/9883175.htmlhttps://www.cnblogs.com/a120608yby/p/14582853.html2、基于Docker-Compose部署PMM#vimdocker-compose.ymlversion:'3'services:pmm-server:image:percona/pmm-ser......
  • Linux系统安装docker源失败
    错误描述yum添加完docker源的地址,执行yummakecache后返回如下的问题yummakecachefailure:repodata/repomd.xmlfromdocker-ce-stable:[Errno256]Nomoremirrorstotry. https://download.docker.com/linux/centos/$releasever/x86_64/stable/repodata/repomd.xml:[Err......
  • 在 RHEL 上安装 Docker 引擎
    参考 在RHEL上安装Docker引擎(s390x)|Docker文档1、在尝试安装新版本之前卸载任何此类旧版本,以及相关的依赖项。同时卸载和关联的依赖项(如果已安装):dockerdocker-enginePodmansudoyumremovedocker\docker-client\docker-clie......
  • Docker部署Nginx Proxy Manager
    更新环境aptupdate-y&&aptinstall-ycurlsocatwgetsudoBBRPLUS四合一脚本wget-N--no-check-certificate"https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"&&chmod+xtcp.sh&&./tcp.sh安装Dockerc......
  • docker 安装
    1.防御性操作——卸载。其实我的os是Ubuntu2004,应该是不会有的,但是我还是执行了一下:apt-getremovedockerdocker-enginedocker.iocontainerdrunc2.惯例,执行aptupdate:3.安装docker依赖,docker在Ubuntu上有一些依赖的软件包,一个命令搞定:apt-getinstallca-certifica......
  • CentOS7.6安装docker一把成
    新建虚拟机或云主机,连通网络后刷此脚本安装docker#卸载旧docker安装新dockeryumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engineyuminstall-yyum-utilsdevice-mapper-persiste......