docker常用基本命令

把jar包和 dockerfile文件放到同一目录下

#构建Docker镜像  注意后面的 . 不能省略
docker build -t your-image-name .


#运行并创建一个容器
docker run -d -p 8080:8080 --name container_name your-image-name


# 停止容器 767fce4cb990 容器ID (容器名也可以)
docker stop 767fce4cb990
docker start 767fce4cb990
docker restart 767fce4cb990


#查看当前运行的容器
docker ps 

#查看所有容器
docker ps -a

#删除容器
docker rm container_name

#删除镜像
docker rmi image_name

# 查看 my_container 容器日志 实时打印
docker logs -f my_container 


# Linux 上的 Docker 引擎用户也可以通过 docker run 的 --add-host 标志启用主机的默认名称 host.docker.internal。Java可以直接使用 host.docker.internal 主机名来访问宿主机的IP地址
# host.docker.internal 主机名。host-gateway 是Docker网络中宿主机的默认网关地址。

docker run -d -p 8080:8080 --add-host host.docker.internal:host-gateway --name container_name image_name

直接访问docker宿主机的IP,host.docker.internal 主机名。host-gateway 是docker网络中宿主机的默认网关地址。

# 进入到容器内部 
docker exec -it container_name /bin/bash

#退出容器
exit


# 获取容器详细信息
docker inspect container_name

# 自启动
docker run -d -p 8080:8080 --name container_name --restart=always your-image-name 


#使用docker拉取nginx并命名为 nginx_container 容器
docker run --restart=unless-stopped -p 9709:9709  --name nginx_container \
-v /home/nginx_container/web/html:/usr/share/nginx/html \
-v /home/nginx_container/web/log:/var/log/nginx \
-v /home/nginx_container/web/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx_container/uploadfile:/home/nginx_container/uploadfile \
-d nginx

如果在创建容器的时候没有指定--restart参数,可以使用update更新容器

docker update --restart=unless-stopped container-name

--restart=always # 表示容器退出时,docker会总是自动重启这个容器

--restart=on-failure:3 # 表示容器的退出状态码非0(非正常退出),自动重启容器,3是自动重启的次数。超过3此则不重启

--restart=no # 默认值,容器退出时,docker不自动重启容器

--restart=unless-stopped # 表示容器退出时总是重启,但是不考虑docker守护进程运行时就已经停止的容器

docker运行mysql

# 拉取镜像:
docker pull mysql

# 运行镜像 并进行日志和数据库文件映射
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /opt/docker/mysql/data:/var/lib/mysql -v /opt/docker/mysql/log:/var/log --restart always mysql

1.-itd :这是 docker run 命令的参数组合,-i 和**-t** 是命令中的两个参数,用于在容器与终端之间建立交互式连接;-d:将容器设置为 "detached" 模式,容器在后台运行。

2、--name mysql-test :通过 --name 参数,你为容器指定了一个名称 "mysql-test"。这个名称是你自己定义的容器标识符,用于在后续操作中识别和管理容器。

3、-p 3306:3306 :通过 -p 参数,你将主机的 3306 端口映射到容器的 3306 端口。这样,你可以通过主机的 3306 端口访问容器内的 MySQL 服务。例如,通过主机的 IP 地址和 3306 端口,你可以使用 MySQL 客户端连接到容器中的 MySQL 数据库

4、-e MYSQL_ROOT_PASSWORD=123456 :通过 -e 参数,你设置了 MySQL 数据库的 root 用户的密码为 "123456"。这是安全设置,确保数据库具有密码保护。

5、-v:这是要进行挂载的文件 前面的路径是宿主机的目录,后面的是docker容器里面的路径

6、 restart always 开机启动

7、mysql:这是要运行的 Docker 镜像的名称。

docker运行redis

# 拉取redis镜像:
docker pull redis

# 创建并运行redis容器
docker run -d --privileged=true --restart always -v /opt/docker/redis/conf/data:/data --name myredis -p 6379:6379 redis --appendonly yes

-d -> 以守护进程的方式启动容器

-p 6379:6379 -> 绑定宿主机端口

--name myredis -> 指定容器名称

--restart always -> 开机启动

--privileged=true -> 提升容器内权限

-v /root/docker/redis/data:/data -> 映射数据目录

--appendonly yes -> 开启数据持久化

docker运行nginx

# 拉取nginx并运行容器  /opt/static/dist 这个路径是我前端打包的静态资源
docker run --restart=unless-stopped -p 80:80  --name my_nginx \
-v /opt/static/dist:/opt/static/dist \
-v /opt/static/log:/var/log/nginx \
-v /opt/static/nginx/nginx.conf:/etc/nginx/nginx.conf \
-d nginx

docker网卡相关:

# 查看容器的ip地址 container_name  容器名称,通过模板 {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} 来提取容器的 IP 地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name


# 创建一个新的Docker网络  my_custom_network 网卡名称
docker network create my_custom_network

# 查看网卡列表
docker network list 

# 运行容器并将其加入到新网络
docker run --network my_custom_network -d --name my_container my_image


# 将创建的网卡附加到容器上
docker network connect my_custom_network container_id
相关推荐
IChen.1 小时前
解决centos 删除文件后但空间没有释放
linux·运维·centos
多恩Stone2 小时前
【vs code(cursor) ssh连不上服务器】但是 Terminal 可以连上,问题解决 ✅
运维·服务器·ssh
S hh2 小时前
【Linux 】文件描述符fd、重定向、缓冲区(超详解)
linux·运维·服务器
碳治郎AI2 小时前
Bolt.new:终极自动化编程工具
运维·自动化
朝九晚五ฺ3 小时前
【Linux探索学习】第三弹——Linux的基础指令(下)——开启新篇章的大门
linux·运维·学习
妍妍的宝贝3 小时前
k8s 中的金丝雀发布(灰度发布)
云原生·容器·kubernetes
iangyu4 小时前
docker常用命令
运维·docker·容器
小小不董5 小时前
图文深入理解Oracle DB Scheduler
linux·运维·服务器·数据库·oracle
南瓜小米粥、6 小时前
通过fdisk初始化Linux数据盘
linux·运维·服务器
飞酱不会电脑7 小时前
云计算第四阶段 CLOUD2周目 01-03
云原生·容器·kubernetes