Docker容器的使用

Docker容器的使用

获取镜像

比如获取ubuntu镜像

docker pull ubuntu

启动容器

拉取镜像后,可以根据镜像启动一个docker容器。

docker run -itd ubuntu /bin/bash

参数:

查看容器

# 查看所有容器
docker ps -a
# 查看运行的容器
docker ps

停止一个容器

docker stop 容器id

重启一个容器

docker restart 容器id

进入容器

使用-d参数运行的容器,会进入后台运行,要想进入,则通过以下命令:

$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS              PORTS     NAMES
3ff6bfbfe6ba   ubuntu    "/bin/bash"   12 minutes ago   Up About a minute             elastic_wing
$ docker attach 3ff6bfbfe6ba
# exit
exit
$ docker ps # 退出后容器3ff6bfbfe6ba停止
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$ docker start 3ff6bfbfe6ba
3ff6bfbfe6ba
$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
3ff6bfbfe6ba   ubuntu    "/bin/bash"   13 minutes ago   Up 5 seconds             elastic_wing
$ docker exec -it 3ff6bfbfe6ba /bin/bash
# exit
exit
$ docker ps # 从终端退出后容器3ff6bfbfe6ba仍然在运行
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
3ff6bfbfe6ba   ubuntu    "/bin/bash"   14 minutes ago   Up 40 seconds             elastic_wing

导出容器快照

将指定的容器(运行中和非运行中的容器均可)快照到本地文件:

docker export 容器id > 文件.tar
~$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
3ff6bfbfe6ba   ubuntu    "/bin/bash"   23 minutes ago   Up 9 minutes             elastic_wing
~$ docker export 3ff6bfbfe6ba > ubuntu.tar
~$ ls
bin  Desktop  Documents  Downloads  Music  opt  Pictures  Public  Templates  ubuntu.tar  Videos
~$ docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED             STATUS                         PORTS     NAMES
3ff6bfbfe6ba   ubuntu        "/bin/bash"   23 minutes ago      Up 10 minutes                            elastic_wing
837b70896597   hello-world   "/hello"      About an hour ago   Exited (0) About an hour ago             beautiful_tharp
1210b15edfff   hello-world   "/hello"      About an hour ago   Exited (0) About an hour ago             confident_maxwell
64aca3d676e4   hello-world   "/hello"      About an hour ago   Exited (0) About an hour ago             heuristic_wiles
~$ docker export 837b70896597 > hello-word.tar
~$ ls
bin  Desktop  Documents  Downloads  hello-word.tar  Music  opt  Pictures  Public  Templates  ubuntu.tar  Videos

导入容器快照

从容器快照文件中导入为镜像。

docker import 快照文件 镜像

也可以通过指定URL来导入。
例如:

~$ docker images # 存在的镜像
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    e34e831650c1   2 weeks ago    77.9MB
hello-world   latest    d2c94e258dcb   9 months ago   13.3kB
~$ ls
bin  Desktop  Documents  Downloads  hello-word.tar  Music  opt  Pictures  Public  Templates  ubuntu.tar  Videos
~$ docker import ubuntu.tar test/ubuntu:v1 # 从容器快照文件导入镜像
sha256:05443cf468db19a51a0436ae626a15fdfa07f13bbe7439f2cf9a61a8a0a5560b
~$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
test/ubuntu   v1        05443cf468db   7 seconds ago   0B
ubuntu        latest    e34e831650c1   2 weeks ago     77.9MB
hello-world   latest    d2c94e258dcb   9 months ago    13.3kB
~$

删除容器

删除指定id的容器。

docker rm -f 容器id

清理所有处于终止状态的容器。

docker container prune

查看容器的端口映射

docker port 容器id

查看容器的运行日志

docker log -f 容器id

查看容器内部运行的进程

docker top 容器id

查看容器的配置和状态信息

docker inspect 容器id

会返回一个记录容器配置和状态信息的json文件。