当前位置:首页 > CN2资讯 > 正文内容

我的世界docker怎么装mod

3天前CN2资讯


安装docker

环境centeros7

#1 卸载之前的docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine #2 配置国内镜像地址 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #3 安装 sudo yum install docker-ce docker-ce-cli containerd.io #4 启动docker sudo systemctl start docker #5 测试 sudo docker run hello-world

ubuntu

# 卸载老版本(之前没装过也要执行这个) sudo apt-get remove docker docker-engine containerd runc # 安装必要的工具 sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common # 安装GPG证书 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 设置源为阿里源 sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" #安装docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io sudo apt-get install docker-ce=5:19.03.12~3-0~ubuntu-focal docker-ce-cli=5:19.03.12~3-0~ubuntu-focal containerd.io # 测试 docker version # 配置国内镜像 新建并编辑这个文件 vi /etc/docker/daemon.json { "registry-mirrors": ["https://"] } systemctl daemon-reload //载入daemon.json systemctl restart docker //重启docker

基本操作

运行ubuntu

docker run -it ubuntu bash

查看安装的image

docker images #查看docker下载的镜像 docker images -aq #列出安装的所有镜像的id docker info #查看docker的信息

搜索容器

https:/// #在这个网站上搜索想要安装的项目 docker search mysql #使用命令搜索 docker search flink docker pull mysql #下载最新的mysql docker pull mysql:5.7 #指定版本下载,指定的版本一定要官方存在的,可以再docker hub里查看

删除镜像

docker rmi -f mysql:5.7 # -f是强制删除 docker rmi -f $(docker images -aq) #传一个表达式,删除所有的镜像

下载一个容器

docker pull ubuntu

启动容器

docker run [] imageid #参数说明 --name="tomcat01" 容器名字 启动两个tomcat用来区分 -d 后台运行的方式 -it 使用交互方式运行,进入容器查看内容。比如启动ubuntu 窗口命令及时ubuntu了 -p 指定容器的端口 -p ip:主机端口:容器端口 -p 主机端口:容器端口 -p 容器端口

退出容器

exit 退出容器 ctrl+p+q 退出不关闭容器

列出所有正在运行容器

docker ps

删除容器

docker rm -f imageid C:\Users\Administrator>docker rm nginx001 upbeat_bhabha upbeat_bhabha #windos删除所有的容器,用空格隔开容器名 docker ps -a -q|xargs docker rm -f #linux命令删除所有的容器 docker rm -f $(docker ps -a -q)

后台启动

docker run -d ubuntu #后台运行 但是启动后由于没有前台就会停止服务

查看日志

docker logs -ft --tail 10 imageid

查看容器内部进程

C:\Users\Administrator>docker top 6941ce2112b9 PID USER TIME COMMAND 4733 root 0:00 /bin/bash

进入后台运行的容器

#后台正在运行的容器,重新进入命令。 C:\Users\Administrator>docker exec -it 6941ce2112b9 bin/bash root@6941ce2112b9:/# ll

复制文件

#创建文件后,即使停止ubuntu也可以复制文件 1. 在ubuntu中创建一个a.txt 2. 停止ubuntu 3. docker cp imageid:/home/a.txt D:\

安装软件

ngnx
#1 先在docker hub 上搜索nginx,找到自己想要拉取的版本号 #2 拉取 docker pull nginx:1.18.0-alpine #3 启动(指定端口) docker run -d --name nginx001 -p 7777:80 nginx:1.18.0-alpine #4 测试 http://localhost:7777/ #进入nginx docker exec -it nginx02 /bin/sh #windows下的命令 docker exec -it nginx02 /bin/bash #linux下的命令 #配置文件 /etc/nginx
问题

每次修改配置文件还要进入容器内部修改,可以在外部提供一个映射路径。在外面修改内部就可以自动同步。

tomcat
#加上--rm是用完就会删除 docker run -it --rm tomcat:9.0
es+kibana

安装ES

# --net somenetwork #开启 $ docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2 #查看cpu使用状态 docker stats #特别消耗内存,增加内存限制 $ docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx521m" elasticsearch:7.6.2

安装kibana

思考:各个容器之间是相互隔离的,那么kibana是怎么连接es呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ooBVSmF-1594259689531)(C:\Users\Administrator\Desktop\面试18k宝典\markdown图片\1594199303140.png)]

可视化
  • portainer
#下载执行 docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer #访问设置 http://localhost:9000/ #可视化操作 可视化的操作界面,运行的信息。
  • rancher

一些原理

[root@VM_0_12_centos docker]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx 8559a31e96f4: Pull complete 8d69e59170f7: Pull complete 3f9f1ec1d262: Pull complete d1f5ff4f210d: Pull complete 1e22bfa8652e: Pull complete Digest: sha256:21f32f6c08406306d822a0e6e8b7dc81f53f336570e852e25fbe1e3e3d0d0133 Status: Downloaded newer image for nginx:latest /library/nginx:latest #可以看到当我们拉取镜像的时候,是会拉取一个文件列表。这就是docker的unionFS,联合文件系统。

docker镜像原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是unionFS。 一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录 # bootfs(boot file system) 主要包含 bootloader和 Kernel, bootloader主要是引导加 kernel, Linux刚启动时会加bootfs文件系统,在 Docker镜像的最底层是 boots。 这一层与我们典型的Linux/Unix系统是一样的,包含boot加載器和内核。 当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由 bootfs转交给内核,此时系统也会卸载bootfs。 #rootfs(root file system) 在 bootfs之上。包含的就是典型 Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。 rootfs就是各种不同的操作系统发行版,比如 Ubuntu, Centos等等
docker资源共享
比如有多个镜像都从相同的Base镜像构建而来,那么宿主机只需在磁盘上保留一份base镜像,同时内存中也只需要加载一份base镜像,这样就可以为所有的容器服务了,而且镜像的每一层都可以被共享。

容器数据卷

使用命令添加数据卷

#使用这个命令实现宿主机和容器文件夹共享。相当于在宿主机和容器之间插了一根数据线 docker run -it -v /宿主机绝对路径目录:/容器目录 imageid docker run -it -v /opt/data:/shareData ubuntu docker run -it -v /opt/data:/shareData:ro ubuntu #read only root@103cf47f2267:/shareData# echo "hehe" >> a.txt bash: a.txt: Read-only file system #docker inspect imageid 查看容器相关的信息 "HostConfig": { "Binds": [ "/opt/data:/shareData:ro" ], "Mounts": [ { "Type": "bind", "Source": "/opt/data", "Destination": "/shareData", "Mode": "ro", "RW": false, "Propagation": "rprivate" } ],

使用dockerFile添加容器卷

#1 创建一个文件 touch DockerFile #2 编写dockerFile FROM centos VOLUME ["/shareData1","/shareData2"] CMD echo "finished,-----------success" CMD /bin/bash #3 构建成新镜像 注意:最后面有一个点 docker build -f /opt/DockerFile -t otis/centos . 构建命令大全 https://www.runoob.com/docker/docker-build-command.html #4 测试 docker run -it otis/centos 在根目录查看生成了两个文件 /shareData1 /shareData2 可以通过docker inspect imageid 命令来查看宿主机对应的地址 "Mounts": [ { "Type": "volume", "Name": "8f11c86d26cdeeef49b17924f9204fa0c084905590bbfb83de30dd9197fbf04b", "Source": "/var/lib/docker/volumes/8f11c86d26cdeeef49b17924f9204fa0c084905590bbfb83de30dd9197fbf04b/_data", "Destination": "/shareData1", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }, { "Type": "volume", "Name": "fe242d7f81064eab290e2e372950c327bc0059366d2dc2435499021768a8a736", "Source": "/var/lib/docker/volumes/fe242d7f81064eab290e2e372950c327bc0059366d2dc2435499021768a8a736/_data", "Destination": "/shareData2", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ],

数据卷容器

# 启动一个容器 docker run -it --name dc01 otis/centos # 启动第二个容器 docker run -it --name dc02 --volumes-from dc01 otis/centos #这样相当于dc02继承dc01,但是在dc02中的操作,在dc01中也可以查看

一些测试

#现在又启动一个dc03容器,也是继承dc01 现在删除dc01,在dc02上新建文件,在dc03上也是可以查看到。

DockerFile

简介
# 定义 就是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 # 构建的步骤 编写dockerFile docker build docker run

解析过程

1. 每条保留自指令都必须为大写字母,且后面要跟随至少一个参数 2. 指令从上到下,顺序执行 3. #表示注释 4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
命令
# FROM 基础镜像,当前新景祥是基于哪个镜像的 # MAINTAINER 镜像作者和邮箱 # RUN 容器构建时需要运行的命令,比如到第几行输出以下“======finish======” # EXPOSE 暴露端口 比如redis EXPOSE 6379 # WORKDIR 指定进入软件后,默认的工作目录。 比如 /opt/module/ # ENV 设置工作变量 # ADD(和copy差不多,但是会自动解压) 添加一个 xxx.tar.xz 并解压 # COPY 将文件复制到镜像中 # CMD 指定一个容器启动时要运行的命令 dockerFile 中可以指定多个CMD命令,但是只有最后一个生效,CMD会被docker run之后的参数替换 # ENTRYPOINT 指定一个容器启动时要运行的命令 和CMD的目的一样,都是在指定容器启动程序及参数 # ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild触发
案例

base镜像(scratch)

docker hub基本上所有的软件都是通过在base镜像中安装和配置需要的软件构建出来的

自定义镜像

现在pull的ubuntu是不支持vim 命令和 ifconfig命令,通过编写dockerfile,使其支持。

FROM centos # 设置环境变量 ENV mypath /tmp # 设置启动默认路径 WORKDIR $mypath # 安装vim和net-tools工具 RUN yum -y install vim RUN yum -y install net-tools #暴露端口80 EXPOSE 80 CMD /bin/bash #build docker build -f Dockerfile -t myucentos:0.1 . 最后出现: Successfully built 89fff055a561 Successfully tagged myucentos:0.1 #测试 启动后发现可以使用vim和ifconfig命令了 #镜像编辑历史 docker history imageid

自定义dockerfile 定制tomcat


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/22041.html

    分享给朋友:

    “我的世界docker怎么装mod” 的相关文章

    东南亚VPS终极指南:如何选择最适合你的高性能服务器

    东南亚VPS是指那些数据中心位于东南亚地区的虚拟私人服务器服务。这些服务在近年来变得越来越受欢迎,尤其是对于那些目标用户群体在东南亚的企业和个人来说。东南亚VPS不仅提供了地理上的优势,还在性能和价格上具有竞争力。 数据中心位置与分布 东南亚VPS的数据中心广泛分布在多个国家和地区,包括新加坡、菲律...

    Traceroute测试:高效的网络诊断工具及其应用

    在网络诊断的世界中,Traceroute和Tracert是两个非常重要的工具。对我来说,这两个命令行工具简直是解决网络问题的“侦探”。无论是在Linux、Mac OS还是Windows系统上,这些工具都能追踪数据包在网络中的路径,帮我们一探究竟。通过这些工具,我经常能够定位网络延迟或丢包的问题。 T...

    LightLayer云服务器评测与应用案例分析

    在我日常工作中,云服务器的选择至关重要,而我最近了解到的LightLayer云服务器,给我留下了深刻的印象。作为Megalayer旗下的品牌,LightLayer在全球多个重要地点部署了服务器,尤其是在美国洛杉矶、中国台湾台北和菲律宾马尼拉。这些选择不仅为用户提供了更快速的访问速度,也为他们的云计算...

    Virtono:高性价比的虚拟主机与云服务器解决方案

    在这个信息化迅猛发展的时代,虚拟主机与服务器服务需求越来越高。而提到这个领域,其中有一家备受注目的公司,那就是Virtono。成立于2014年的Virtono,凭借其卓越的产品与服务迅速在全球市场上崭露头角。对于我来说,Virtono的故事不仅仅代表着一家公司,更是一段不断创新与发展的旅程。 Vir...

    使用getenforce命令管理SELinux执行模式的技巧与经验

    getenforce的基本概念 当我开始接触Linux系统的时候,SELinux这个名字总是让我感到神秘。经过逐渐的探索,我了解到SELinux(Security-Enhanced Linux)是一个强大的安全模块,它为Linux系统提供了细致的访问控制。这时候,getenforce命令便进入了我的...

    Windows SSH Keygen 无法连接问题解决指南

    在现代网络环境中,SSH(Secure Shell)协议扮演着至关重要的角色,确保了远程登录的安全性与可靠性。在Windows操作系统中,了解SSH的基本知识是非常必要的。SSH不仅提供了加密的网络服务,还为我们在远程管理服务器时提供了安全的通道。 当我们谈到SSH的时候,首先想到的就是它的密钥认证...