第四章:操作Docker容器

2017-08-03  本文已影响0人  xrichardyan

4.1创建容器

1.新建容器

$ docker create -it ubuntu:latest    # 创建一个ubuntu:latest容器
$ docker ps -a    # 查看所有容器

2.启动容器

$ docker start dd    # 启动容器  dd为容器的ID简写(同下面)
$ docker ps    # 查看运行中的容器

3.新建并启动容器

$ docker run ubuntu /bin/echo 'Hello World!'    # run = create +start

4.守护态运行(后台运行)

添加 -d 参数来实现

$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world;  sleep 1; done"

此时,要获取容器的输出信息,可以使用:

$ docker logs dd    # 获取dd进程的日志

4.2终止容器

$ docker stop dd    # 终止dd容器

查看所有容器的ID

$ docker ps -pa    # 查看所有容器的ID

启动&重新启动

$ docker start dd    # 将一个终止的容器重新启动
$ docker restart dd    # 将一个运行态的容器先终止,然后重新启动它

4.3进入容器

1.attach命令

$ docker run -itd ubuntu    # 启动守护态进程
7417a1e8c07ffa3f69d335a837390578c420862576d752144901a4cf89f5683b
$ docker ps    # 查看进程中的容器
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
7417a1e8c07f        ubuntu              "/bin/bash"         About a minute ago   Up About a minute                       sad_leavitt
$ docker attach 7417a1e8c07f    # 进入容器 此时可与容器交互
root@7417a1e8c07f:/# 

2.exec命令

例如进入上面创建的容器

$ docker exec -it 7417a1e8c07f /bin/bash
root@7417a1e8c07f:/# 

4.4删除容器

$ docker rm dd    # dd 为容器ID简写

默认情况下,docker rm命令只能删除处于终止状态或退出状态的容器,不能删除处于运行状态的容器。
如果要直接删除一个运行中的容器,可以添加 -f 参数强制删除。(Docker会先发送SIGKILL信号给容器,终止其中的应用,之后强制删除,如下所示:

$ docker run -itd ubuntu    # 先开始一个守护态进程
90991da80cbed20c8bf23c2ba35d69053581708947c6a514bd18917ac8d23b66
$ docker rm 90991da80cbe    # 如果直接删除会出现报错
Error response from daemon: You cannot remove a running container 90991da80cbed20c8bf23c2ba35d69053581708947c6a514bd18917ac8d23b66. Stop the container before attempting removal or force remove
$ docker rm -f 90991da80cbe    #添加-f参数强制删除
90991da80cbe

4.5导入和导出容器

1.导出容器

$ docker ps -a    # 查看所有容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
e697625ef19c        ubuntu              "/bin/bash"         2 hours ago         Up 2 hours                                   reverent_jones
7417a1e8c07f        ubuntu              "/bin/bash"         2 hours ago         Exited (0) 2 hours ago                       sad_leavitt
$ sudo docker export -o test_end.tar 741    # 通过 -o 选项来指定导出的tar文件名
$ ls
test_end.tar 
$ docker export e69 >test_run.tar    #另一种方法
$ ls
test_run.tar    test_end.tar

之后,可将导出的tar文件传输到其他机器上,然后再通过导入命令导入到系统中,从而实现容器的迁移。

2.导入容器

$ docker import test_run.tar  test/ubuntu:v1.0    # 导入test_run.tar并添加标签
sha256:d1cea21eca71b8e287289cf78d0afbe0a7378b1704b03b5b9bcdd4d10470ec21
$ docker images    # 查看镜像
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
test/ubuntu          v1.0                d1cea21eca71        8 seconds ago       97.8MB

docker import 类似于 docker load

上一篇下一篇

猜你喜欢

热点阅读