美文网首页
docker的使用(一)

docker的使用(一)

作者: 顶级蜗牛 | 来源:发表于2020-07-25 15:10 被阅读0次

注意:要使用docker必须先启动docker(小鲸鱼),否则会报错:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Docker 客户端

安装好docker之后,就可以在查看docker相关命令了。打开终端输入

$ docker help
docker-help1.png docker-help2.png

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如我们要查看 docker stats 指令的具体使用方法:

$ docker stats help
docker-stats-help.png

镜像的使用

获取镜像

如果我们本地没有 centos 镜像,我们可以使用 docker pull 命令来拉取 centos 镜像(过程缓慢!建议配置镜像加速器,前章节有介绍):

$ docker pull centos // 从docker hub拉取镜像

查看镜像:

$ docker images

删除镜像:
ps:若该镜像下的容器不是空的,那删除失败。
docker rmi 镜像名/镜像id

$ docker rmi centos

值得一提的是:docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,已统计docker hub上超过30%的官方镜像包含高危漏洞。并且docker pull下载镜像的速度很慢。基于这种情况,我们可手动定制docker系统镜像。下一章节会介绍,本章节主要介绍docker容器简单使用

容器的使用

创建容器(有两种)

第一种:创建一个交互式容器:
$ docker run -i -t --name=container1 centos /bin/bash
也可以简写
$ docker run -it --name=container1 centos /bin/bash
创建交互式容器名为container1.png 看上图创建交互式容器命令的结果:创建了容器,并且进入到了容器中,可直接操作容器。下文会介绍如何操作容器。

参数说明:
-i: 交互式操作。
-t: 终端。
--name:给容器起名字叫 container1 (必须唯一)
centos: centos 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

更多的参数说明:$ docker run --help

查看正在启动的容器(需要新建一个终端窗口):
注意:退出了交互式容器就不会运行了
$ docker ps
查看正在启动的容器.png
退出容器
[root@73fd1691e309 /]# exit

就会回到你的本机了

查看全部容器:
$ docker ps -a
第二种:创建一个守护式容器(后台运行的):
$ docker run -i -t -d --name=container2 centos /bin/bash
也可以简写
$ docker run -itd --name=container2 centos /bin/bash
创建一个守护式容器.png 需要注意的是,守护式容器会在后台运行,创建容器后终端会回到主机。就算你操作容器的时候使用了 exit 命令 也不会停止容器的运行

参数说明:
-d: 在后台运行容器并打印容器ID
查看更多exit使用文档 $ docker exit --help

如果你想操作这个容器container2:

$ docker exec -it container2 /bin/bash
进入到容器中.png 这时我们退出容器,并查看正在运行的容器,会发现容器还在后台运行!这就是守护式容器与交互式容器的区别了。 守护式容器还在后台运行.png

容器操作

启动/停止容器
停止容器:$ docker stop container2                                    
停止容器.png
启动容器:$ docker start container2
启动容器.png
查看容器详细信息
$ docker inspect container2
查看容器信息中的某个属性,举例查看容器的ip地址:
$ docker inspect -f='{{.NetworkSettings.IPAddress}}' container2
或者
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' container2
查看容器的ip地址
删除容器

不能删除正在运行的容器
docker rm 容器名/容器id

$ docker rm container2

会报错:Error response from daemon: You cannot remove a running container 0285012b9d02d12923acdc44336ff8161c9525f0bc76d28a822262ca8381288b. Stop the container before attempting removal or force remove
说明了容器container2正在运行,那我们可以删除没有正在运行的容器名为container1的容器。

$ docker rm container1
删除容器 这时,我们再查询全部容器 $ docker ps -a 发现container1已经被删除。
查看容器日志(不演示了)
$ docker logs 容器名称/id   

容器与宿主机间的文件相互拷贝

将宿主机内的文件copy到容器

docker cp 需要拷贝的文件或目录 容器名称:容器目录
例如:docker cp 1.txt container2:/root
演示:
a.在宿主机桌面上创建一个test文件夹,并在终端cd到此文件夹内,创建一个1.txt文件

创建被拷贝的文件
此时位置在test目录上
将1.txt文件拷贝到容器container2的根目录下:
$ docker cp 1.txt container2:/root
拷贝操作

查询容器container2的根目录是否有这个1.txt:

$ docker exec -it /container2 /bin/bash // 进入容器container2中
$ cd root/   // 进入根目录
$ ls         // 查看根目录下所有文件
查看容器内的文件

拷贝成功!

将容器内文件copy到宿主机

docker cp 容器名称:容器目录 需要拷贝的文件或目录
例如:docker cp container2:/root/2.txt /root
演示:

$ docker exec -it /container2 /bin/bash // 进入容器container2中
$ cd root/   // 进入根目录
$ ls         // 查看根目录下所有文件
$ touch 2.txt // 创建2.txt文件
$ ls         // 查看根目录下所有文件
在容器内创建被拷贝的文件

将容器container2的root目录下的2.txt文件copy到宿主机桌面的test目录下

$ docker cp container2:/root/2.txt /Users/xxx/Desktop/test 
然后打开文件夹查看
拷贝操作

拷贝成功!

容器的目录挂载

什么是目录挂载?
我们可以在创建容器的时候,将宿主机的目录与容器的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
这样做的好处是:不需要每次登录访问容器,然后再去找要修改的目录,修改文件,最后退出容器。这样频繁的操作很麻烦。
如果我们把容器里的目录和宿主机的目录做一个映射,这样就方便很多,我们只需要修改宿主机里的文件就能达到修改容器配置文件的效果。

需求:
创建container3容器,让容器根目录下名为TS的目录映射到宿主机桌面上的test目录(上面提到过的)。

/**
 * 创建一个守护式容器名为 container3
 * -v表示:绑定挂载卷
 * 宿主机上的目录:/Users/xxx/Desktop/test
 * 容器要映射的目录:/root/TS/
 * 在哪个镜像下创建容器:centos
 */
$ docker run -itd --name container3 -v /Users/xxx/Desktop/test:/root/TS/ centos /bin/bash
文件挂载操作

尝试修改宿主机上test目录下的文件(例如添加一个3.txt),容器内也会映射出一样的结果。(这里不做测试了)
这样修改我们容器内的配置就不需要太麻烦的登录登出查找文件等操作了。
文件挂载成功!

相关文章

网友评论

      本文标题:docker的使用(一)

      本文链接:https://www.haomeiwen.com/subject/voqjlktx.html