启动容器相关操作:
运行一个容器
# 运行容器,并再容器运行后执行pwd命令
root@jyq-virtual-machine:/# docker run ubuntu pwd
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
Digest: sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Status: Downloaded newer image for ubuntu:latest
/ # pwd命令的输出
# 容器桩体为exited,说明容器已经退出停止
root@jyq-virtual-machine:/# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
410e5ec23e74 ubuntu "pwd" 8 seconds ago Exited (0) 7 seconds ago upbeat_leakey
在后台运行一个容器
为了保证提供服务,不能让容器运行后立马退出,所以需要使容器保持常时间运行
运行容器时使用-d参数可以使容器在后台一直处于运行状态
root@jyq-virtual-machine:/# docker run -d ubuntu /bin/bash -c 'while true; do sleep 1; done'
0346f58ef16c493be70ff0bc1a29e3c960d587210ea53bd669bcfdfb6ef4bfcd
root@jyq-virtual-machine:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0346f58ef16c ubuntu "/bin/bash -c 'while…" 6 seconds ago Up 5 seconds eloquent_jennings
启动操作系统后必须执行一个可以一直运行的程序,不然即使使用-d参数,操作系统因为没有运行的任务状态将为created,看不出up的状态。
查看容器运行时执行的历史命令
注意:history 后面必须是镜像的名称,而不是容器的id
root@jyq-virtual-machine:/# docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
47b19964fb50 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 weeks ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B
<missing> 3 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0B
<missing> 3 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 745B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:529264c6593975a61… 88.1MB
启动容器时给容器命名:
使用--name 参数在容器启动时给容器命名一个自己容易识别的名称:
root@jyq-virtual-machine:/# docker run --name my-web -d -p 8081:80 httpd
a4eee9b6872928748847db3637cc4087cf5a7db7c91dac609e8c68264abcc101
root@jyq-virtual-machine:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4eee9b68729 httpd "httpd-foreground" 5 seconds ago Up 5 seconds 0.0.0.0:8081->80/tcp my-web
停止一个容器:
docker stop [长ID|短ID|name]
- 可以使用容器的长id
容器启动时输出的ID
root@jyq-virtual-machine:/# docker run --name my-web -d -p 8081:80 httpd
a4eee9b6872928748847db3637cc4087cf5a7db7c91dac609e8c68264abcc101
- 使用短ID:
使用ps名称查看容器运行状态时的container id 哪一行
root@jyq-virtual-machine:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4eee9b68729 httpd "httpd-foreground" 5 seconds ago Up 5 seconds 0.0.0.0:8081->80/tcp my-web
- 使用容器名称,在启动容器时使用--name指定的名称
root@jyq-virtual-machine:/# docker stop a4eee9b68729
a4eee9b68729
root@jyq-virtual-machine:/# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4eee9b68729 httpd "httpd-foreground" 6 minutes ago Exited (0) 8 seconds ago my-web
怎么进入一个已经运行的容器:
- 使用attach命令
- 使用exec -it 命令
attach 和exec的区别:
- attach 会直接连接到系统已经启动的虚拟终端中,可以产看到系统正常运行任务的输出;
- exec -it 将会重新启动一个进程来启动虚拟终端,不能看到系统正在运行任务的输出;
- 可以使用docker logs -f container 查看运行容器的输出;
容器运行分类:
- 服务类容器,需要一致运行以提供一种服务:
使用 -d 参数运行容器 - 工具类容器,只是作为测试或者调试的一种工具使用:
使用 -it交互的方式启动容器,退出后容器也自动退出
停止容器、启动容器和重启容器:
- stop
停止容器 - start
启动容器 - restart
重置容器,就是先使用stop停止容器,然后使用start启动容器 - 容器启动时使用 --reatart=always 时容器能够停止后能够自动启动
容器的挂起和解除挂起
- pause
如果需要做容器快照或者释放主机cpu可以先将容器挂起; - unpause
将一个已经挂起的容器重新启用
删除容器:
- rm
将已经处于exited的容器删除,以释放主机资源。
创建容器和启动容器:
- 先使用create命令
可以使用create命令先创建容器,被创建的容器处于created状态 - 然后使用start明确启动已经创建的容器
run命令其实是以上命令的集合
网友评论