Docker基础命令详解 – 镜像及容器操作

前言

​ 上篇文章介绍了CentOS /usr/bin/bash -c ls /
Unable to find image ‘centos:latest’ locally
latest: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4835176a7d8e centos “/usr/bin/bash -c ls…” About a minute ago Exited (0) About a minute ago affectionate_keldysh
a1a2e8468189 nginx:latest “/bin/bash” 28 minutes ago Up 17 minutes 80/tcp gallant_feynman

-c参数表示的是需要执行的命令,这种方式适用于一次执行,Exited (0) 表示正常正确退出,及终止运行。

docker run的命令执行流程为:先从本地查找镜像(本地没有image不表示容器不依赖image),如果没有会从公共仓库中下载;再通过镜像创建并且启动一个容器;分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;从宿主机配置的网桥接口中桥接一个虚拟接口到容器中;分配一个地址池中的IP地址给容器;执行用户指定的应用程序;执行之后容器被终止(后台运行除外)。

后台运行:run 后面加参数-d即可。

2、容器运行与终止

想要在运行中的容器停下来,使用docker stop 命令

命令格式:docker stop [OPTIONS] CONTAINER [CONTAINER…]

实例演示:

[root@docker ~]# docker stop a1a2e8468189
a1a2e8468189
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
4835176a7d8e        centos              "/usr/bin/bash -c ls…"   9 minutes ago       Exited (0) 9 minutes ago                       affectionate_keldysh
a1a2e8468189        nginx:latest        "/bin/bash"              36 minutes ago      Exited (0) 3 seconds ago                       gallant_feynman

3、容器的进入

想要进入容器进行相应操作时可以使用docker exec命令进入运行着的容器。

命令格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

[root@docker ~]# docker ps -a #检查容器是否是运行状态(up)
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
4835176a7d8e        centos              "/usr/bin/bash -c ls…"   12 minutes ago      Exited (0) 12 minutes ago                       affectionate_keldysh
a1a2e8468189        nginx:latest        "/bin/bash"              38 minutes ago      Up 4 seconds                80/tcp              gallant_feynman

[root@docker ~]# docker exec -it a1a2e8468189 /bin/bash #进入伪终端
root@a1a2e8468189:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

root@a1a2e8468189:/# exit #使用exit退出伪终端
exit
[root@docker ~]# 

4、容器的导出和导入

类似镜像,用户也可以将容器从一台机器迁移到另一台机器。在迁移过程中,首先需要将已经创建好的容器导出为文件,使用docker export实现,无论这个容器是处于运行状态还是停止状态均可以导出。导出之后可将导出文件传输到其他机器,通过对应的导入命令实现迁移过程。

容器导出命令:docker export

命令格式:docker export [OPTIONS] CONTAINER

实例演示:一个运行状态一个停止状态,都演示

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
4835176a7d8e        centos              "/usr/bin/bash -c ls…"   21 minutes ago      Exited (0) 21 minutes ago                       affectionate_keldysh
a1a2e8468189        nginx:latest        "/bin/bash"              48 minutes ago      Up 9 minutes                80/tcp              gallant_feynman

运行中的容器导出:

[root@docker ~]# docker export a1a2e8468189 > nginx_contain
[root@docker ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  nginx  nginx_contain  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@docker ~]# ll
总用量 253448
-rw-------. 1 root root      1954 4月   6 08:49 anaconda-ks.cfg
-rw-r--r--. 1 root root      2002 4月   6 08:50 initial-setup-ks.cfg
-rw-------. 1 root root 130618880 4月   6 14:04 nginx #镜像存出的文件
-rw-r--r--. 1 root root 128899072 4月   6 16:04 nginx_contain #容器导出文件 二者权限不同

终止的容器导出:

[root@docker ~]# docker export 4835176a7d8e > centos_contain
[root@docker ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  nginx_contain  模板  图片  下载  桌面
centos_contain   nginx                 公共           视频  文档  音乐

导出的文件从本地拷贝到远程服务器,之后使用docker import命令导入,成为镜像

容器导入命令:docker import

命令格式:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

实例演示:

[root@docker ~]# docker import centos_contain centos_new:54
sha256:f32b5354c81de72a71af50468d09803aa9e62e08741e3cd3e84c10c9a74e2204
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos_new          54                  f32b5354c81d        10 seconds ago      0B
nginx               latest              ed21b7a8aee9        6 days ago          127MB
centos              latest              470671670cac        2 months ago        237MB

或者使用cat 文件名 | docker import – 镜像名称:tag 执行命令也可以的

5、容器的删除

容器的删除:docker rm

命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER…]

实例演示:

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
4835176a7d8e        centos              "/usr/bin/bash -c ls…"   31 minutes ago      Exited (0) 31 minutes ago                       affectionate_keldysh
a1a2e8468189        nginx:latest        "/bin/bash"              58 minutes ago      Up 19 minutes               80/tcp              gallant_feynman

删除已终止的容器:

[root@docker ~]# docker rm 4835176a7d8e
4835176a7d8e
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a1a2e8468189        nginx:latest        "/bin/bash"         59 minutes ago      Up 20 minutes       80/tcp              gallant_feynman

删除成功了!

删除还在运行中的容器:

[root@docker ~]# docker rm a1a2e8468189 
Error response from daemon: You cannot remove a running container a1a2e8468189b146b0215971cf76947987d8fc3f42c58e77371e8d48afb030d1. Stop the container before attempting removal or force remove

发现Error了,不能这样删除运行状态中的容器,提示你的操作是尝试删除容器前停止容器的运行或者强制删除

推荐前者,后者只需要如下操作,但尽量不要随意使用哈!

[root@docker ~]# docker rm a1a2e8468189 -f
a1a2e8468189
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

友情提示:docker默认的存储目录在/var/lib/docker目录下,docker的镜像、容器、日志等内容全部都存储在此,当然也可以单独使用大容量的分区来存储这些内容,并且一般选择建立在LVM逻辑卷,从而方便后续扩容操作。

总结

​ 本文讲述的是docker基础命令(镜像和容器)的操作,通过实实在在的实际案例方便理解。对于docker的介绍与安装可以查阅笔者的前一篇文章。

​ 感谢阅读!

 收藏 (0) 打赏

您的赞助是我分享的最大动力!

支付宝扫一扫赞助

微信钱包扫描赞助

转载请注明出处:STBLOG » Docker基础命令详解 – 镜像及容器操作

分享到: 更多 (0)

热门文章

  • 评论 抢沙发

    评论前必须登录!

    立即登录   注册

    ❤ 感谢您的关注与支持!❤

    对TA表白给我留言
    我要注册

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活