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

广告
将在 10 秒后关闭
bannerAds