docker常用命令
0. Docker常用命令:
sudo ... 以超级管理员权限运行
su root 切换到root用户 Password:vagrant
ls 查看当前目录下的文件及目录
ls / 参数'/'是根目录的意思,表示显示根目录下的文件及目录
whoami 显示当前登录用户
sudo systemctl start docker 启动docker
docker images 查看docker镜像
sudo systemctl enable docker 设置docker虚拟机开机自动启动
docker ps 命令用来展示所有运行中的容器
docker ps -a 命令是用来展示所有所有的容器,包括未运行的容器
docker rm mysql 删除容器
docker start mysql 启动mysql
docker restart mysql 重启mysql
docker update mysql --restart=always 开机自动启动mysql服务
docker update redis --restart=always 开机自动启动redis服务
systemctl enable redis redis开机自启
docker exec -it mysql /bin/bash 进入docker的mysql容器内部的命令
docker exec -it redis redis-cli 进入redis客户端命令
通过容器名查看容器ip地址:
eg: 查看mysql容器启动的mysql服务的ip地址命令:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql
当然也可以通过容器id启动:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a1b2c3d4e5f6docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysqldocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysqldocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysql
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a1b2c3d4e5f6
1. Docker的安装和配置(centos下)
1) 卸载旧版Docker:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2) 配置yum源:
① 安装yum工具:yum install -y yum-utils
② 配置Docker的yum源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3)安装Docker:
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4) 启动和校验:
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
5) 配置镜像加速器:
① 获取镜像加速器::登录自己的阿里云账号,找到容器镜像服务里的镜像加速器,就可以看到加速器地址了。
② 配置加速器:根据页面里的操作文档配置docker镜像加速器。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://olwe2ik2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2. docker 安装mysql:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
解读:
docker run: 这是Docker用于运行容器的基本命令。
-d: 表示以守护进程模式运行容器,即在后台运行。
--name mysql: 指定容器的名称,这里命名为mysql。
-p 3306:3306: 将宿主机的3306端口映射到容器内的3306端口,这样就可以通过宿主机的3306端口访问MySQL服务。
-e TZ=Asia/Shanghai: 设置环境变量,将容器内的时区设置为亚洲/上海时区。
-e MYSQL_ROOT_PASSWORD=123: 设置环境变量,初始化MySQL的root用户密码为123。
mysql: 要运行的Docker镜像的名称,这里是MySQL的官方镜像。
3. docker 列出容器相关信息:docker ps
4. 进入容器内部:eg:docker exec -it nginx bash
5.docker hub官网:hub.docker.com
6. ① docker创建mysql容器并挂载数据库
参考博客:https://blog.csdn.net/qq_69183322/article/details/138058020
基于宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载(查阅官方镜像文档)
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v ./mysql/data:/var/lib/mysql \
-v ./mysql/conf:/etc/mysql/conf.d \
-v ./mysql/init:/docker-entrypoint-initdb.d \
mysql
② docker 创建nginx容器并挂载前端html文件和nginx配置文件:
docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network heima \
nginx
其中:① 两个-p是因为有两个前端项目,nginx配置文件里配置了两个前端端口,html文件里是两个前端项目,② -v /root/nginx/nginx.conf 挂载的是配置文件不是目录 ③ --network heima 是连接到heima网桥。
7. Dockerfile 构建镜像命令:
eg:
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
8. docker 容器连接自己创建的网桥:
eg: mysql容器连接 testwangqiao 网桥:
docker network connect testwangqiao mysql
查看容器详情:docker inspect mysql
9. DockerCompose:
使用dockercompose部署容器前先删除mysql、nginx、hm容器:
docker rm -f mysql nginx hm
按照docker-compose.yml文件构建并部署容器和网桥:
docker compose up -d
停止和删除容器:
docker compose down
查看网桥
docker network ls
10.DockerComplse 根据docker-compose.yml文件实现对docker容器集群的快速编排:
docker-compose.yml文件示例:
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: hmall
>11. docker 配置了阿里镜像下载镜像时还是报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canceled
分析:1. 没有成功配置国内镜像源
2. 需要配置DNS
解决:1.配置镜像源:
修改docker的daemon.json文件为以下内容:
sudo vim /etc/docker/daemon.json
{
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"default-shm-size": "1G",
"debug": true,
"experimental": false,
"registry-mirrors":[
"https://x9r52uz5.mirror.aliyuncs.com",
"https://dockerhub.icu",
"https://docker.chenby.cn",
"https://docker.1panel.live",
"https://docker.awsl9527.cn",
"https://docker.anyhub.us.kg",
"https://dhub.kubesre.xyz"
]
}
2.配置DNS:
sudo vim /etc/resolv.conf
上面两个东西配置好后重启即可:
systemctl daemon-reload
systemctl restart docker
>12 docker 安装nacos
转自:https://blog.csdn.net/ilvjiale/article/details/129417768
安装之前你需要准备一个mysql,当前安装方式是将数据持久化到数据库中的,这里的部署是单机模式
1、Docker 拉取镜像 (这是拉取最新的nacos版本,如果需要拉取别的版本可以加:版本号(如:docker pull nacos/nacos-server:v2.2.0))
docker pull nacos/nacos-server
2、挂载目录 (这一步是添加映射文件夹,将宿主机的文件映射到nacos容器中)
mkdir -p /mydata/nacos/logs/ #新建logs目录
mkdir -p /mydata/nacos/conf/ #新建conf目录
3.启动nacos并复制文件到宿主机,关闭容器
启动容器
docker run -p 8848:8848 --name nacos -d nacos/nacos-server
复制文件
docker cp nacos:/home/nacos/logs/ /mydata/nacos/
docker cp nacos:/home/nacos/conf/ /mydata/nacos/
关闭容器
docker rm -f nacos
这一步启动nacos是为了将nacos里面的文件拷贝出到挂载目录中,这样我们就可以直接修改挂载目录中文件来映射到容器里面去了。
4、mysql中创建nacos所需的表
mysql中新建一个库,名字可自定义,这里就用nacos-config
从github中找到创建表的文件,在nacos-config库中执行,创建所需的表
5、再次启动nacos
docker run -d
--name nacos
-p 8848:8848 -p 9848:9848 -p 9849:9849
--privileged=true
-e JVM_XMS=256m
-e JVM_XMX=256m
-e MODE=standalone
-v /mydata/nacos/logs/:/home/nacos/logs
-v /mydata/nacos/conf/:/home/nacos/conf/
--restart=always
nacos/nacos-server
或者:
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server
语句讲解
docker run -d : 启动容器 -d是后台启动并返回容器id的意思
–name nacos :为容器指定一个名称
-p 8848:8848 -p 9848:9848 -p 9849:9849 : 指定端口映射,注意这里的p不能大写,大写是随机端口映射
–privileged=true : 扩大容器内的权限,将容器内的权限变为root权限,不加的话就是普通用户权限,可能会出现cannot open directory
-e JVM_XMS=256m : 为jvm启动时分配的内存
-e JVM_XMX=256m : 为jvm运行过程中分配的最大内存
-e MODE=standalone : 使用 standalone模式(单机模式),MODE值有cluster(集群)模式/standalone模式两种,MODE必须大写
-v /mydata/nacos/logs/:/home/nacos/logs : 将容器的/home/nacos/logs目录挂载到 /mydata/nacos/logs
-v /mydata/nacos/conf/:/home/nacos/conf/: 将容器的/home/nacos/conf目录挂载到 /mydata/nacos/conf
–restart=always :重启docker时,自动启动相关容器
注意事项
1.需要在防火墙开放相关端口,如果你是云服务器,开放安全组,下面提供相关语句
## 开放端口8848 9848 9849
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=9848/tcp --permanent
firewall-cmd --zone=public --add-port=9849/tcp --permanent
## 重启防火墙
firewall-cmd --reload
## 查看所有开启的端口
firewall-cmd --zone=public --list-ports
这里有点小问题,重启完防火墙之后,需要重启docker
## 重启docker
systemctl restart docker
2.这里最容易犯错的就是挂载目录对应不上,可以看下自己语句中的-v 后面的目录是否映射正确,博主第一次安装的时候logs里面还有一个logs文件夹,conf里面还有个conf文件夹,导致出错
6、修改配置文件
主要修改的是application.properties文件:
## 在宿主机中修改application.properties文件
vim /mydata/nacos/conf/application.properties
文件修改的地方(修改为你对应的mysql)
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
---------------------------------------------------------------------------
eg:
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=1
db.url.0=jdbc:mysql://192.1.3.166:3306/ry_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
db.user.0=root
db.password.0=jw_PIS1234
---------------------------------------------------------------------------
因为我们在第三步已经复制了logs和conf到了我们的宿主机里面,那么我们可以直接修改application.properties文件映射到容器里,可以通过下面的语句来查看
## 进入到nacos容器里
docker exec -it nacos /bin/bash
## 查看application.properties文件
cat /home/nacos/conf/application.properties
## 退出容器
exit
如果文件没有修改成功的话,说明挂载目录映射的不对,仔细查看一下,可以通过下面的方法来查看是否正确
docker inspect --format="{{json .Mounts}}" nacos
7.访问页面:http://ip:8848/nacos/index.html
>13. docker配置镜像加速器:
① ubuntu:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
② centos:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
>14 导入压缩好的镜像命令:docker load -i redis.tar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示