Docker 容器使用最详细实测教程及相关命令使用(附镜像,容器命令干货)!!
Docker 容器相关命令使用实测教程
Docker安装(CentOs 7)不在赘述!
Docker 客户端
docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。
[root@localhost ~]# docker Usage: docker COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit Management Commands: config Manage Docker configs container Manage containers image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes Commands: attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a containe ......
可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如我们要查看 docker stats 指令的具体使用方法:
[root@localhost ~]# docker stats --help Usage: docker stats [OPTIONS] [CONTAINER...] Display a live stream of container(s) resource usage statistics Options: -a, --all Show all containers (default shows just running) --format string Pretty-print images using a Go template --no-stream Disable streaming stats and only pull the first result --no-trunc Do not truncate output
容器使用
获取镜像
如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:
root@localhost ~]# docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 5c939e3a4d10: Pull complete c63719cdbe7a: Pull complete 19a861ea6baf: Pull complete 651c9d2d6c4f: Pull complete Digest: sha256:8d31dad0c58f552e890d68bbfb735588b6b820a46e459672d96e585871acc110 Status: Downloaded newer image for ubuntu:latest
查看镜像
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest ccc6e87d482b 4 weeks ago 64.2MB hello-world latest fce289e99eb9 13 months ago 1.84kB
启动容器
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
[root@localhost ~]# docker run -it ubuntu /bin/bash root@b5ebd079a17a:/#
参数说明:
- -i: 交互式操作。
- -t: 终端。
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入exit
:
root@de4f1201e994:/# exit exit [root@localhost ~]#
启动已停止运行的容器
查看所有的容器命令如下:
docker ps -a
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de4f1201e994 ubuntu "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago eager_agnesi [root@localhost ~]#
使用 docker start 启动一个已停止的容器:
[root@localhost ~]# docker start de4f1201e994 de4f1201e994
查看:status
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de4f1201e994 ubuntu "/bin/bash" 7 minutes ago Up 2 minutes eager_agnesi
已启动!
后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过
-d指定容器的运行模式
docker run -itd --name ubuntu-test ubuntu /bin/bash。
[root@localhost ~]# docker run -itd --name ubuntu-test ubuntu /bin/bash ba63444432b4a0218dd6566a62724c85bb492664600c3d00c7e72f37817dd6be [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba63444432b4 ubuntu "/bin/bash" 40 seconds ago Up 39 seconds ubuntu-test
停止一个容器
停止容器的命令如下:
docker stop <容器 ID>
[root@localhost ~]# docker stop ba63444432b4 ba63444432b4 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba63444432b4 ubuntu "/bin/bash" 3 minutes ago Exited (0) 3 seconds ago ubuntu-test
停止的容器可以通过 docker restart 重启:
docker restart <容器 ID>
[root@localhost ~]# docker restart ba63444432b4 ba63444432b4 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba63444432b4 ubuntu "/bin/bash" 4 minutes ago Up 3 seconds ubuntu-test
进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach或者
docker exec
- docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
- docker attach: 该命令会导致容器停止,而且该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
下面演示了使用 docker attach 命令。
[root@localhost ~]# docker attach ba63444432b4 root@ba63444432b4:/# exit exit [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba63444432b4 ubuntu "/bin/bash" 8 minutes ago Exited (0) 3 seconds ago ubuntu-test
注意: 如果从这个容器退出,会导致容器的停止。
docker exec的用法
docker exec -it <容器 ID> /bin/bash
[root@localhost ~]# docker exec -it ba63444432b4 /bin/bash root@ba63444432b4:/# exit exit [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba63444432b4 ubuntu "/bin/bash" 18 minutes ago Up 39 seconds ubuntu-test
导出和导入容器
导出容器
如果要导出本地某个容器,可以使用
docker export命令。
[root@localhost ~]# docker export ba63444432b4 > ubuntu.tar [root@localhost ~]# ll total 65036 -rw-------. 1 root root 1569 Feb 13 15:11 anaconda-ks.cfg -rw-rw-r--. 1 root root 13216 Feb 16 22:16 get-docker.sh -rw-rw-r--. 1 root root 66572800 Feb 17 19:43 ubuntu.tar
这样将导出容器快照到本地文件。
导入容器快照
可以使用
cat <容器快照> | docker import - <镜像名称 >:<版本>从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
[root@localhost docker]# cat ./ubuntu.tar | docker import - test/ubuntu:v1 sha256:ae30cd63ebe33cf2e0673f5afd94b922957f87439ef306275fe0b93280d3df3d [root@localhost docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v1 ae30cd63ebe3 7 seconds ago 64.2MB
此外,也可以通过指定 URL 或者某个目录来导入,例如:
docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器
删除容器使用
docker rm -f <容器 ID>命令:
[root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba63444432b4 ubuntu "/bin/bash" 3 hours ago Up 3 hours ubuntu-test de4f1201e994 ubuntu "/bin/bash" 4 hours ago Exited (0) 3 hours ago eager_agnesi b5ebd079a17a ubuntu "/bin/bash" 4 hours ago Exited (0) 4 hours ago serene_pare [root@localhost docker]# docker rm -f ba63444432b4 ba63444432b4 [root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de4f1201e994 ubuntu "/bin/bash" 4 hours ago Exited (0) 3 hours ago eager_agnesi b5ebd079a17a ubuntu "/bin/bash" 4 hours ago Exited (0) 4 hours ago serene_pare [root@localhost docker]#
清理掉所有处于终止状态的容器
docker container prune。
运行一个 web 应用
前面我们运行的容器并没有一些什么特别的用处。
接下来让我们尝试使用 docker 构建一个 web 应用程序。
我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。
[root@localhost docker]# docker pull training/webapp Using default tag: latest latest: Pulling from training/webapp e190868d63f8: Already exists 909cd34c6fd7: Already exists 0b9bfabab7c1: Already exists a3ed95caeb02: Already exists 10bbbc0fc0ff: Already exists fca59b508e9f: Already exists e7ae2541b15b: Already exists 9dd97ef58ce9: Already exists a4c1b0cb7af7: Already exists Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d Status: Image is up to date for training/webapp:latest
查看载入镜像
[root@localhost docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest ccc6e87d482b 4 weeks ago 64.2MB training/webapp latest 6fae60ef3446 4 years ago 349MB
启动;
[root@localhost docker]# docker run -d -P training/webapp python app.py fc8edb0714ee6c31d9f261761756ed81cca7107216ebc76edbf26ff5b46987e9 [root@localhost docker]#
参数说明:
- -d:让容器在后台运行。
- -P:将容器内部使用的网络端口映射到我们使用的主机上
查看 WEB 应用容器
使用 docker ps 来查看我们正在运行的容器:
[root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fc8edb0714ee training/webapp "python app.py" 4 minutes ago Up 4 minutes 0.0.0.0:32769->5000/tcp cocky_proskuriakova [root@localhost docker]#
这里多了端口信息
0.0.0.0:32769->5000/tcp
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。
这时我们可以通过浏览器访问WEB应用
我们也可以通过 -p 参数来设置不一样的端口:
[root@localhost docker]# docker run -d -p 5000:5000 training/webapp python app.py bd3cfd7c1f3a4a4cc1c124b08951438d8a3086fddfa5631572225c618315e413 [root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd3cfd7c1f3a training/webapp "python app.py" 17 seconds ago Up 15 seconds 0.0.0.0:5000->5000/tcp inspiring_brown fc8edb0714ee training/webapp "python app.py" 13 minutes ago Up 13 minutes 0.0.0.0:32769->5000/tcp cocky_proskuriakova [root@localhost docker]#
容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
网络端口的快捷方式
通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。
上面我们创建的 web 应用容器 ID 为 bd3cfd7c1f3a 名字为 inspiring_brown。
我可以使用 docker port bd3cfd7c1f3a 或 docker port inspiring_brown 来查看容器端口的映射情况。
[root@localhost docker]# docker port bd3cfd7c1f3a 5000/tcp -> 0.0.0.0:5000 [root@localhost docker]# docker port inspiring_brown 5000/tcp -> 0.0.0.0:5000 [root@localhost docker]#
查看 WEB 应用程序日志
docker logs [ID或者名字]可以查看容器内部的标准输出。
[root@localhost docker]# docker logs bd3cfd7c1f3a * Running on http://0.0.0.0
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
从上面,我们可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。
查看WEB应用程序容器的进程
我们还可以使用
docker top来查看容器内部运行的进程
root@localhost docker]# docker top bd3cfd7c1f3a UID PID PPID C STIME TTY TIME CMD root 17700 17688 0 22:06 ? 00:00:00 python app.py [root@localhost docker]# docker top inspiring_brown UID PID PPID C STIME TTY TIME CMD root 17700 17688 0 22:06 ? 00:00:00 python app.py [root@localhost docker]#
检查 WEB 应用程序
使用
docker inspect来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
[root@localhost docker]# docker inspect inspiring_brown [ { "Id": "bd3cfd7c1f3a4a4cc1c124b08951438d8a3086fddfa5631572225c618315e413", "Created": "2020-02-17T14:06:42.550983374Z", "Path": "python", "Args": [ "app.py" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 17700, "ExitCode": 0, "Error": "", "StartedAt": "2020-02-17T14:06:43.28436184Z", "FinishedAt": "0001-01-01T00:00:00Z" }, ......
停止 WEB 应用容器
[root@localhost docker]# docker stop inspiring_brown inspiring_brown [root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd3cfd7c1f3a training/webapp "python app.py" 19 minutes ago Exited (137) 31 seconds ago inspiring_brown
重启WEB应用容器
已经停止的容器,我们可以使用命令
docker start来启动。
[root@localhost docker]# docker start inspiring_brown inspiring_brown [root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd3cfd7c1f3a training/webapp "python app.py" 21 minutes ago Up 2 seconds 0.0.0.0:5000->5000/tcp inspiring_brown
docker ps -l查询最后一次创建的容器:
[root@localhost docker]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd3cfd7c1f3a training/webapp "python app.py" 22 minutes ago Up About a minute 0.0.0.0:5000->5000/tcp inspiring_brown
正在运行的容器,我们可以使用
docker restart命令来重启。
移除WEB应用容器
我们可以使用
docker rm -f命令来删除不需要的容器
[root@localhost docker]# docker rm -f inspiring_brown inspiring_brown [root@localhost docker]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fc8edb0714ee training/webapp "python app.py" 39 minutes ago Up 39 minutes 0.0.0.0:32769->5000/tcp cocky_proskuriakova
至此docker容器的使用实测教程已完成,
原文依照菜鸟教程进行实测;https://www.runoob.com/docker/docker-container-usage.html 如有疑问请联系删除
附:命令干货
启动停止
service docker start //启动docker后台服务 systemctl start docker systemctl restart docker systemctl status docker systemctl stop docker systemctl enable docker //开机自动启动 docker info//概要信息 docker --help
镜像常用命令
docker images --查看镜像 //Resposity:镜像名称 Tag:镜像标签 IMAGE ID :镜像ID CREATED : 镜像的创建日期 //这些镜像都是存储在Docker宿主机的/var/lib/docker目录下 docker search 镜像名称 --搜索镜像 //Stars:用户评价 AutoMated:自动构建,表示该镜像由DockerHub自动构建流程创建的 docker pull ** --拉取镜像 docker rmi 镜像ID --按镜像id删除镜像 docker rmi `dockers images -q` --删除所有镜像
容器相关命令
查看容器
在这里插入代码片
docker ps //查看正在运行的容器 docker ps -a //查看所有的容器 docker ps -l //查看最后一次运行的容器 docker ps -f status=exited //查看停止的容器
创建容器
交互式方式创建容器
docker run -it --name=myUuntu1 ubuntu:15.10 /bin/bash 创建之后直接进入该容器,exit退出后该容器也stop
守护式方式创建容器
docker run -di --name=myUuntu2 ubuntu:15.10 登录守护式容器方式: docker exec -it 容器名称(或容器ID) /bin/bash 创建之后就算exit退出,该容器也是up
文件拷贝
宿主机文件导入到容器 docker cp 需要拷贝的文件或目录 容器名称:容器目录 导出到宿主机文件 docker cp 容器名称:容器目录/文件 本地文件名字
目录挂载
对宿主机目录:容器目录 进行映射,这样可通过修改宿主机目录来修改容器目录 用法: -v (是目录映射) 宿主机目录:容器目录 docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=myUuntu3 ubuntu:15.10 --privileged=true来解决挂载的目录无权限问题
查看容器ip地址
docker inspect 容器名称(或容器ID) docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(或容器ID)
删除容器
docker rm 容器名称(或容器ID)
各种软件的部署
Tomcat部署
1. 拉取镜像 docker pull tomcat:7-jre7 2. 创建容器 -p :表示地址映射调用 宿主9001端口操作容器端口8080 -v :目录映射 通过将文件上传的宿主文件并且映射到容器对应的文件中 -i :以交互模式运行容器 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用 -d :后台运行容器,并返回容器ID docker run -di --name=Mytomcat -p 9001:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
nginx
docker pull nginx docker run -di --name=mynginx -p 80:80 nginx
Redis
docker pull Redis docker run -di --name=myRedis -p 6379:6379 redis
迁移与备份
容器保存为镜像
docker commit mytomcat mytomcat_i
镜像备份
将镜像保存为tar文件
docker save -o mytomcat.tar mytomcat_i
镜像恢复与迁移
删除mytomcat_img后执行以下命令
docker load -i mytomcat.tar
zookeeper
#拉取zk镜像 docker pull zookeeper:3.5 #创建容器 docker create --name zk -p 2181:2181 zookeeper:3.5 #启动容器 docker start zk
mysql+配置文件映射
传送门:Linux安装MySQL5.7 (docker安装方式)
注:
干货内容来源博文:https://blog.csdn.net/cnoneo/article/details/102790550 如有疑问请联系删除!
- 点赞
- 收藏
- 分享
- 文章举报
- Docker镜像和容器相关命令
- 干货,docker私有仓库registry使用oss存储,附registry镜像上传、查询及删除命令
- 使用Docker网络相关的命令管理容器
- Docker | 学习系列 (四)Docker镜像常用命令使用教程
- Docker中镜像构建文件Dockerfile与相关命令的详细介绍
- docker容器相关命令
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- docker实战1 (docker-toolbox的安装,docker基础命令详解[运行,容器导入/导出,镜像导入/导出,数据卷,网络],构建100个docker实例的测试环境)
- 使用Dockerfile创建支持ssh服务自启动的容器镜像
- Git命令的使用_操作远程仓库——详细教程3
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker 中 openjdk 容器里无法使用 JDK 的 jmap 等命令的问题
- docker实战之centos6.5上安装、镜像、容器相关操作
- Docker镜像与容器命令(转)
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker镜像、容器的理解和使用方法
- ajax使用教程——ajax使用方法及相关知识点详细解析
- windows10中使用docker命令启动Ubuntu容器
- Docker相关知识<Docker镜像常用命令>
- BCM的机器,使用DDWRT的内置命令来刷CFE详细教程,省得用JTAG或编程器的麻烦