参考1 参考2
常用命令 命令大全
容器 列出所有容器
查看所有容器,包括关闭的 1 2 docker container ls --all docker ps -a
删除具体的容器,根据container id 1 docker container rm c8faeffaaa62
查看容器IP 1 docker inspect 容器ID | grep IPAddress
启动某个容器 1 docker restart 1b4671904bfa
查看容器内存使用情况(支持多个同时查) 1 docker stats containerName1 containerName2
查看日志 1 docker logs -f 122482b4b37f
进入容器 1 2 sudo docker exec -it containerName bash sudo docker attach 44fc0f0582d9
docker限制容器的内存使用 https://blog.csdn.net/qq_37611270/article/details/97243704
状态信息 列出docker name 1 sudo docker inspect -f='{{.Name}}' $(sudo docker ps -a -q)
列出docker ip 1 sudo docker inspect -f='{{.NetworkSettings.IPAddress}}' $(sudo docker ps -a -q)
列出所有容器对应的名称,端口,及ip 1 docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)
查看状态
数据卷 1 2 docker inspect 容器id # 可以查看容器信息 “HostConfig下的Binds 可以看到数据卷绑定 Mounts下Souce和Destination也可以看到数据卷绑定信息”
清理数据 自动清理空间
Mysql 参考 目录映射时,容器里面的目录会在容器启动的时候自动创建。
1 2 3 4 5 6 docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=raubbhWy \ -d mysql:5.7
进入docker本地连接mysql客户端
1 2 sudo docker exec -it mysql bash mysql -uroot -p123456
Fastdfs season/fastdfs 参考1 参考2 参考3
redis https://www.runoob.com/docker/docker-install-redis.html
rabbitmq 1 2 docker pull rabbitmq:management docker run -d --hostname my-rabbit --name some-rabbit -p 15555:15672 rabbitmq:management
默认账号密码:guest和guest
docker跑SpringCloud微服务 dockerfile-maven Dockerfile 在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。Dockerfile基础知识 Dockerfile命令大全
命令 EXPOSE https://blog.csdn.net/qq_17639365/article/details/86655177
VOLUME https://www.cnblogs.com/ExMan/p/12017896.html
通过docker run命令的-v标识创建的挂载点只能对创建的容器有效。
通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点。
还有一个区别是,通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。1 2 3 4 #test FROM ubuntu MAINTAINER hello1 VOLUME ["/data1","/data2"]
上面的dockfile文件通过VOLUME指令指定了两个挂载点 /data1 和 /data2.
我们通过docker inspect 查看通过该dockerfile创建的镜像生成的容器,可以看到如下信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 "Mounts": [ { "Name": "d411f6b8f17f4418629d4e5a1ab69679dee369b39e13bb68bed77aa4a0d12d21", "Source": "/var/lib/docker/volumes/d411f6b8f17f4418629d4e5a1ab69679dee369b39e13bb68bed77aa4a0d12d21/_data", "Destination": "/data1", "Driver": "local", "Mode": "", "RW": true }, { "Name": "6d3badcf47c4ac5955deda6f6ae56f4aaf1037a871275f46220c14ebd762fc36", "Source": "/var/lib/docker/volumes/6d3badcf47c4ac5955deda6f6ae56f4aaf1037a871275f46220c14ebd762fc36/_data", "Destination": "/data2", "Driver": "local", "Mode": "", "RW": true } ]
apt-get更换国内源解决Dockerfile构建速度过慢 ubuntu和debian的镜像源都要换
1 2 3 4 RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list RUN apt-get clean RUN apt-get update
或者:
1 2 3 FROM ubuntu:20.04 RUN sed -i 's/ports.ubuntu.com/mirror.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list RUN apt-get install vim
https://www.cnblogs.com/dakewei/p/12783717.html
163的镜像 1 2 3 4 5 6 #更新apt-get源 使用163的源 RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \ echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \ echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \ echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \ echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
docker-compose docker-compose.yml文件详解 基础 参考1
安装 1 sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
如果从github拉下来安装之后无法执行docker-compose命令的话,可以采用本机电脑下载之后上传到服务器,在chmod修改可执行权限就可以了。
命令 后台执行
docker-compose中解决depends_on无效问题 1 2 3 RUN apt-get -q update && apt-get -qy install netcat # docker-compose.yml 加上下面 command: sh -c './wait-for.sh kiwi-microservice-local:5001/actuator/info -- echo kiwi-word-biz already started'
http://www.zyiz.net/tech/detail-98533.html https://github.com/Eficode/wait-for
Mac上跑docker https://www.runoob.com/docker/macos-docker-install.html
docker.service的配置 https://www.cnblogs.com/nihaorz/p/12131873.html
更换国内的镜像 https://blog.csdn.net/u012081441/article/details/104553145/ https://blog.csdn.net/s_lisheng/article/details/79871086
在docker跑nginx的vue项目 https://www.jianshu.com/p/422b61100273
nginx80端口被占用修改 https://jingyan.baidu.com/article/3aed632efb150a701080912f.html
验证nginx配置
各种配置 https://www.jqhtml.com/34815.html
网络 1 2 docker network ls docker network inspect bridge
https://www.cnblogs.com/chenpython123/p/10823879.html
Docker根据名称查询容器ID镜像ID并停止删除 https://blog.csdn.net/zimou5581/article/details/94012682
Problem Solution bash: vi: command not found 1 2 3 docker exec -it <container> bash apt-get update apt-get install vim
Error response from daemon: Get https://registry-1.docker.io/v2/ : net/http: TLS handshake timeout 网上的解决方案
Current command vanished from the unit file, execution of the command list won’t be resumed. 可能是有docker的相关进程没有杀干净。
1 2 ps -ef|grep docker kill -9 pid
远程2375连接不上 1 vi /usr/lib/systemd/system/docker.service
vim进入命令行模式输入?ExecStart,找到如下一行:
1 ExecStart=/usr/bin/dockerd -H unix://var/run/docker.sock \
在后面加上-H tcp://0.0.0.0:2375
1 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
之后要注意重启之前的容器。
ERROR: Version in “./docker-compose.yml” is invalid. You might be seeing this error because you’re using the wrong Compose file version. Either specify a supported version (e.g “2.2” or “3.3”) 把docker-compose.yml里面的version改一下,改成2.2或3.3(根据提示改)
docker 启动 nginx 访问不了的问题 如果容器的nginx服务没有启动
1 2 3 # 进入容器 /usr/sbin/nginx # 看下报什么错
vue.config.js设置代理之后,nginx反向代理 404 https://zhuanlan.zhihu.com/p/60833019 /etc/nginx/conf.d/default.conf
nginx关键配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 location / { root /usr/share/nginx/html; index index.html index.htm; } location /auth { proxy_pass http://kiwi-microservice:9991; } location /wordBiz { proxy_pass http://kiwi-microservice:9991; } location /code { proxy_pass http://kiwi-microservice:9991; }
Published ports are discarded when using host network mode host的网络模式不能-p映射端口
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused “exec: "bash": executable file not found in $PATH”: unknown 三种模式选择一种试试:
1 2 3 docker exec -it 1e33b26152e1 /bin/sh docker exec -it 1e33b26152e1 bash docker exec -it 1e33b26152e1 sh
mkdir: can’t create directory ‘/tmp’: File exists Dockerfile里面RUN命令创建文件夹的时候注意不要和系统同路径,不然会报错。
openjdk:8-jdk-alpine进入容器 用传统的docker exec -it ? bash
进不去要改成:
1 docker exec -it ? /bin/sh
https://stackoverflow.com/questions/40944479/how-to-use-bash-with-an-alpine-based-docker-image/40944512 查看其java_home:
启动容易报错 可以通过查看docker状态,看看报错的log:
1 systemctl status docker -l
jmap等命令在openjdk:8-jdk-alpine不灵 容器修改了配置启动不来的处理方法 可以通过docker inspect xxxid
查看GraphDriver
的容器依赖物理文件目录,进去找到修改过的配置文件改回来