Docker Compose和Docker指令摘要
先决条件
-
- MacOS Sierra 10.12.6
-
- homebrew
-
- iTerm2
- Docker for Mac 17.06.0
既然使用了Docker,我把常用的命令整理了一下(虽然我升级了我的Mac到Sierra,但这对此完全没有影响)。
指令 (Zhi Ling)
建立或重新建構服務。 huò .)
$ docker-compose build
创建并启动容器
$ docker-compose up
停止服务
$ docker-compose stop
停止容器
$ docker-compose down
Docker容器列表。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb8bf3e2a7fa docker_nginx "nginx -g 'daemon ..." 3 days ago Up 20 seconds 443/tcp, 0.0.0.0:8080->80/tcp nginx
043404e9fe75 docker_php "docker-php-entryp..." 3 days ago Up 21 seconds 9000/tcp, 0.0.0.0:9001->9001/tcp php
472f8a3774a4 docker_mysql "docker-entrypoint..." 4 days ago Up 21 seconds 0.0.0.0:3306->3306/tcp mysql
容器列表 ( Docker-Compose)
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
mysql docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
nginx nginx -g daemon off; Up 443/tcp, 0.0.0.0:8080->80/tcp
php docker-php-entrypoint php-fpm Up 9000/tcp, 0.0.0.0:9001->9001/tcp
docker-compose和docker生成的输出内容有点不同呢……
进入指定的容器
$ docker exec -it 043404e9fe75 bash
root@043404e9fe75:/var/www/html#
为什么在docker-compose ps命令中无法获取CONTAINER ID,而043404e9fe75部分则是通过docker ps命令检索到的容器ID。
Docker的图像清单
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_nginx latest 713e73265b01 3 days ago 183MB
<none> <none> 457f03c3a8a5 3 days ago 183MB
<none> <none> 8c55eb4ab305 3 days ago 183MB
<none> <none> 78d89e63b832 3 days ago 183MB
<none> <none> e4134c2d8f9f 3 days ago 183MB
<none> <none> e4f8e7437c52 4 days ago 183MB
<none> <none> 30342c23b22c 4 days ago 183MB
docker_php latest edb84cd10961 4 days ago 430MB
<none> <none> 4da40db9cde2 3 months ago 183MB
php 7.1-fpm 52e982dc973b 3 months ago 382MB
mysql 5.6 ed7b6c642b9d 3 months ago 299MB
docker_mysql latest ed7b6c642b9d 3 months ago 299MB
nginx 1.11 5766334bdaa0 4 months ago 183MB
图片列表(Docker Compose)
$ docker-compose images
Container Repository Tag Image Id Size
---------------------------------------------------------
mysql docker_mysql latest ed7b6c642b9d 285 MB
nginx docker_nginx latest 713e73265b01 174 MB
php docker_php latest edb84cd10961 410 MB
查看日志
$ docker-compose logs
重新启动服务
$ docker-compose restart
Restarting nginx ... done
Restarting php ... done
Restarting mysql ... done
在创建过程中经常使用的命令。
修改docker-compose.yml文件并构建、启动,但是不知道为什么总是不能正常工作。感觉修改了但没有正确反映出来……啊,真想重置一下重新开始!这是在想要把一切都重置后它能正常运行的情况下使用的命令。有时候会有重置后它能工作的情况发生,所以可以尝试一下。(当然,也有时候应该追查原因……)
批量删除容器
$ docker ps -a | awk 'NR>1 {print $1}' | xargs docker rm
5ee1b3b893db
48d49f8cde1b
・・・
Error response from daemon: You cannot remove a running container 472f8a3774a4e62b5a64bea3f11ad756c768323c5bdd833e695390d4374a341f. Stop the container before attempting removal or force remove
如果无法删除,请添加-f以强制删除
(↑所述错误是因为未正确停止而试图直接删除容器,所以受到了警告。因此,请使用停止命令w)
$ docker ps -a | awk 'NR>1 {print $1}' | xargs docker rm -f
将图片进行批量删除
$ docker images | awk 'NR>1 {print $3}' | xargs docker rmi
Untagged: docker_nginx:latest
Deleted: sha256:713e73265b013ff8964299d40c603b63a715a5040cd8ffa6cd386c6d03707d2f
・・・
Error response from daemon: conflict: unable to delete ed7b6c642b9d (must be forced) - image is referenced in multiple repositories
如果也要强制删除这个,请加上“-f”。
$ docker images | awk 'NR>1 {print $3}' | xargs docker rmi -f
顺便说一句,在创建过程中我经常遇到的问题是,当我进入容器后,尽管没有安装vi,但还是想用vi查看文件,结果被怒斥了…这是一个相当愚蠢的失误。(明明知道,但还是不由自主地…)
仅提供一个选项:请参考以上的资料。
docker-compose 命令概述
http://docs.docker.jp/compose/reference/overview.html