初识Docker(二)

操作容器

创建并运行容器

stormfast@ubuntu:~$ docker create -it ubuntu:14.04
7ce6ec5c3a8a0156d4ddc74938d1f325f53466f01d3c322551799bc6e6c79846
stormfast@ubuntu:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
7ce6ec5c3a8a        ubuntu:14.04        "/bin/bash"         8 seconds ago       Created                                      confident_kirch
99cd2ed8fe20        ubuntu:14.04        "/bin/bash"         2 hours ago         Exited (0) 2 hours ago                       vibrant_edison
stormfast@ubuntu:~$ docker start 7ce
7ce
stormfast@ubuntu:~$ 
stormfast@ubuntu:~$ 
stormfast@ubuntu:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
7ce6ec5c3a8a        ubuntu:14.04        "/bin/bash"         2 minutes ago       Up About a minute                            confident_kirch
99cd2ed8fe20        ubuntu:14.04        "/bin/bash"         2 hours ago         Exited (0) 2 hours ago                       vibrant_edison

注意:容器刚创建时处于停止状态,我们可以使用start命令启动

新建并运行容器

我们可以使用docker run 命令直接新建并启动容器

stormfast@ubuntu:~$ docker run ubuntu:14.04 /bin/echo 'hello world'
hello world

docker执行run命令背后的执行了一系列的标准操作:
1. 检查本地是否存在指定镜像,不存在就从公有仓库下载
2. 利用镜像创建一个容器,并启动该容器
3. 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读层
4. 从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中
5. 从网桥的地址池配置一个ip地址给容器
6. 执行用户的指定应用程序
7. 执行完毕后容器被自动终止

守护态运行容器
stormfast@ubuntu:~$ docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
9931b68874a48206a1865d7e5e02c53fa938f2beb697bc7e0624b2886e56cc7d
stormfast@ubuntu:~$ docker logs 9931
hello world
hello world
hello world
hello world

注意: 我们使用-d 让docker容器处于守护态(daemonized)形式运行,并使用docker logs命令获取容器输出信息

终止容器

我们可以使用docker stop [-t|–time[=10] container终止容器
默认情况下 会先给容器发送一个SIGTERM信号,等待超时时间后(默认10秒)会在发送一个SIGKILL信号终止容器

stormfast@ubuntu:~$ docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
9931b68874a4        ubuntu:14.04        "/bin/sh -c 'while..."   6 minutes ago       Up 6 minutes                                    adoring_hawking
6dab2dce48b8        ubuntu:14.04        "/bin/echo 'hello ..."   17 minutes ago      Exited (0) 17 minutes ago                       keen_lichterman
7ce6ec5c3a8a        ubuntu:14.04        "/bin/bash"              27 minutes ago      Up 26 minutes                                   confident_kirch
99cd2ed8fe20        ubuntu:14.04        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                          vibrant_edison
stormfast@ubuntu:~$ docker stop 9931
9931

注意:docker kill 命令会直接发送SIGKILL信号强行终止容器

进入容器

  1. attach命令

    docker attach[–detach-keys[=[]]][–no-stdin][–sig-proxy[=true]]container
    –detach-keys[=[]] 指定退出attach模式的快捷键,ctrl-p ctrl-q
    –no-stdin=true|false 是否关闭标准输入, 默认保持打开
    –sig-proxy=true|false 是否代理收到的系统信号给应用进程,默认为true

  2. exec命令

    docker exec [-d|–detach][–detach-keys[=[]]][-i|–interactive][–privileged][-t|–tty][-u|–user[=USER]] CONTAIN COMMAND [ARG…]
    -i 打开标准输入接受用户输入命令,默认false
    –privileged=true|false 是否给执行命令以高权限,默认false
    -t 分配伪终端,默认false
    -u 执行命令的用户名或者ID

  3. nsenter工具

导入和导出容器

  1. 导出容器

    docker export [-o|–output[=”“]] CONTAINER

  2. 导入容器

    docker import [-c|–changer[=[]]] [-m|–message[=MESSAGE]] file|URL|-[REPOSITORY[:TAG]]
    注意:这里的导入容器,最终是导入了一个镜像文件.那么这里的容器导入和镜像导入到底有什么不一样呢?
    容器快照文件将会丢弃所有的历史记录和元数据信息,体积相较于镜像导入文件要小.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值