常用命令
帮助命令
docker version docker info docker [命令] --help
帮助文档:https://docs.docker.com/reference/
镜像命令
docker images 查看所有本地主机上的镜像
解释
- REPOSITORY :镜像的仓库 源
- TAG:镜像的标签
- IMAGE ID:镜像的ID
- CREATED:镜像创建时间
- SIZE:镜像的大小
通过docker images --help查看可选项有哪些
可选项:
-a, --all #列出所有镜像
-q, --quiet #只显示镜像的ID
可以结合使用,显示所有镜像的ID
docker images -aq
docker search 搜索镜像
[root@docker ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11409 [OK] mariadb MariaDB Server is a high performing open sou… 4334 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 847 [OK] percona Percona Server is a fork of the MySQL relati… 553 [OK]
解释
- NAME:镜像名称
- DESCRIPTION:镜像描述
- STARS:下载次数
docker search --help查看可选项
可选项:
-f, --filter filter #根据提供的条件过滤输出 --format string #使用 Go 模板进行漂亮打印搜索 --limit int #最大搜索结果数(默认 25) --no-trunc #不截断输出
用法:
docker search mysql -f=stars=3000 或 docker search mysql -f stars=3000
docker pull 下载镜像
[root@docker ~]# docker pull mysql Using default tag: latest #如果不指定版本,默认下载最新版本 latest: Pulling from library/mysql a330b6cecb98: Pull complete #分层下载 9c8f656c32b8: Pull complete 88e473c3f553: Pull complete 062463ea5d2f: Pull complete daf7e3bdf4b6: Pull complete 1839c0b7aac9: Pull complete cf0a0cfee6d0: Pull complete 1b42041bb11e: Pull complete 10459d86c7e6: Pull complete b7199599d5f9: Pull complete 1d6f51e17d45: Pull complete 50e0789bacad: Pull complete Digest: sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c #签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #真实地址
docker pull mysql 等价于 docker pull docker.io/library/mysql:latest
格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker pull mysql:5.7
docker rmi 删除镜像
docker rmi -f 镜像id/镜像名称 #删除指定镜像 docker rmi -f 镜像id/镜像名称 镜像id/镜像名称 镜像id/镜像名称 #删除多个指定镜像 docker rmi -f $(docker images -aq) #删除全部镜像
容器使用
下载镜像
[root@docker ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos 7a0437f04f83: Pull complete Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest
启动容器
Docker容器可以使用命令创建:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
docker run 可选项 镜像名:版本号|@不知道是什么 命令 参数
可选项:
--name="name" 容器名字 用于区分容器 -d 后台方式运行-it 使用交互方式运行,进入容器查看内容(-i:交互式操作,-t:终端) -p -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P 随机指定端口
通过centos镜像创建并进入容器
[root@docker ~]# docker run -it centos /bin/bash
[root@8952118a9065 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
下图主机名不一样了,说明创建了容器并进入容器了。
查询容器
docker ps [OPTIONS] 空白 #列出当前正在运行的容器 -a, --all # 列出所有容器 -n, --last int #显示最近创建的容器(指定显示个数) -q, --quiet #只显示编号
退出容器
exit #退出容器,并停止容器
Ctrl+P+Q # 退出容器,但不停止容器
删除容器
docker rm 容器Name #删除指定容器,不能删除正在运行的容器 docker rm -f $(docker ps -aq) # 删除所有容器,包括正在运行的 docker rm -a -q|xargs docker rm #通过管道 删除获取容器
启动和停止容器
docker start 容器id #启动 docker restart 容器id #重启 docker stop 容器id #停止 docker kill 容器id #强制停止
其他命令
后台启动容器
[root@docker ~]# docker run -d centos b418e6a530ea0f9d22675b86d4d421eccf2ae8429f062a432dcfb6e16644a67b [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器使用后台运行,必须有一个前台进程,否则就会自动停止
[root@docker ~]# docker run -d centos /bin/sh -c "while true;do echo while run;sleep 2;done" 26c1e4810bcfd10a78fddff5ee1b62eba0ddd0c4d56df2ce0c1e07bd15519736 [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26c1e4810bcf centos "/bin/sh -c 'while t…" 14 seconds ago Up 13 seconds happy_mendel
日志
[root@docker ~]# docker logs --help Usage: docker logs [OPTIONS] CONTAINER Fetch the logs of a container 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)
常用方式:
[root@docker ~]# docker logs -f -t --tail 10 26c1e4810bcf #显示指定条数的日志 [root@docker ~]# docker logs -ft 26c1e4810bcf #显示全部日志
查看容器中的进程信息
docker top 容器id
[root@docker ~]# docker top 26c1e4810bcf UID PID PPID C STIME TTY TIME CMD root 20256 20238 0 09:17 ? 00:00:00 /bin/sh -c while true;do echo while run;sleep 2;done root 20716 20256 0 09:27 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 2
查看镜像元数据
[root@docker ~]# docker inspect --help
docker inspect 可选项 容器Name|容器ID Usage: docker inspect [OPTIONS] NAME|ID [NAME|ID...] Return low-level information on Docker objects Options: -f, --format string Format the output using the given Go template -s, --size Display total file sizes if the type is container --type string Return JSON for specified type
进入当前正在运行的容器
方式一:
[root@docker ~]# docker exec --help docker exec 可选项 容器id 命令 Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Run a command in a running container Options: -d, --detach Detached mode: run command in the background --detach-keys string Override the key sequence for detaching a container -e, --env list Set environment variables --env-file list Read in a file of environment variables -i, --interactive Keep STDIN open even if not attached --privileged Give extended privileges to the command -t, --tty Allocate a pseudo-TTY -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) -w, --workdir string Working directory inside the container
用法
[root@docker ~]# docker exec -it 26c1e4810bcf /bin/bash
[root@26c1e4810bcf /]#
方式二:
[root@docker ~]# docker attach --help docker attach 可选项 容器id Usage: docker attach [OPTIONS] CONTAINER Attach local standard input, output, and error streams to a running container Options: --detach-keys string Override the key sequence for detaching a container --no-stdin Do not attach STDIN --sig-proxy Proxy all received signals to the process (default true)
用法
docker attach 容器id
区别:
docker exec 进入容器后开启一个新的终端(常用)
docker attach 进入容器正在执行的终端
容器和主机交互
从容器拷贝文件到主机
[root@docker ~]# docker images #查看镜像 REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest 0716d6ebcc1a 11 days ago 514MB centos latest 300e315adb2f 9 months ago 209MB [root@docker ~]# docker run -it centos /bin/bash #运行并进入容器 [root@dbcefddb0dfe /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@dbcefddb0dfe /]# cd /home #进入容器的home目录 [root@dbcefddb0dfe home]# ls [root@dbcefddb0dfe home]# touch testCopy.java #创建拷贝测试文件 [root@dbcefddb0dfe home]# ls testCopy.java [root@dbcefddb0dfe home]# exit #退出容器 exit [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dbcefddb0dfe centos "/bin/bash" 2 minutes ago Exited (0) 18 seconds ago happy_morse [root@docker ~]# docker cp dbcefddb0dfe:/home/testCopy.java /home #拷贝文件到当前主机的指定目录 [root@docker ~]# ls --add-repo docker-client docker-engine docker-logrotate initial-setup-ks.cfg Public anaconda-ks.cfg docker-client-latest docker-latest Documents Music Templates Desktop docker-common docker-latest-logrotate Downloads Pictures Videos [root@docker ~]# cd /home #查看 [root@docker home]# ls marw testCopy.java
总结:
attach #进入容器 build #通过Dockersfile定制镜像 commit #提交当前容器未新的镜像 cp #从容器中拷贝只当文件或目录到宿主机中 create # 创建一个新的容器,同run,但不启动容器 diff #查看docker容器变化 events #从docker服务获取容器实时事件 exec #进入容器 export #导出容器的内容流作为一个tar归档文件【对应import】 history #展示一个镜像形成历史 images #列出系统当前镜像 import #从tar包中的内容创建一个新的文件系统镜像【对应export】 info #显示系统相关信息 inspect #查看容器详细信息 kill #结束指定容器 load #从一个tar包中加载一个镜像【对应save】 login #注册或登录一个dockers源服务器 logout #从当前Docker registry 退出 logs #输出当前容器日志信息 port #查看映射端口对象的容器源端口 pause #暂停容器 ps #列出容器列表 pull #从docker镜像源服务器拉取镜像或库镜像 push #推送指定镜像或库镜像 到docker源服务器 restart #重启运行的容器 rm #移除一个或多个容器 rmi #移除一个或多个镜像(无容器使用的镜像可直接移除,否则先删除相关容器或 -f 强制移除) run #创建并运行容器 save #保存一个镜像未一个tar包【对应load】 search #在docker hub 中搜索镜像 start #启动容器 stop #停止容器 tag #设置源中镜像标签 top #查看容器中运行的进程信息 unpause #取消暂停 version #查看docker版本号 wait #截取容器停止时退出状态值