Skip to content
DAILY QUOTE

“ ”

帮助命令

bash
docker version  #docker版本信息
docker info #系统级别信息,包括镜像和容器数量
docker 命令 --help

镜像命令

docker images 查看所有本地主机镜像

bash
docker images -a #列出所有镜像详细信息
docker images -aq #列出所有镜像id

docker search 查找镜像

住:不走镜像源,只会走官方渠道,容易超时

docker pull 下拉镜像

bash
docker pull 镜像名[:tag]  不写tag,默认latest

ubuntu@Mystpet:~$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
17eec7bbc9d7: Pull complete     # 分层下载,dockerimages核心,联合文件系统
ea52d2000f90: Download complete 
Digest: sha256:85404b3c53951c3ff5d40de0972b1bb21fafa2e8daa235355baf44f33db9dbdd
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest   #真实地址

docker pull mysql
等价于docker pull docker.io/library/hello-world:latest

docker rmi 删除镜像

bash
docker rmi image id #删除指定镜像
docker rmi image id1 image id2 image id3 #删除多个镜像
docker rmi $(docker images -aq) #删除所有镜像 
-a全部 -q只显示镜像id
docker stop $(docker ps -a -q) #停止全部镜像

容器命令

有了镜像才可以创建容器

新建容器并启动

bash
docker run [可选参数] image #新建容器并启动

docker run -it ubuntu /bin/bash #启动并进入容器

-it 使用交互方式进行,进入容器查看内容  /bin/bash 虚拟显示屏

root@7d6209933ef2:/# ls #查看容器内的ubuntu,很多命令不完善      
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

root@7d6209933ef2:/# exit  #从容器退回主机

列出所有运行的容器

bash
docker ps
-a #列出正在运行的容器包括历史容器
-q #只显示当前容器编号
ubuntu@Mystpet:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
docker ps -a
ubuntu@Mystpet:~$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                       PORTS     NAMES
9a6c7cac3bab   ubuntu         "/bin/bash"              6 minutes ago   Exited (0) 6 minutes ago               dazzling_ritchie
fe8194fdc53a   ubuntu         "/bin/bash"              8 minutes ago   Exited (127) 8 minutes ago             practical_gagarin
cc3d0463dd17   nginx:alpine   "/docker-entrypoint.…"   4 weeks ago     Exited (0) 11 days ago                 myblog-container

退出容器

bash
exit #直接退出容器并关闭
Ctrl+P+Q #容器不关闭退出

删除容器

bash
docker rm -f 容器id #删除指定容器
docker rm -f $(docker ps -aq) #删除所有容器

启动和停止容器的操作

bash
docker start 容器id #启动容器
docker restart 容器id #重启容器  用来加载新配置
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前的容器

常用的其他命令

bash
docker run -d ubuntu

#问题 docker ps,发现ubuntu停止了

常见的坑, Docker 容器的生命周期与内部的 PID 1(一号进程)共存亡。容器若要在后台(宿主机视角)持续运行,其内部必须有一个阻塞式的前台主进程撑场子;一旦主进程执行完毕或退居后台(Daemonize),Docker 就会判定任务结束,从而导致容器秒退。

查看日志

bash
docker logs --help
Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m" for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m" for 42 minutes)
      
docker logs -tf --tail [number] 容器id
--tail number #表示只看最后几行
-t #精确到秒的时间戳
-f #持续跟踪

查看容器中进程信息

bash
docker top 容器id
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                4070367             4070344             0                   18:13               ?                   00:00:00

查看镜像元数据

bash
docker inspect 容器id

进入正在运行的容器

bash
docker exec -it 容器id /bin/bash #i进入容器后开启一个新终端,可以在里面操作

docker attach 容器id #进入容器正在执行的终端,不会启动新的进程

从容器拷贝文件到主机

bash
docker cp 容器id:容器内路径  目的地主机路径

1.启动容器
ubuntu@Mystpet:~/blog$ docker run -it tomcat:latest /bin/bash
2.新建文件
root@663302aac625:/usr/local/tomcat# echo "测试" > hello.txt
root@663302aac625:/usr/local/tomcat# exit
3.拷贝
ubuntu@Mystpet:/home$ docker cp 663302aac625:/usr/local/tomcat/hello.txt ~/
ubuntu@Mystpet:~$ ls
blog  hello.txt  idea  minecraft