安装
下载镜像
以安装dotnet core 为例,直接执行命令:docker pull microsoft/dotnet, 详细解释见链接:https://hub.docker.com/r/microsoft/dotnet/
images 操作
docker images :显示所有镜像文件
docker inspect [image-id/image-name] :显示镜像详细信息
docker search [image-name] :搜索镜像
docker rmi [image-id/image-name] :删除镜像
docker build -t [image-name] . :创建镜像; 该命令要求Dockerfile在当前目录下
docker images | grep "redis" : 查询所有包含redis的镜像
docker images | grep "redis" | awk '{print $3}' : 数据包含redis镜像的第3列内容(镜像id)
container操作
docker ps :查看当前运行的容器
docker ps -a :查看所有容器
- 容器标题含义:
CONTAINER ID:容器的唯一表示ID
IMAGE:创建容器时使用的镜像
COMMAND:容器最后运行的命令
CREATED:创建容器的时间
STATUS:容器状态
PORTS:对外开放的端口
NAMES:容器名。可以和容器ID一样唯一标识容器,同一台宿主机上不允许有同名容器存在,否则会冲突 - docker start [container-id/container-name] :启动容器
docker stop [container-id/container-name] :停止容器
docker rm [container-id/container-name] :删除容器; 删除前,要求先停止容器 - docker stop $(docker ps -a -q) :停止所有容器(可以使用同样方式,操作所有容器,镜像)
- docker ps -a --format "{{.ID}} {{.Command}}" : 显示指定列(同样可以适用于查看image)
kubernet
-
docker(kubernete_name)名称查询:kubectl get pods
-
进入docker(kubernete)内部:kubectl exec -it [kubernete_name] sh
-
创建容器例子:docker run --name=pgdemo_example -p 5000:5000 -d pgdemo
--name:指定容器名称
-p:指定映射端口
-d:指定容器 后台运行
[pgdemo] 为镜像名称
log
docker logs -f -t --since="2018-01-01" --tail=10 [container-name] :查看日志
docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
实例:
-
查看指定时间后的日志,只显示最后10行
$ docker logs -f -t --since="2018-08-01" --tail=10 container-id -
查看最近10分钟的日志
$ docker logs --since 10m container-id -
查看某时间之后的日志
$ docker logs -t --since="2018-08-01T11:30:56" container-id -
查看某时间段日志
$ docker logs -t --since="2018-08-01T11:30:56" --until "2018-08-01T12:30:56" container-id - 输出到文件中:$ docker logs -t --since="2018-08-01T11:30:56" > test.log
dockerfile
-
一个Dotnet Core例子, Dockerfile文件内容如下:
--基于microsoft/dotnet:2.1-aspnetcore-runtime
构建镜像 FROM microsoft/dotnet:2.1-aspnetcore-runtime--拷贝当前文件夹下所有文件到 docker容器中的publish文件夹中
--格式: COPY [本地文件路径] [docker中的路径,名字随意写]
COPY . /publish--设置工作目录为
/publish
文件夹,即容器启动默认的文件夹 WORKDIR /publish--设置Docker容器对外暴露5000端口 EXPOSE 5000
--运行程序 ENTRYPOINT ["dotnet", "HelloWorld.dll", "--server.urls", "http://*:5000"]
实例
postgresql
命令:
docker run -d --name [container-name] -v [docker-datapath]:[host-datapath] -p [host-port]:[docker-port] [image-name]
实例:
docker run -d --name postgresql_database -v /opt/data/postgresql:/var/lib/pgsql/data -p 5432:5432 [postgres]
nginx
问题分析
进入Docker实例内部
Docker Image实例本身是一个独立运行的环境,可以进入到实例内部,查看运行状态等信息。
docker exec -it [container-name] bash :进入实例内部
vim
- 搜索:输入:/字符串
-
查看下一个匹配,按下n(小写n)
-
跳转到上一个匹配,按下N(大写N)
-
跳转到文件头:gg
- 跳转到文件末尾:Shift+g