Docker常用命令及遇到的问题(持续更新)

1、docker部署java项目

官网地址:https://hub.docker.com
阿里云地址: registry.cn-hangzhou.aliyuncs.com
1.1配置打包文件Dockerfile

#设置基础镜像:openjdk:8-jre + envsubst
FROM xxxxxxxxxxx/common/openjdk8jre-envsubst:latest
#维护人员信息
LABEL author=lxj
#进入工作目录(相当于cd)
WORKDIR /data/webroot/self-storage
#将项目的.tar.gz文件添加到容器中并解压到工作目录下(tar.gz类型文件会自动解压)
ADD target/self-storage-web-release.tar.gz ./
#容器启动时执行命令(1.利用envsubst命令根据模板文件替换变量生成配置文件 2.启动项目)
CMD ["/bin/bash", "-c", "envsubst < ./config/jboot-docker.properties.template > ./config/jboot-docker.properties && ./start.sh start"]

1.2执行Dockerfile
进入同级目录:E:\xxxxx\xxxxx\xxxxxx\xxxxxx-web>

--执行
docker build -t 【docker仓库地址】/【docker仓库文件夹】:latest .
--例如:docker build -t xxxxxxx/xxxx:latest .
--例如:docker build -t registry.cn-hangzhou.aliyuncs.com/12...../sr...:2.8 .

在这里插入图片描述
1.3刷新本地镜像,推送至仓库

docker push xxxxxxx/srck:1.0
--例如:docker push registry.cn-hangzhou.aliyuncs.com/12...../sr...:2.8 

或者
在这里插入图片描述
1.4拉取镜像

[root@VM-16-6-centos server]# docker pull 【docker仓库地址】/【docker仓库文件夹】:latest
--例如:docker pull xxxxxxx/xxxx:latest
--例如:docker pull registry.cn-hangzhou.aliyuncs.com/12...../sr...:2.8 

2、常用命令

1、docker容器日志查看
	例:实时查看docker容器名为user-uat的日志
	docker logs -f -t --tail -f user-uat
	例:实时查看docker容器名为user-uat的最后10行日志
	docker logs -f -t --tail 10 user-uat
	例:查看指定时间后的日志,只显示最后100行:
	docker logs -f -t --since="2018-02-08" --tail=100 user-uat
	例:查看最近30分钟的日志:
	docker logs --since 30m user-uat
	例:查看某时间之后的日志:
	docker logs -t --since="2018-02-08T13:23:37" user-uat
	例:查看某时间段日志:
	docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" user-uat
	例:将错误日志写入文件:
	docker logs -f -t --since="2018-02-18" user-uat | grep error >> logs_error.txt
2、查看网络列表
	docker network ls
	查看网络
	docker network inspect xxx
3、查看所有的容器	
	docker ps -a
4、docker stop 容器ID :(温柔地)停止容器

5、docker kill 容器ID :(立即、暴力、强制)停止容器
6、删除容器
	docker rm 容器id
7、删除镜像
	docker rmi 镜像id
8、进入服务
	docker exec -it mysql bash
9、查看Linux服务器docker容器的ip地址
	docker inspect -f '{{.Name}} => {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
10、若是通过docker-compose【docker-compose up -d】命令启动的容器,那么查询容器的IP地址
	docker inspect -f '{{.Name}} => {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)	

3、docker中mysql启动报错Could not open file

2022-03-08T08:50:15.625055Z 0 [ERROR] Could not open file '/var/lib/mysqld.log' for error logging: Permission denied
2022-03-08T08:50:15.625081Z 0 [ERROR] Aborting

修改mysql配置文件my.conf中的log-error ,由原来的/var/lib/mysqld.log改成/var/log/mysql/mysqld.log

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
port = 3306
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/mysqld.log
server-id = 1
symbolic-links=0
explicit_defaults_for_timestamp = 0
character_set_server = utf8mb4
collation_server = utf8mb4_bin
back_log = 1024
default_storage_engine = InnoDB
innodb_buffer_pool_size = 4096M
innodb_log_buffer_size = 128M
innodb_log_file_size = 512M
innodb_large_prefix=1
innodb_file_per_table=1
innodb_file_format = Barracuda
innodb_strict_mode = 0
max_allowed_packet = 2048M
myisam_max_sort_file_size = 4G
event_scheduler = 1
max_connections = 51200
max_connect_errors = 1000000
[mysqldump]
quick
quote-names

4、docker内通过127.0.0.1访问宿主机报错:Connection refused

1、对于mac和windows,可以使用host.docker.internal替换127.0.0.1,如mongodb://host.docker.internal:27017
2、对于Linux可以创建一个桥接网络:

  • 下面的localNet是网络名字,可自行修改;关于192.168.0.0这个子网,也可以自行定义.
  • 默认按照下面的命令,执行后将可以通过192.168.0.1访问宿主机.
docker network create -d bridge  --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet 使用192.168.0.1替换127.0.0.1,如redis://192.168.0.1:6379
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值