Docker容器的使用

Docker

3、Docker 容器使用

3.1、Docker Hello World

Docker允许你在容器内运行应用程序,使用docker run来执行

root@ubuntu:~# docker run ubuntu:15.10 /bin/echo "Hello world"
Unable to find image 'ubuntu:15.10' locally
15.10: Pulling from library/ubuntu
7dcf5a444392: Pull complete 
759aa75f3cee: Pull complete 
3fa871dc8a2b: Pull complete 
224c42ae46e7: Pull complete 
Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3
Status: Downloaded newer image for ubuntu:15.10
Hello world
root@ubuntu:~# docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world

参数解析:

  • docker:docker的二进制执行文件
  • run:与前面的docker组合来运行一个容器
  • ubuntu:15.10:指定要运行的镜像,Docker首先从本地主机查找镜像是否存在,如不存在,就会从Docker Hub下载公共镜像
  • /bin/echo "Hello World":在容器里执行的命令

3.2、运行交互式容器

我们通过docker的两个参数-i,-t,让容器来实现对话功能

root@ubuntu:~# docker run -i -t ubuntu:15.10 /bin/bash
# 下面已经进入了一个伪终端
root@f42c77dbb2fa:/# 
root@f42c77dbb2fa:/# echo "Hello World"
Hello World
# 可以使用过exit或者ctrl+D来退出容器
root@f42c77dbb2fa:/# exit
exit

参数解析:

  • -i:运行你对容器内的标准输入(stdin)进行交互
  • -t:在新的容器内指定一个伪终端或者终端

3.3、后台启动容器

root@ubuntu:~#  docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
eb9734c0902601583f3b5c9dc4925f97511a4250478b2463dc124642c07a4cba

-d:使用-d,容器启动后就会进入后台

在输出中,并没有看到期望的hello world,而是一串长字符

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应容器发生了什么。

首先,需要确认容器是否在运行,可以通过docker ps来查看

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
eb9734c09026        ubuntu:15.10        "/bin/sh -c 'while t…"   10 seconds ago      Up 8 seconds                            fervent_shirley
root@ubuntu:~# docker ps -a          # 查看包括已经停止的容器
# 其他命令
root@ubuntu:/# docker container ls
root@ubuntu:/# docker container ls -a

输出详情介绍:

  • CONTAINER ID: 容器 ID。

  • IMAGE: 使用的镜像。

  • COMMAND: 启动容器时运行的命令。

  • CREATED: 容器的创建时间。

  • STATUS: 容器状态。

状态有7种:

created(已创建)、restarting(重启中)、running(运行中)、removing(迁移中)、paused(暂停)、exited(停止)、dead(死亡)

  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

  • NAMES: 自动分配的容器名称。

查看容器内的标准输出

root@ubuntu:~# docker logs eb9734c09026
root@ubuntu:~# docker logs fervent_shirley

进入后台容器:

root@ubuntu:~# docker exec -it bda74af4ab81 /bin/bash
[root@bda74af4ab81 /]# exit
exit
root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
bda74af4ab81        centos              "/bin/bash"         20 minutes ago      Up 8 minutes                            focused_lalande
root@ubuntu:~# docker attach bda74af4ab81
[root@bda74af4ab81 /]# exit
exit
root@ubuntu:~# docker ps

这两种进入后台容器的方式,推荐使用docker exec,在退出后不会导致容器停止,而docker attach方式退出会导致容器停止。

3.4、停止容器

root@ubuntu:~# docker stop eb9734c09026
root@ubuntu:~# docker stop fervent_shirley

3.5、启动停止运行的容器

root@ubuntu:~# docker start bda74af4ab81

3.6、导入和导出容器

导出容器

如果要导出本地某个容器,可以使用docker export命令

root@ubuntu:~# docker export c15c24c961f5 > centos.tar
root@ubuntu:~# ls
centos.tar

导入容器快照

将容器快照文件导入为镜像,可以使用docker import命令

root@ubuntu:~# cat centos.tar | docker import - test/centos:v1
sha256:c44bca37b1407d679f5086a32627c16aa1bd6ed73dad9332849c9f74940ca844

也可以通过URL或者某个目录来导入

root@ubuntu:/# docker import http://example.com/exampleimage.tgz example/imagerepo

3.7、删除容器

删除容器使用docker rm命令

root@ubuntu:/# docker rm -f 7a82e57d3e1c
7a82e57d3e1c

下面的命令可以清理掉所有处于终止状态的容器

root@ubuntu:/# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

3.8、容器管理命令

root@ubuntu:/# docker container --help

Usage:	docker container COMMAND

Manage containers

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers
  logs        Fetch the logs of a container
  ls          List containers
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  prune       Remove all stopped containers
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  run         Run a command in a new container
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值