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