5.2 KiB
经验汇集
常用指令
Docker相关
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker
docker network ls
docker network rm 【网络名称】
docker inspect 【容器id/名称】
docker logs -f -t --since="2017-05-31" --tail=10 【容器名称】 #动态查看容器日志
docker logs -f -t --tail=10 【容器名称】 #动态查看容器日志
**基础操作: **
1 docker images 查看镜像信息列表 镜像是静态的
2 docker ps -a 查看运行中的所有容器
3 **docker pull [images]:[version]**从dockerhub拉取指定镜像
4 docker run -p 8000:80 -tdi --privileged [imageID] [command] 后台启动docker,并指定宿主机端口和docker映射端口。
**-i:**以交互模式运行容器,通常与 -t 同时使用;
**-d:**后台运行容器,并返回容器ID;
**-t:**为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--privileged 容器将拥有访问主机所有设备的权限
通常情况下 [command] 填下 /bin/bash 即可。
特殊情况下,如需要在centos镜像中使用systemctl . 则应添加**--privileged** 并设置[command ]为 init。
5 当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:
sudo docker exec -it [containerID] /bin/bash
交互模式中,使用 ctrl+p+q退出交互 保持运行,使用 exit命令退出并停止容器。
6 在容器非交互模式下,通过docker start/stop 命令来启动/停止已部署的容器服务。
7 docker rm [containerID] 删除容器
8 docker rmi [imageID] 删除镜像
9 docker cp [YourHostFilePath] [containerID]:[DockerPath] 将宿主机内的指定文件传输至容器内部的指定地址。
镜像制作:
1 docker commit [containerID] [ImageName]:[Version] 将修改后的容器重新打包成镜像
2 docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1 将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
3 **docker push [ImageID] [repertory_address]**提交镜像到云仓库
作者:爱睡觉的树 链接:https://www.jianshu.com/p/a84e8cf33b34 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Linux
history #查看历史执行命令
tail -n 20 【文件名】#查看文件的后20行
du -sh * #查看目录下的磁盘占用情况
du -sh * | sort -nr #如上,并排序
df -h 查看磁盘空间大小
top #linux版本的任务管理器
Vim
history #查看历史执行命令
tail -n 20 【文件名】#查看文件的后20行
坑记
Nginx
请求大小限制
在http 的 server 节点中添加client_max_body_size。参见https://blog.csdn.net/yedajiang44/article/details/99294216
Nginx开启gzip
参考:https://blog.csdn.net/bigtree_3721/article/details/79849503
未分类
域名解析
域名解析做完整。如果要给ycmusic.cn配证书,不要忘记相应添加域名解析。可以参考:
如何解析设置域名添加www和不添加www都能够访问
来自 <https://jingyan.baidu.com/article/6d704a130c6d0d28db51ca3c.html>
文本格式导致的脚本执行错误问题
注意在windows下编辑的文本格式是dos格式,需要改成unix格式才能作为sh脚本在linux下执行。否则,会出现诸如:
bin/bash^M: bad interpreter: No such file or directory
参考https://blog.csdn.net/helloxiaozhe/article/details/90347064解决
另外,可以采用vs的编码保存,其中指定行尾设置
Let's Encrypt可以添加--dry-run参数来验证运行
例如:
docker-compose run --rm --entrypoint "\
certbot certonly --dry-run --webroot -w /var/www/certbot \
$staging_arg \
$email_arg \
$domain_args \
--rsa-key-size $rsa_key_size \
--agree-tos \
--force-renewal" certbot
echo
docker-compose中的特殊字符
如有特殊字符,用""将包含特殊字符的字符串包裹起来。如果有,哪怕在引号内,也需要输入两个$以作转义。
例如:
db: image: "mysql:5.7.27" restart: always environment:
- MYSQL_ROOT_PASSWORD="mima$$woshimima"
不过,上面的又有引号又有$的设置是否正确并不确定,因为初次这么设置发现无法登录(通过docker exec -it 进入执行mysql -uroot -p)。
docker-compose中mysql的密码设置
第一次运行后,只要/var/lib/mysql中的数据没有改变(这通常是因为已经mount到主机的特定目录),那么后续的密码更改是无效的,哪怕把container删了再重建也一样。所以这个时候,要不然用原来密码登录,要不然就是清空data目录。(data目录需要有,不然docker-compose up会失败)