tips
Docker容器内更新源apt-get的方法
https://blog.csdn.net/weixin_44552215/article/details/108780410
docker安装redis无法启动:
The container name “/ly-redis“ is already in use by container
https://blog.csdn.net/lmh1181243468/article/details/107980913
Docker部署SpringBoot项目
https://www.jianshu.com/p/397929dbc27d
docker: Error response from daemon: Conflict. The container name
“/myubuntu” is already in use
https://blog.csdn.net/liuyinfei_java/article/details/88634469
1. 开机启动
docker 开启自启动
systemctl start docker.service
在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
docker run --restart=always
# 如果已经启动了则可以使用如下命令:
docker update --restart=always <CONTAINER ID>
2. 更改 docker 镜像源
/etc/docker/daemon.json 是 docker 的配置文件,默认是没有的,需要我们手动创建
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
-
安装/升级Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce -
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://d5e6pk17.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3. 常用命令
拉取镜像 pull
docker pull ***
列出镜像 images
docker images
删除镜像 rm
docker rmi [image]
# 或者:
docker image rm [image]
https://www.cnblogs.com/quanxiaoha/p/10542278.html
- 容器运行的进程
docker ps
- 所有容器
docker ps -a
docker container stop redis-test # 停止容器
docker container rm redis-test # 删除容器
- 进入容器
docker exec -it 容器id /bin/bash
// 或者
docker exec -it [name容器名称] bash
- 没有vim 则需要安装,步骤如下:
apt-get update
apt-get install vim
- 容器和宿主机之间 文件 cp
- 进入docker 容器拷贝文件到宿主机上
docker cp onlyoffice-community-server:/etc/nginx/nginx.conf /home/
其中onlyoffice-community-server
是容器名称,/etc/nginx/nginx.conf 为docker的路径 /home为宿主机的路径
- 如果宿主机拷贝文件到容器
docker cp /home/nginx.conf onlyoffice-community-server:/etc/nginx/
- 如果要退出bash有2种操作:
1)Ctrl + d 退出并停止容器;
2)Ctrl + p + q 退出并在后台运行容器;
1. 在docker 内修改 mysql 配置文件
- 拉取镜像
docker pull mysql:5.7.18
- 列出镜像
[root@zk01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7.18 e799c7f9ae9c 5 weeks ago 407MB
- 运行docker
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.18
- 列出正在运行的容器
[root@zk01 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e1066fe2db35 mysql:5.7.18 "docker-entrypoint..." 6 seconds ago Up 6 seconds 0.0.0.0:3306->3306/tcp mymysql
- 进入容器
docker exec -it e1066fe2db35 /bin/bash
- 查看配置文件
mysql 配置文件目录/etc/mysql/conf.d/
root@9419581e97a9:/etc/mysql/conf.d# ls
docker.cnf mysql.cnf
这里可能没有安装 vim ,
apt-get update
apt-get install vim
可能出现以下问题
从报错的信息看是因为签名参数过期了,所以,这里需要删除后再更新。
参考:https://www.jqhtml.com/71812.html
- 先查看执行命令:
apt-key list
- 删除mysql 的repository GPG key,删除命令如下:
sudo apt-key del 5072E1F5
我们再次查看:apt-key list
删除完了之后,检查还有没有那个mysql的key
没有了,执行命令
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 8C718D3B5072E1F5
- 停止并删除容器
docker stop e1066fe2db35
docker rm e1066fe2db35 - 重新启动容器,指定数据目录和配置文件
docker restart <容器 ID>
SpringBoot Docker 部署
- 编写 Dockerfile 文件
- 执行命令
docker build -t springbooteamdocker .
3. 运行docker
docker run -p 8081:8081 springbooteamdocker
【注意】
- 可能运行容器时会出现中文乱码,
解决:(在Dockerfile中 java 路径中加上)
-Dfile.encoding=UTF-8
-Dsun.jnu.encoding=UTF8
即
RUN bash -c 'touch /EAMapp.jar'
ENTRYPOINT ["java","-jar","-Dfile.encoding=UTF-8","-Dsun.jnu.encoding=UTF8","/EAMapp.jar"]
- Docker导入容器快照,执行报错:docker: Error response from daemon: No command specified.
- docker run 与docker start的区别
https://www.cnblogs.com/mysummer/p/12328073.html
https://zhuanlan.zhihu.com/p/64862159
https://www.cnblogs.com/mysummer/p/12328073.html