Docker常用命令
安装镜像
docker pull 镜像名称
docker run 镜像名称
例: docker pull microsoft/dotnet-samples
如果国外的镜像仓库下载慢的话,可以用国内的镜像仓库
安装镜像并映射端口
docker -it 镜像名称
docker -d 镜像名称
语法 docker run -it -p 对外端口:docker内部端口 --name 容器名称 镜像全名
例: docker run -it -p 8000:80 --name aspnetcore_sample microsoft/dotnet-samples:aspnetapp
例: docker run -d -p 8000:80 --name aspnetcore_sample microsoft/dotnet-samples:aspnetapp
例: docker run -d -p 8000:80 -v /var/www/webapp --name aspnetcore_sample microsoft/dotnet-samples:aspnetapp
例: docker run -d -p 8000:80 -v /var/www/webapp --workdir "/app" --name aspnetcore_sample microsoft/dotnet-samples:aspnetapp
参数说明:
-it 交互模式
-d 后台运行模式
--rm 表示容器运行完之后自动删除容器
-p 映射端口,对外端口:docker内部端口
--name 容器名称
-v 表示给容器创建一个卷并给卷指定路径(路径可以随意指定),以后往容器里添加代码时,代码就存放在卷里持久化,当容器删除时,代码还在。
--workdir 表示容器工作所在路径
-e 设置环境变量,用法: -e dataserver=./mysql5.8
快捷键
ctrl+c 停止容器,如果加了-rm参数,会删除容器
ctrl+p,ctrl+q,退出,但是让容器保持运行
列出所有镜像
docker images
查看本地镜像
docker image ls
查找docker hub上的镜像
docker search 镜像名
例: docker search redis
删除镜像
docker rmi 镜像名称或镜像ID
删除所有镜像
docker rmi $(docker ps -aq)
删除容器
docker rm 容器名称或容器ID
删除所有容器
docker rm $(docker ps -aq)
查看在运行的容器
docker ps
查看在运行以及停止的容器
docker ps -a
启动容器
docker start 容器名称或容器ID
停止容器
docker stop 容器名称或容器ID
停止所有容器(windows系统需要在PowerShell模式下才支持)
docker stop $(docker ps -aq)
查看容器的运行日志
docker logs 容器ID
** 进入到某个容器命令行窗口,进行容器相关的操作
docker exec -it 容器ID /bin/bash
或
docker exec -it 容器ID bash
然后可以使用容器里的命令
例如:
ls
ls -al
clear
退出容器命令行窗口
exit 用于windows
ctrl+p,ctrl+q
查看容器的配置信息
docker inspect 容器ID
构建镜像
docker build -t 镜像名 .
例: docker build -t myaccount/mywebabb .
-t 表示镜像名,后面的圆点符号前面有一个空格,表示当前目录。
登录docker hub
docker login
发布镜像到docker hub
docker push 用户名/镜像
例: docker push yeecat/asp.netcore_demo
创建容器网络
docker network create --driver bridge 网络名
查看容器网络列表
docker network ls
让容器加入容器网络
docker run -d --network=网络名 --name 网络内的容器名 镜像名
查看容器网络配置信息
docker network inspect 网络名
删除容器网络
docker network rm 网络名
Volume是什么?
Volume(卷)是容器中一个特别种类的目录,通常叫做数据volume,顾名思义,里面可以放置各种类型的数据,例如代码、日志文件、数据文件等等。
Volume可以在容器间被共享和复用,可以让多个容器对同一个volume进行读写,也可以让一个容器读写多个volume。
对镜像的更新并不会影响volume。
Volume是被持久化的,即使容器删除了,volume仍然存在。
如何把源代码装进容器里?
1) 可以在制作镜像时直接把源码嵌入里面。
2) 把源码挂载到容器的可读写层(卷里面)。