解决点击Docker出现windows 正在查找bash.exe。如果想亲自查找文件,请点击“浏览”的问题
cmd中cd要到的文件名中有空格,可以加双引号
运行:
docker run -p 8089:8089 -d --name audioclone audioclone:v1.0
后面是镜像的名字
查看容器:
docker ps -l
或
docker ps -a
docker ps -a --no-trunc
删除容器:
docker rm -v audioclone
进入容器交互:
docker exec -it 容器id bash
退出交互:
exit
查看容器修改:
docker diff 容器名
正在运行的容器导出为rar
docker export 容器id > xxx.tar
根据dockerfile生成镜像:
docker build -t audioclone:v1.0 .
将自己的镜像上传到dockerhub
// 先登录
docker login
docker tag audioclone:v1.0 1298495034/audioclone1.0
docker push 1298495034/audioclone1.0
修改docker容器以后,上传至dockerhub
将宿主机文件拷贝到容器,不论容器是否启动,都会生效
server.py:宿主机的文件,当前目录找
audioclone1.0:/app/
audioclone1.0:容器的名字
/app/:存放在容器的哪个位置
docker cp server.py audioclone1.0:/app/
32555789dd00:容器id
1298495034/audioclone1.0:1.1: 镜像的名称:镜像的tag,可以就原来那个镜像,多打一个标签
拷贝以后提交修改
docker commit -m "描述内容" -a "author name" 32555789dd00 1298495034/audioclone1.0:1.1
push到dockerhub
因为之前是从dockerhub上下载的,所以应该有啥链接吧,所以这么写??而且小改动上传还是挺快的
docker push audioclone1.0:latest(如果之前没打标签就是latest)
dockerhub pull
docker pull 1298495034/audioclone1.0
docker容器和宿主机文件夹共享
-p: 端口映射
-d:后台运行
-v: 为实现文件共享 前面是宿主机文件夹
/share: 容器里面的文件夹
docker run -p 8089:8089 -d --name audioclone1.2 -v /root/home/userfiles/audios:/share 1298495034/audioclone1.0
查看已挂载目录
docker inspect container_name | grep Mounts -A 20
docker查看日志
[Docker学习]四,其他常用命令,后台启动容器,查看日志,查看进程等
问题
要学好docker啊
首先,我是通过dockerfile创建的镜像,这里面会利用requirements.txt来下载依赖,一旦缺少某些依赖,修改这个文件,就需要重新从头到尾重新下载requirements.txt的依赖(也许可以把多加的pip install单独写在dockerfile中,如果不多的话),这很慢,所以我在想,是否能够直接通过这个镜像创建容器,然后修改容器里的内容重新生成镜像,但是问题是我因为依赖不足,docker里面的程序是跑不起来的,这就导致了我无法启动它,启动了过一会就会关闭,我试过只有启动了才能到容器里面交互,进行依赖的下载
这里就有一种解决方案:
1、这种方案,可以一直运行,我还不是很懂,也许还有其他方案
docker run -p 8089:8089 audioclone1.0 audioclone:v1.0 /bin/bash -c 'while true;do sleep 1;done'
然后启动以后进入,下载相应的依赖,再将修改好的docker容器保存为新的镜像,但是问题就是,下次创建容器,会默认以
/bin/bash -c ‘while true;do sleep 1;done’
这种command方式运行,就不会按照dockerfile里面的配置运行,至于如何修改,我现在还没有解决方案
总结,就是这种方式创建的镜像,根据它run的容器都会有默认command运行,如果想改只能手动添加,比如
docker run -p 8089:8089 audioclone1.1 audioclone:v1.0 python server.py
docker查看日志(就是查看控制台输出吧)
这个是可以切换成前台
docker attach 容器id
docker logs -f -t id
docker容器安装vim
requirement
自动生成requirements.txt
感觉这个虽然全部下载了,但是靠谱点
pip freeze > requirements.txt
pip install pipreqs
pipreqs .
flask docker
docker compose
docker-compose.yml的详细解释与说明
docker-compose.yml 配置文件编写详解
端口映射问题
如果没改mysql内部配置,里面的端口就是默认3306的,所以开放到外面的端口可自定义,但是3306不能改
- 3307:3306
无法初始化sql表
grand语句写错了,我靠!!
mysql中grant all privileges on赋给用户远程权限
grant all PRIVILEGES on book_portal.* to 'root'@'%' identified by '123456';
dockerfile
user
默认是以root身份执行的
警告:以“root”用户身份运行pip
Docker 容器中解决用户访问权限的问题
docker - 如何使用dockerfile添加用户?
USER 指定当前用户
[docker-compose] docker生成文件是root权限,修改docker容器的用户
暂时只能保证 切换用户成功,但是切换用户以后又有了权限问题
RUN useradd -ms /bin/bash username
USER username
ENV PATH="/home/username/.local/bin:${PATH}"