张春 发表于 2024-8-14 04:33:48

Docker在linux上的安装与使用(亲测)

https://img-blog.csdnimg.cn/direct/543bd2a6373a4300976f3f637de02988.png

一、Docker安装

1、安装前必读

在安装 Docker 之前,先说一下设置,我这里是Centos7;Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。
注意:本文的下令使用的是 root 用户登录执行,不是 root 的话所有下令前面要加 sudo
2、更新 yum 包

使用 root 权限更新 yum 包(生产情况中此步操作需慎重)
yum -y update
https://img-blog.csdnimg.cn/direct/110ead23f9544ed0b9dec72ff1515ea5.png
3、卸载旧版本(假如以前安装过,否则此步骤可以忽略)

yum remove docker-ce docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine https://img-blog.csdnimg.cn/direct/9a87e3a0b32740879b56f7363e7eb2ba.png4、安装相应的安装包

yum install -y yum-utils device-mapper-persistent-data lvm2 https://img-blog.csdnimg.cn/direct/adf9cf08ff654bb8b2b011fdbe01ffb6.png
5、设置 yum 源

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
https://img-blog.csdnimg.cn/direct/4aa13070ca49499282a81b536f4b7775.png
6、安装最新版本的 Docker Engine-Community 和 containerd

yum -y install docker-ce docker-ce-cli containerd.io https://img-blog.csdnimg.cn/direct/710efa03bbca4883907d50adbe676f8e.png
7、选择性安装(查看可用版本有哪些);若已经做了第六步,无需操作此步骤

yum list docker-ce --showduplicates | sort -r 选择一个版本并安装:yum install docker-ce-版本号
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)不停到第一个连字符,并用连字符(-)分隔。例如:docker-ce-24.0.6。
yum -y install docker-ce-24.0.6 docker-ce-cli-24.0.6 containerd.io https://img-blog.csdnimg.cn/direct/dc0696cb52984c63b6a3d17f7f094236.png
https://img-blog.csdnimg.cn/direct/5bc6b4dc9670401eb5c16ee8aad174ce.png
8、查看安装版本

docker -v
docer version https://img-blog.csdnimg.cn/direct/ad395271c7164a96aedb0847ef911bd2.png
https://img-blog.csdnimg.cn/direct/210fc09f48034a62b92cd1f8f0b6d642.png
9、启动Docker,并设置开机主动启动

systemctl start docker
systemctl enable docker

#停止docker
systemctl stop docker
#重启docker
systemctl restart docker

#查看状态
systemctl status docker
https://img-blog.csdnimg.cn/direct/6919154bc7b342938713629656c52e7b.png
https://img-blog.csdnimg.cn/direct/88ca9bf6319a4aedab71edbda001d10e.png
运行Hello-world
通过运行 hello-world 镜像来验证是否精确安装了 Docker Engine-Community
docker run hello-world https://img-blog.csdnimg.cn/direct/e3e709846676418397ca555f315d69ef.png
10、卸载docker

(1).卸载依赖
 sudo yum remove docker-ce docker-ce-cli containerd.io
(2).删除文件夹
     sudo rm -rf /var/lib/docker
     sudo rm -rf /var/lib/containerd
二、Docker使用

1、镜像操作

#查看镜像
docker images
#移除镜像是 rmi
docker rmi  <镜像【IMAGE】 ID>
#查找镜像
docker search tomcat
#拉取tomcat镜像(默认为 latest版本)
docker pull tomcat:latest
#欺压删除镜像(-f)
docker rmi -f hello-world
#一次欺压删除多个镜像(多个镜像中心用空格隔开hello-world 和nginx)
docker rmi -f hello-world nginx
#一次删除全部的镜像
docker rmi -f $(docker images -qa)
2、容器操作

#查看运行的容器
docker ps
#列出当前所有正在运行的容器+汗青上运行过的
docker ps -a
#列出上一次运行的容器
docker ps -l
#列出前三次运行的容器
docker ps -n 3
#只显示容器编号
docker ps -q
#以交互式且伪终端打开的方式运行centos容器,且容器名字为mycentos
docker run -it --name mycentos centos
#关闭容器后退出容器
exit
#容器不克制退出
ctrl+p+q
#启动容器
docker start <容器 ID>
#重新启动容器
docker restart <容器 ID>
#克制容器(温柔克制)
docker stop <容器【CONTAINER】ID>
#克制容器(欺压克制,相当于拔电源)
docker kill <容器 ID>
#删除已克制的容器
docker rm <容器 ID>
#欺压删除容器(没有克制的也会被删除)
docker rm -f <容器 ID>
#一次性欺压删除多个容器
docker rm -f $(docker ps -aq) 大概  docker ps -aq |xargs docker rm -f
#以后台模式启动一个容器(启动守卫式容器)
docker run -d centos
docker run -d centos /bin/sh -c "while true; do echo hello zhangyanfen; sleep 2; done"
#查看容器日志(-t 加入时间戳; -f跟随最新的日志打印; --tail 数值 显示最后多少条)
docker logs -t -f --tail 3  <容器ID>
#查看容器内运行的进程
docker top <容器ID>
#查看容器内部细节
docker inspect <容器ID>
#未退出容器后,重新进入容器;(attach直接进入容器启动下令的终端,不会启动新的进程)
docker attach <容器ID>
#未退出容器的前提下,在宿主机中执行容器的下令,直接返回给宿主机(是在容器中打开新的终端,并且可以启动新的进程)
docker exec -t <容器ID>  ls -l /tmp
#进入容器
docker exec -it f07f19e6eb63  /bin/bash
#从容器内拷贝文件到主机上
docker cp <容器ID>:容器内路径  目的地主机路径
docker cp 73c418ba31bc:/tmp/zyf.txt  /opt
https://img-blog.csdnimg.cn/direct/b6f7b795d8f046069be4b21713f466ec.png
运行centos容器,并进入centos伪终端 -i 交互式; -t 伪终端
docker run -it <镜像 ID>
https://img-blog.csdnimg.cn/direct/e1298f4724c845a6881dde880a9a3167.png
未退出容器的前提下,在宿主机中执行容器的ls -l /tmp下令,直接返回给宿主机
docker exec -t <容器ID>  ls -l /tmp
https://img-blog.csdnimg.cn/direct/576a1d2b00a34c1a90e00b4e09c2ee52.png
三、Dock卷操作

Docker卷与容器绑定后,容器就可以与宿主数据互通;即便容器克制后,再次启动容器,宿主的数据仍可以同步到容器中。(ro的意思为read only,启动下令添加ro后,容器中不能编辑或添加文件,只有宿主机可以编辑或添加)
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
docker inspect <容器ID>
例:
docker run -it -v /opt/vdata:/opt/mydata --name centos centos
docker inspect 4a9cbd7f02c3
https://img-blog.csdnimg.cn/direct/2ff750b0f696493b94ee06b102a8dd62.png
四、Docker安装Tomcat

1、查找Docker Hub上的tomcat镜像

docker search tomcat https://img-blog.csdnimg.cn/direct/b9517a87b00c48ffb23877c488b2cc9e.png
2、拉取tomcat镜像

docker pull tomcat
docker images
https://img-blog.csdnimg.cn/direct/105c540390764fd3a66fc2505cea8c4d.png
3、使用tomcat默认的设置来启动一个tomcat容器

docker run -it -p 8888:8080 --name tomcat tomcat https://img-blog.csdnimg.cn/direct/3b01800e5b454d88b00bb015df11c7fb.png
注意
当Tomcat版本过高时,根据IP地址和端口号访问大概会出现下面问题:出现404
是由于webapps文件夹下内容为空,内容都在webapps.dist 目录下,办理办法如下:
1.进入tomcat容器
docker exec -it 容器id /bin/bash
2.ls 查看文件夹内容,可以发现下面有webapps文件夹和webapps.dist文件夹,将webapps.dist下的内容全部异动到webapps中。
mv webapps.dist/* webapps
https://img-blog.csdnimg.cn/direct/3631872a0688439597f0215de0f007c2.png
4、拷贝容器内tomcat设置文件和日志到本地准备映射

在主机中创建文件夹
mkdir -p /opt/app/tomcat
docker cp tomcat:/usr/local/tomcat/conf /opt/app/tomcat/conf
docker cp tomcat:/usr/local/tomcat/logs /opt/app/tomcat/logs
5、克制tomcat,并删除容器

docker stop tomcat
docker rm tomcat
6、创建卷并运行tomcat容器

docker run -it -p 8888:8080 --name tomcat \
-v /opt/app/tomcat/webapps:/usr/local/tomcat/webapps \
-v /opt/app/tomcat/conf:/usr/local/tomcat/conf \
-v /opt/app/tomcat/logs:/usr/local/tomcat/logs --restart=always tomcat
7、生成新的镜像文件

docker commit -a='作者' -m='镜像描述' 容器ID 新的镜像名/名称:版本如下:
docker commit -a="zhangyanfen" -m="有doc的tomcat" f07f19e6eb63zf/mytomcat:1.0
https://img-blog.csdnimg.cn/direct/17b70f576c3343119373b5efbe6827df.png
根据新创建的镜像,启动新的容器
docker run -it -p 7777:8080 --name tomcat zf/mytomcat:1.0 https://img-blog.csdnimg.cn/direct/210363bfe48d49f8b39e6acb6cb57b50.png











免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Docker在linux上的安装与使用(亲测)