初识Docker(二)

xiaoxiao2021-02-28  128

操作容器

创建并运行容器

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信号强行终止容器

进入容器

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

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

nsenter工具

导入和导出容器

导出容器

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

导入容器

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

转载请注明原文地址: https://www.6miu.com/read-23377.html

最新回复(0)