uname -r 查看linux内核版本。要求linux内核版本是3.1.0以上。
netstat -tuln | grep 53 查看端口
docker安装:
以下是下载最新的docker的方式:
对于 CentOS 系统:
- 安装所需的软件包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置 Docker 的存储库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3. 安装 Docker:
sudo yum install docker-ce docker-ce-cli containerd.io
4.启动 Docker 服务:
sudo systemctl start docker
5.验证 Docker 是否正确安装,运行以下命令检查 Docker 版本:
docker version
随机启动
sudo chkconfig docker on
或者
#安装 yum 源 docker 的
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#安装 docker
yum -y install docker-ce-18.06.1.ce-3.el7
#启动
docker systemctl enable docker && systemctl start docker
#效验安装
docker -version
注意:
镜像:
docker的一些镜像文件一般都放在宿主机的/var/lib/docker/这个文件下面。
cd /var/lib/docker/
容器
容器放在containers中
进入容器的文件夹可以看看有很多文件
du -sh *
查看各个文件的大小
可以看到其实每个文件都不大,就几十KB大小。
但是当我们看到docker images 的时候是很大很大的
这是为什么呢?
Docker 使用 (仓库 容器 镜像)
镜像相关
搜索镜像: docker search java ( 和在https://hub.docker.com/网站中搜索的结果相同,这个地址就是docker的仓库)
下载镜像:docker pull java:8
docker pull nginx:1.14
列出本地镜像:docker images
删除镜像:docker rmi java:8
容器相关
新建并启动容器
docker run -d -p 91:80 nginx:1.14 (-d 后台运行 -p ) 将nginx:1.14这个镜像放到我们的容器里面 并且运行起来
docker run -d -p 91:80 nginx不写tag的话,就是latest
还有一个很重要的点:文件挂载:
docker run -d -p 8088:8081 -v /v5:/v5_log --name v5 02_service_crud-0.0.1:xss
-v 表示挂载
/log是宿主机的路径
/docker_log是docker容器中的路径
docker中的数据文件变化了,会同步到宿主机中(这里很重要,比如mysql的data数据等等)
docker中的目录如下:
宿主机上的目录如下:可以按到同步了,无论是哪一方变化了,另外一方都会跟着变化。
列出容器
docker ps
启动/停止容器
docker start/stop <容器id>
查看容器信息
docker inspect <容器id>
进入容器
docker container exec -it <容器id> /bin/bash
退出:exit;
查看日志:
docker contailner log <容器id>
详细说说91->80的含义:每个container起始都是一个小虚拟机,nginx镜像被放在这个小虚拟机上运行,nginx的对应端口就是80,小虚拟机是运行在我们真正的虚拟机上的,我们通过l浏览器访真正虚拟机的91端口其实就能访问docker容器上的80端口进而访问nginx。
使用docker启动springboot项目的jar包
1. vim Dockerfile
注意:这个文件必须这样命名:Dockerfile
2.在Dockerfile文件中:添加以下内容:
我参照上面的步骤自己做了一个练习,步骤如下:
1.用Dockerfile文件构建Docker镜像(实际文件中是From java:8u111-jdk )
From java:6b38
Add 02_service_crud-0.0.1-SNAPSHOT.jar /app.jar
EXPOSE 8888
ENTRYPOINT ["java","-jar","/app.jar"]
2.用docker build命令构建镜像
docker build -t 02_service_crud-0.0.1:xss .
(注意:不要忘记后面的.)(自己的镜像名称还不能含有大写字母)
之后docker ps 就看到了本地仓库有了我们自己的镜像,这是一个基于java的Springboot应用
3.启动镜像(注意:基于文章末尾出现的错误,我这里用了--net=host)
docker run --net=host --name=crud-service 02_service_crud-0.0.1:xss -d
但是我这里报了一个这样的错:
ChatGPT一下:
于是修改了Dockerfile文件
改成了From java:8u111-jdk
之后将自己刚刚构建的镜像删除,镜像删除之前一定要把对应的容器删除
ok,之后重新构建
又有问题了
df -h 了一下,磁盘空间被占满了
du -h -x --max-depth=1 不断地看那个文件被沾满。清理磁盘。之后再次构建。
或者du -sh *
构建成功了。
4.启动,浏览器访问
=========================================================================
学习docker遇到的问题:
1 .环境:电脑windows11 ,虚拟机centos7 , docker 容器 ,nginx镜像
开始我是这样启动:docker run -d -p 91:80
nginx服务是up的
结果在windows上的浏览器中访问不到docker中的nginx 虚拟机上curl也访问不到,这是为啥啊?
宿主机上访问docker还报出来这样会一个错:
解决方案:
docker run --net=host -d --name=hello_nginx nginx:1.18
使用--net=host即可,但是这样有个问题,
WARNING: Published ports are discarded when using host network mode
如果我再一次运行docker run --net=host -d --name=hello_nginx1 -p 90:80 nginx:1.18 的话,其实这个服务是起不来的,就像下图中的Exited这个服务(当然也有解决方法,比如通过配置文件修改端口,未完待续。。。)
2 .清理:docker system prune -a文章来源:https://www.toymoban.com/news/detail-767329.html
文章来源地址https://www.toymoban.com/news/detail-767329.html
到了这里,关于CentOS 7安装docker 及docker 不能被外网访问的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!