Docker基本操作

2017/08/23 Docker 共 2892 字,约 9 分钟
Bob.Zhu

Docker相关指令

查看docker信息

docker info

docker --version
docker-compose --version
docker-machine --version

控制台指令相关参数及解析

docker --help
# docker具体指令帮助信息,比如:
docker build --help

Docker容器基本操作

本地镜像地址

在MacOS系统中镜像地址是:

/Users/{username}/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux

其中Docker.qcow2文件比较大

镜像

搜索镜像

docker search ubuntu

查看镜像所有TAG

可以使用如下方法,查看上面镜像的所有标签。 在/usr/local/bin目录下创建名为dockertags的文件,内容如下:

#!/bin/bash

if [ $# -lt 1 ]
then
cat << HELP

dockertags  --  list all tags for a Docker image on a remote registry.

EXAMPLE: 
    - list all tags for ubuntu:
       dockertags ubuntu

    - list all php tags containing apache:
       dockertags php apache

HELP
fi

image="$1"
tags=`wget -q https://registry.hub.docker.com/v1/repositories/${image}/tags -O -  | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n'  | awk -F: '{print $3}'`

if [ -n "$2" ]
then
    tags=` echo "${tags}" | grep "$2" `
fi

echo "${tags}"

赋执行权限:

chmod a+x dockertags

使用范例:

dockertags ubuntu

下载镜像

docker pull ubuntu
# 指定TAG版本
docker pull ubuntu:16.04

容器

# 使用默认latest镜像生成随机容器名称
docker run -i -t ubuntu /bin/bash 
# 使用默认latest镜像生成指定容器名称
docker run --name myName -i -t ubuntu /bin/bash 
# 指定镜像TAG生成指定容器名称
docker run --name myName -i -t ubuntu:16.04 /bin/bash 
# 基于本地镜像生成指定容器名称
docker run --name myName -i -t adolphor/myImage:tag01 /bin/bash 

查看容器列表

# 当前运行容器
docker ps 
# 所有容器(包括停止运行的容器)
docker ps -a

查看某个容器详细信息

docker inspect dockerId/dockerName

创建容器

# 创建后台守护容器
docker run -i -t -d ubuntu /bin/bash

启动容器

# 启动容器并进入bash交互
docker start dockerId/dockerName -it
# 容器启动但是不进入shell交互页:
docker start dockerId/dockerName

停止容器

docker stop dockerId/dockerName

删除容器

docker rm dockerId/dockerName
# 小技巧:删除所有容器
docker rm `docker ps -a -q`

进入容器

# 进入容器,并使用ssh交互
docker exec -it dockerId/dockerName
# 执行容器内部的指令,但不进入ssh交互
docker exec my-nginx nginx -t # 测试nginx配置文件
docker exec my-nginx nginx -s reload # 重载nginx配置文件

挂载

可以使用 -v 参数来挂在宿主机的文件夹到docker容器:

docker start rascms -i -v /Users/adolphor/IdeaProjects/adolphor:/root/adolphor/workspace /bin/bash

以上语句的含义为:初始化一个名为rascms的容器,并挂在宿主机的/Users/adolphor/IdeaProjects/adolphor目录到docker容器的 /root/adolphor/workspace目录。

注意:如果此容器关闭之后想要重新打开再次使用的时候,无需再次指定挂在目录,也就是只要执行 docker start 指令就行,无需其他参数。

日志

# 最后的日志
docker logs [dockerId/dockerName]

# 实时日志
docker logs -f [dockerId/dockerName]

# --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
# -f : 查看实时日志
# -t : 查看日志产生的日期
# -tail=10 : 查看最后的10条日志。
# [dockerId/dockerName] : 容器名称
docker logs -f -t --since="2017-05-31" --tail=10 [dockerId/dockerName]

统计信息

docker stats

还有一个第三方的工具可以使用,top可以查看电脑的使用情况,ctop可以查看容器的使用情况:

# 安装
brew install ctop
# 运行
ctop

Dockerfile

编写Dockerfile

执行Dockerfile

docker build -t="adolphor/myImage:tag01" .

如果不想使用缓存镜像,需要添加如下参数:–no-cache

docker build -t adolphor/myImage:tag01 . --no-cache

查看镜像创建过程

docker images adolphor/myImage:tag01

查看镜像创建过程

docker history ad2a3b2cc976

推送镜像到docker仓库

https://hub.docker.com/

docker push adolphor/myImage:tag01

只要用户名正确,如果没有static_web仓库的话会自动创建的

删除镜像

删除本地镜像(此镜像下不能有关联的容器才可以删除)

docker rmi adolphor/myImage:tag01
# 小技巧:删除所有容器
docker rmi `docker images -a -q`

Dockerfile指令清单

  • CMD
  • ENTRYPOINT
  • WORKDIR
  • ENV
  • USER
  • VOLUME
  • ADD
  • COPY
  • LABEL
  • STOPSIGNAL
  • ARG
  • ONBUILD

参考资料

文档信息

Search

    Table of Contents