---------------------------容器安装与验证---------------------------
安装参考:https://www.runoob.com/docker/ubuntu-docker-install.html
安装是否安装验证:$ sudo docker run hello-world 或者 docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
demo@demo:~$ sudo docker run hello-world Hello from Docker!............... For more examples and ideas, visit: https://docs.docker.com/get-started/
demo@demo:~$ docker run ubuntu:15.10 /bin/echo "Hello world" Hello world Status: Downloaded newer image for ubuntu:15.10 Hello world
各个参数解析:
-
docker: Docker 的二进制执行文件。
-
run: 与前面的 docker 组合来运行一个容器。
-
ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
-
/bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
docker帮助
docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。
demo@demo:~$ docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/home/keqin/.docker") -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use") ...... Run 'docker COMMAND --help' for more information on a command. To get more help with docker, check out our guides at https://docs.docker.com/go/guides/
可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如我们要查看 docker stats 指令的具体使用方法:
demo@demo:~$ 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 ......
---------------------------运行与退出---------------------------
运行交互式容器:
我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
demo@demo:~$sudo docker run -i -t ubuntu:15.10 /bin/bash root@0123ce188bd8:/#
各个参数解析:
-
-t: 在新容器内指定一个伪终端或终端。
-
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。
-
ubuntu:15.10 15.10是ubuntu镜像的一个tag
注意第二行 root@0123ce188bd8:/#,此时我们已进入一个 ubuntu15.10 系统的容器
我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表
root@3378b0f38837:/# cat /proc/version Linux version 5.4.0-135-generic (buildd@lcy02-amd64-066) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022 root@3378b0f38837:/# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr root@3378b0f38837:/#
退出交互式容器:
我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。
root@0123ce188bd8:/# exit exit demo@demo:~$
后台模式启动容器:
demo@demo:~$ sudo docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
在输出中,我们没有看到期望的 "hello world",而是一串长字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。
首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a8944dccd3d ubuntu:15.10 "/bin/sh -c 'while t…" 6 minutes ago Up 6 minutes elegant_napier
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
- created(已创建)
- restarting(重启中)
- running 或 Up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
在宿主主机内使用 docker logs [容器ID/${NAMES} ] 命令,查看容器内的标准输出:
demo@demo:~$ docker logs 2b1b7a428627 hello world ......
demo@demo:~$ docker logs elegant_napier hello world ......
停止容器:
可以使用 [docker stop + ${NAMES} /容器ID] 来停止一个容器。
demo@demo:~$ docker stop amazing_cori
demo@demo:~$ docker stop 2b1b7a428627
---------------------------镜像Image---------------------------
获取镜像
如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:
demo@demo:~$ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 6e3729cf69e0: Pull complete Digest: sha256:27cb6e6ccef575a4698b66f5de06c7ecd61589132d5a91d098f7f3f9285415a9 Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest
运行镜像
demo@demo:~$ docker run -it ubuntu /bin/bash root@23516e1ead71:/#
参数说明:
- -i: 交互式操作。
- -t: 终端。
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
查看所有容器状态:
demo@demo:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bf8f02b18927 ubuntu "/bin/bash" 43 seconds ago Exited (127) 29 seconds ago infallible_borg 2a8944dccd3d ubuntu:15.10 "/bin/sh -c 'while t…" 16 hours ago Exited (137) 32 minutes ago elegant_napier 4aa275de020a ubuntu:15.10 "/bin/echo 'Hello wo…" 16 hours ago Exited (0) 16 hours ago recursing_lehmann 24154461d166 hello-world "/hello" 17 hours ago Exited (0) 17 hours ago goofy_perlman
启动一个已经停止的容器 [docker start + ${NAMES} /容器ID] :
demo@demo:~$ docker start recursing_lehmann
recursing_lehmann
后台运行容器
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
demo@demo:~$ docker run -itd --name ubuntu-test ubuntu /bin/bash
停止或者重启容器
docker stop <容器 ID> / docker restart <容器 ID>
进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:docker attach [imageID/ImageName]
demo@demo:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecadd468c6ac ubuntu "/bin/bash" 17 minutes ago Up 17 minutes ubuntu-test 08603f632822 ubuntu "/bin/bash" 18 minutes ago Up 18 minutes ubuntu demo@demo:~$ docker attach ecadd468c6ac root@ecadd468c6ac:/#
注意: 如果从这个容器退出,会导致容器的停止。
exec 命令
下面演示了使用 docker exec 命令。
demo@demo:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 08603f632822 ubuntu "/bin/bash" 27 minutes ago Up 27 minutes ubuntu demo@demo:~$ docker exec -it 08603f632822 /bin/bash root@08603f632822:/#
注意: 如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因。更多参数说明请使用 docker exec --help 命令查看。
导出导入容器
导出容器:
导出容器快照
如果要导出本地某个容器,可以使用 docker export 命令。
demo@demo:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 08603f632822 ubuntu "/bin/bash" 30 minutes ago Up 30 minutes ubuntu demo@demo:~$ docker export 08603f632822 > docker_ubuntu.tar demo@demo:~$ ls -l docker_buntu.tar -rw-rw-r-- 1 demo demo 80321536 1月 4 11:05 docker_ubuntu.tar
导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 docker_ubuntu.tar 导入到镜像 test/ubuntu:v1:
demo@demo:~$ cat ./docker_buntu.tar | docker import - test/ubuntu:v1 sha256:799665d955ad907098774a70f6a60e343ea9c5b34c634856278e71f219ff4896
demo@demo:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/ubuntu v1 799665d955ad 2 minutes ago 77.8MB
<none> <none> f25418f9c7f0 2 minutes ago 0B
<none> <none> c3c6c1e78845 2 minutes ago 0B
ubuntu latest 6b7dfa7e8fdb 3 weeks ago 77.8MB
hello-world latest feb5d9fea6a5 15 months ago 13.3kB
ubuntu 15.10 9b9cb95443b5 6 years ago 137MB
demo@demo:~$
此外,也可以通过指定 URL 或者某个目录来导入,例如:
demo@demo:~$ docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器
删除容器使用 docker rm 命令,docker rm -f 可以强制删除处于运行状态的容器。
demo@demo:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecadd468c6ac ubuntu "/bin/bash" 44 minutes ago Exited (0) 24 minutes ago ubuntu-test 08603f632822 ubuntu "/bin/bash" 45 minutes ago Up 45 minutes ubuntudemo@demo:~$ docker rm ecadd468c6ac ecadd468c6ac
下面的命令可以清理掉所有处于终止状态的容器。
$ docker container prune
标签:bin,容器,ago,demo,ubuntu,Docker,安装,docker From: https://www.cnblogs.com/wangkeqin/p/17023085.html