首页 > 系统相关 >Docker在ubuntu下的安装和使用

Docker在ubuntu下的安装和使用

时间:2023-01-04 13:23:21浏览次数:48  
标签:bin 容器 ago demo ubuntu Docker 安装 docker

---------------------------容器安装与验证---------------------------

安装参考: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/versionls分别查看当前系统的版本信息和当前目录下的文件列表

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

相关文章