[Dokcer] Dokcer常用命令解析,通过dockerfile运行spring boot项目

本文详细介绍了Docker的基础操作,包括查询镜像、拉取镜像、创建和运行容器、容器管理(如查看、删除、挂载)、网络配置、Dockerfile使用、IDEA插件配置以及如何设置固定IP和开放端口。通过实例展示了如何在SpringBoot项目中使用Docker和解决网络问题。

一、常用docker命令

1.查询镜像

docker search

这里以mysql为例↓

2.获取镜像

选好要用1中哪个name的镜像后,就可以拉取了

docker pull 镜像名

3.查看本地镜像

docker image ls

4.创建、运行容器

docker run 镜像名

这会创建一个错误的容器,会在你的进程中(docker ps -a查看),因为有些配置没配置,现在把这个错误的删掉

正确的创建运行mysql镜像(以mysql为例)的方法是

  1. docker run -it --name mysqlx -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql

 

docker run 命令是 Docker 的核心命令之一,用于在 Docker 容器中运行一个新的应用程序。-it--name-p-e 和 -d 是该命令的参数,它们各自的作用如下:

  • -it: 这是两个参数的组合,-i 和 -t-i 表示“交互模式”,让容器的标准输入保持打开。-t 分配一个伪终端或终端,这通常用于使容器中运行的应用程序认为它们与一个真实的终端交互,这样可以使得例如 Bash 这样的 shell 保持前台运行。

  • --name mysqlx: 这个参数给容器指定一个名称,这里指定的名称是 mysqlx。这意味着您可以使用这个名称来引用容器,而不是使用容器的 ID。

  • -p 3306:3306: 这个参数将容器内部的端口映射到宿主机的端口。在这里,宿主机的 3306 端口被映射到容器的 3306 端口。这样做的目的是让您能够从宿主机访问容器中运行的 MySQL 服务。

  • -e MYSQL_ROOT_PASSWORD=123-e 参数用于设置环境变量。在这个例子中,它设置了 MYSQL_ROOT_PASSWORD 环境变量的值为 123。这是 MySQL 容器启动时必需的,因为它设置了 root 用户的密码。

  • -d: 这个参数意味着“分离模式”,它会让 Docker 容器在后台运行。这样您就可以继续在同一终端中执行其他命令。

  • mysql: 这是要运行的 Docker 镜像的名称。在这个例子中,它会从 Docker Hub 下载 MySQL 的官方镜像(如果本地没有的话),并运行它。

5.查看进程 

docker ps 活着的进程

docker ps -a 查询所有进程

6.查询日志

docker logs 容器名称

7.删除容器

docker rm 容器名称/容器ID

8.停止/运行/重启 正在运行的容器

docker stop/start/restart 容器名

9.进入容器

docker exec

以上面创建的容器(mysqlx)为例:

docker exec -it mysqlx bash

mysql -uroot -p***       (*user是root,password是***)

>docker exec -it mysqlx bash  的解释如下

  • -it: 这是两个参数的组合,-i 和 -t-i 表示“交互模式”,让容器的标准输入保持打开。-t 分配一个伪终端或终端,这通常用于使容器中运行的命令或程序认为它们与一个真实的终端交互,这样可以使得例如 Bash 这样的 shell 保持前台运行。

  • mysqlx: 这是容器的名称。在前面的 docker run 命令中,我们使用 --name mysqlx 为容器指定了名称。现在我们使用这个名称来引用该容器。

  • bash: 这是要在容器内执行的命令。在这个例子中,我们想要启动 bash shell,以便在容器内部进行交互操作。

创建spring boot需要的数据库(也可以直接用宿主机的idea连接容器再创建) 

这里如果报错就要开启下linux的3306端口

  1. firewall-cmd --add-port=3306/tcp --permanent
  2. firewall-cmd --reload

二、容器挂载 

我们此时的mysql服务是依靠mysqlx容器运行的,这就有一个很大的问题:如果容器被删除了,那数据也就没了,丢失数据对程序员来说是非常恐怖的事情,因此我们需要进行挂载

首先退出mysql服务,再退出容器

\q

exit

1.创建环境

然后创建如下文件夹路径

  1. [root@localhost software]# mkdir mysql
  2. [root@localhost software]# cd mysql
  3. [root@localhost mysql]# mkdir 3306
  4. [root@localhost mysql]# cd 3306/
  5. [root@localhost 3306]# mkdir data
  6. [root@localhost 3306]# mkdir conf
  7. [root@localhost 3306]# mkdir mysql-files

然后将数据库配置文件上传到conf文件夹(my.cnf)

2.映射

然后就是重中之重,映射

这里重新创建运行一个新的mysql容器,记得把之前的删了

  1. docker run -it \
  2. --name mysql \
  3. -p 3306:3306 \
  4. --privileged \
  5. -e MYSQL_ROOT_PASSWORD=123 \
  6. --network wn_docker_net \
  7. --ip 172.18.12.2 \
  8. -v /etc/localtime:/etc/localtime \
  9. -v /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
  10. -v /usr/local/software/mysql/3306/data:/var/lib/mysql \
  11. -v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
  12. -d mysql

每一行结尾的 \表示换行

3.查看容器详情

docker inspect 容器名称

这样可读性有点差,可以考虑重定向文件

①追加 >>

  1. docker inpspect mysql >> mysql.txt

之后会在目标路径生成一个txt,你可以把它下载到windows再用记事本等工具打开查看

pwd查看当前位置

② 覆盖 >

  1. docker inpspect mysql > nmysql.txt

管道+过滤: | grep

  1. docker inspect mysql |grep IPA
  2. "SecondaryIPAddresses": null,
  3. "IPAddress": "172.17.0.2",
  4. "IPAMConfig": null,
  5. "IPAddress": "172.17.0.2",

三、常见命令总结

四、docker配置

1.设置docker的静态ip

docker容器的ip地址在每次启动后启动顺序设置ip地址,为解决ip地址变动的问题,我们有必要设置docker内部ip地址固定。

2.创建自定义网络(network)

docker network create —driver bridge —subnet=自定义网络ip/16 —gateway=网关值 自定义网络名称

①默认docker网络

  1. [root@localhost ~]# docker network ls

②自定义网络后

docker network create —driver bridge —subnet=172.18.12.0/16 —gateway=172.18.1.1 wn_docker_net

五、Dockerfile

1.编辑docker.service

vim /lib/systemd/system/docker.service

打开后不要乱动任何东西!改了哪个地方又找不到的话,这个容器就废了

修改ExecStart的内容:
ExecStart=/usr/bin/dockerd -H fd:// —containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

2.重新加载docker

重新加载docker的daemon

  1. systemctl daemon-reload

重新启动docker

  1. systemctl restart docker.service

上面两步建议不要跳过第一步吧,虽然没试过,但要出错就比较麻烦

3.验证配置

netstat -nplt|grep 2375

4.开放2375端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent

firewall-cmd --reload

5.下载java镜像

项目中要依赖java,需要下载java的镜像。

下载java版本 :anapsix/alpine-java

六、IDEA配置docker插件

别急着运行,还有配置

七、运行docker服务并访问

游览器访问查看效果:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值