Docker部署常见问题
一、删除容器和镜像
在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器(哪怕是已经停止的容器),否则无法删除该镜像。
停止容器
# docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
删除容器
# docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
或
# docker rm -v $(docker ps -aq -f status=exited)
删除镜像
# docker rmi $(docker images | grep "none" | awk '{print $3}')
删除镜像
docker rmi IMAGE [IMAGE...] 其中IMAGE可以为镜像标签或者ID
#当同一个镜像拥有多个标签时,docker rmi命令只是删除了该镜像多个标签中的指定标签,并不影响镜像文件本身,但当镜像只剩下一个标签时,此时就会彻底删除镜像。
#当docker rmi命令后面跟的是镜像ID时,会尝试删除所有指向该镜像的标签,然后删除镜像文件本身,如果该镜像存在多个标签,默认无法删除,需要加-f进行删除。
#如果有基于该镜像创建的容器,则默认无法删除镜像,需要先通过docker rm删除容器,然后再用docker rmi删除镜像,或者使用docker rmi -f强制删除(不推荐)。
二、查看日期日志
docker logs -f -t --since="2018-02-07" --tail=10 [61462bcea73b容器ID或者名称]
--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f : 查看实时日志
-t : 查看日志产生的日期
-tail=10 : 查看最后的10条日志。
edu_web_1 : 容器名称
三、容器IP查询
要获取所有容器名称及其IP地址只需一个命令
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
如果使用docker-compose命令将是:
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
显示所有容器IP地址:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
四、其他
docker run -it \
-v $HOME/mvc:/app \
microsoft/dotnet:latest
FROM microsoft/dotnet:latest
WORKDIR /app
COPY . /app
RUN dotnet restore
EXPOSE 6100
ENV ASPNETCORE_URLS http://*:6100
ENTRYPOINT ["dotnet","run"]
五、Nginx配置文件
/etc/nginx/conf.d/default.conf
server {
listen 80; //Nginx监听端口
location / {
proxy_pass http://172.17.0.2:6100; //web服务容器IP:对外开放访问端口号
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'keep-alive';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
六、Nginx反向代理运行
docker run -d -p 808:80 \
--name nginxserver \
-v $HOME/nginx/my_nginx.conf:/etc/nginx/conf.d/default.conf:rw \
-v $HOME/nginx/logs/error.log:/var/log/nginx/error.log:rw \
nginx
注意:挂载的目录都要已存在,不然会报错。
七、使用该命令进入一个已经在运行的容器
$ sudo docker ps
$ sudo docker exec -it [94fdeebf552b容器ID] /bin/bash