2019年03月31日
阅读: 2935
Docker常用命令整理
友情提醒:本文最后更新于 2092 天前,文中所描述的信息可能已发生改变,请谨慎使用。
本文只是整理了一些docker的一些常用命令,至于docker的基础知识,建议有能力的同学可以阅读一下 官方文档,英文能力稍差的同学可以查看这里 gitbook,里面所讲的内容比较全面,本文不在赘述。
1. 查看版本信息
docker --version # 查看版本
docker-compose --version # 查看版本
docker-machine --version # 查看版本
docker version # 查看client和server端版本,并可以查看是否开启体验功能
2. 镜像操作
docker search <image-name> # 搜索镜像
docker pull <image-name:tag> # 拉取镜像
docker build -t <image-name:tag> . # 使用当前目录下的Dockerfile构建镜像,注意`.`是必须的
docker images # 查看本地所有镜像
docker rmi [image-id/image-name] # 删除指定的镜像,如docker rmi nginx
docker image rm $(docker image ls -a -q) # 删除所有的镜像
docker tag <image> <username>/<repository>:<tag> # 为自定义的镜像打上tag。如:$docker tag hellopython followtry/demo:latest
docker push <username>/<repository>:<tag> # 将自定义的镜像发布到仓库。如:docker push followtry/demo:latest
docker run <image-name:tag> # 运行镜像
附录:run参数详解
-a, --attach=[] Attach to STDIN, STDOUT or STDERR 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
--add-host=[] Add a custom host-to-IP mapping (host:ip)
--blkio-weight=0 Block IO (relative weight), between 10 and 1000
-c, --cpu-shares=0 CPU shares (relative weight)
--cap-add=[] Add Linux capabilities
--cap-drop=[] Drop Linux capabilities
--cgroup-parent= Optional parent cgroup for the container
--cidfile= Write the container ID to the file
--cpu-period=0 Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota=0 Limit the CPU CFS quota
--cpuset-cpus= CPUs in which to allow execution (0-3, 0,1) 绑定容器到指定CPU运行
--cpuset-mems= MEMs in which to allow execution (0-3, 0,1) 绑定容器到指定MEM运行
-d, --detach=false Run container in background and print container ID 后台运行容器,并返回容器ID
--device=[] Add a host device to the container
--dns=[] Set custom DNS servers 指定容器使用的DNS服务器,默认和宿主一致
--dns-search=[] Set custom DNS search domains 指定容器DNS搜索域名,默认和宿主一致
-e, --env=[] Set environment variables 设置环境变量
--entrypoint= Overwrite the default ENTRYPOINT of the image
--env-file=[] Read in a file of environment variables 从指定文件读入环境变量
--expose=[] Expose a port or a range of ports
-h, --hostname= Container host name 指定容器的hostname
--help=false Print usage
-i, --interactive=false Keep STDIN open even if not attached 以交互模式运行容器,通常与 -t 同时使用
--ipc= IPC namespace to use
-l, --label=[] Set meta data on a container
--label-file=[] Read in a line delimited file of labels
--link=[] Add link to another container
--log-driver= Logging driver for container
--log-opt=[] Log driver options
--lxc-conf=[] Add custom lxc options
-m, --memory= Memory limit
--mac-address= Container MAC address (e.g. 92:d0:c6:0a:29:33)
--memory-swap= Total memory (memory + swap), '-1' to disable swap
--name= Assign a name to the container 为容器指定一个名称
--net=bridge Set the Network mode for the container 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型
--oom-kill-disable=false Disable OOM Killer
-P, --publish-all=false Publish all exposed ports to random ports
-p, --publish=[] Publish a container's port(s) to the host
--pid= PID namespace to use
--privileged=false Give extended privileges to this container
--read-only=false Mount the container's root filesystem as read only
--restart=no Restart policy to apply when a container exits
--rm=false Automatically remove the container when it exits
--security-opt=[] Security Options
--sig-proxy=true Proxy received signals to the process
-t, --tty=false Allocate a pseudo-TTY 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-u, --user= Username or UID (format: <name|uid>[:<group|gid>])
--ulimit=[] Ulimit options
--uts= UTS namespace to use
-v, --volume=[] Bind mount a volume
--volumes-from=[] Mount volumes from the specified container(s)
-w, --workdir= Working directory inside the container
3. 容器操作
docker container ls # 列出所有运行中的容器
docker container ls -a # 列出所有容器,包括未运行的
docker container ls -q # 只列出运行的容器的id集合
docker container stop <hash> # 优雅停用指定的容器
docker container kill <hash> # 强制关闭指定的容器
docker container rm <hash> # 删除指定的容器
docker container rm $(docker container ls -a -q) # 删除所有的容器
docker run -d -p 8080:80 --name webserver nginx # 运行nginx镜像实例,-d:后台,-p:绑定端口8080到docker的80
docker stop <containerid/container-name> # 停止容器webserver
docker start <containerid/container-name> # 启动容器webserver
docker port <containerid/container-name> # 查看指定容器的端口映射
docker logs -f <containerid/container-name> # 查看指定容器的日志
docker top <containerid/container-name> # 查看容器的进程
docker inspect <containerid/container-name> # 检查容器的底层信息
docker rm <containerid/container-name> # 删除容器
4. 交互式进入容器
docker exec -it <containerName or containerID> bash
docker exec -i <containerName or containerID> bash
docker exec -t <containerName or containerID> bash
docker exec -d <containerName or containerID> bash
- 只用 -i 参数,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令返回值都可以正确获取
- 只用 -t 参数,则可以看到一个 console 窗口,但是执行命令会发现由于没有获得stdin的输出,无法看到命令执行情况
- 使用 -it 时,则和我们平常操作 console 界面类似,而且也不会像attach方式因为退出,导致整个容器退出
- 使用 -d 参数,在后台执行一个进程。如果一个命令需要长时间进程,会很快返回
5. Dockerfile介绍
http://www.dockerinfo.net/dockerfile%E4%BB%8B%E7%BB%8D
6. 附录docker-compose常用命令
http://wiki.jikexueyuan.com/project/docker-technology-and-combat/commands.html
相关链接:
https://segmentfault.com/a/1190000012063374
https://www.jianshu.com/p/adaa34795e64
http://www.dockerinfo.net/dockerfile%E4%BB%8B%E7%BB%8D