186 lines
5.6 KiB
Markdown
186 lines
5.6 KiB
Markdown
# 经验汇集
|
||
|
||
## 常用指令
|
||
|
||
### 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版本的任务管理器
|
||
|
||
chmod u+x ./*.sh
|
||
|
||
chmod是权限管理命令change the permissions mode of a file的缩写。。
|
||
u代表所有者,x代表执行权限。 + 表示增加权限。
|
||
chmod u+x file.sh 就表示对当前目录下的file.sh文件的所有者增加可执行权限。
|
||
a+x 是给所有人加上可执行权限,包括所有者,所属组,和其他人
|
||
o+x 只是给其他人加上可执行权限
|
||
```
|
||
|
||
###
|
||
|
||
### 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*](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解决*](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会失败) |