前言
1 本笔记本电脑运行的ubuntu20.04系统
2 docker运行在ubuntu20.04系统
3 docker镜像使用的是ubuntu18.04,这样拉的
bashdocker pull ubuntu:18.04
4 docker容器中运行的是ubuntu18.04的系统,嗯就是严谨
5 这纯粹是学习笔记,实际上没啥价值。
6 和docker相关的命令同样适用于windows版本的docker,且不保证不会出现死机,硬盘被莫名其妙格式化的情况。
运行容器
查看容器:docker ps -a
容器运行了:
docker exec -it ubuntu-18-001 /bin/bash
进入容器了
使用另一个终端查看容器的运行状态:
docker ps
说明容器已经运行2分钟了
在这个输出中:
CONTAINER ID
是容器的唯一标识符。IMAGE
是容器使用的镜像名称。COMMAND
是容器启动时执行的命令。CREATED
显示容器的创建时间。STATUS
显示容器的状态,例如Up
表示正在运行,Exited
表示已经停止。PORTS
显示容器的端口映射信息。NAMES
是容器的名称,如果您没有指定名称,Docker 会自动生成一个。查看所有容器(包括已停止的):docker ps -a
配置容器网络
apt-get install update
apt-get install tree
apt-get install vim
apt-get install net-tools
apt-get install git
apt-get install curl
ping宿主机:
设置登录密码
passwd root
设置完成后,执行exit退出docker容器。
登录测试:
先查找容器的ID:docker ps -a
使用docker login 1dfd192c72fb
如下所示:确实会提示需要输入用户名和密码,但是会报错
直接输入docker exec -it ubuntu-18-001 /bin/bash还可以进入。
重启docker容器
docker restart ubuntu-18-001
执行后,查看docker的运行时间,发现确实重启了
和宿主机NFS共享文件夹
挂在主机的nfs文件夹:
sudo mount -t nfs -o nfsvers=3,nolock 192.168.31.20:/home/lkmao/nfsroot nfsserver/
在另一个机器上挂载是正常的。应该是docker的容器的权限问题。
因为启动容器时,没有开启特权模式,解决办法是,1停止容器,2特权模式运行容器
1 停止容器:
2特权模式运行容器
关于docker run,docker start ,docker exec。
docker run:创建新的 容器,并运行容器,并执行传递的命令,支持特权
docker start:启动已经存在 的容器,并执行传递的命令,不支持特权
支持特权: 并执行传递的命令,不支持特权
所以要删除容器新建一个呗。
docker rm <容器名>,如下所示:因为是测试的,所以就都删除了。
创建新的容器:
如下ubuntu:18.04是镜像名称,ubuntu18-lkmao-001是新建的容器的名字
-it是-i和-t的合体,-i表示交互,-t表示使用终端,就是使用终端交互。就是shell登录界面。
--privileged表示特权模式。
bashdocker run --privileged --network=host --name ub18-lkmao-003 -it -p 8022:22 f9a80a55f492
会有一个经过表示,你都使用主机网络了,还有必要做端口转发发,所以端口转发设置无效。
因为是新建的容器,所以安装一些必要的软件。现在在容器里执行ifconfig,通过输出信息可知,当前容器已经使用了和宿主机相同的IP地址了。
再次挂在:挂载成功
先安装nfs客户端:
bashapt-get install nfs-common mkdir /nfsserver/ -p
然后挂载:
bashmount -t nfs 192.168.31.20:/home/lkmao/nfsroot /nfsserver/
后者:
bashsudo mount -t nfs -o nfsvers=3,nolock 192.168.31.20:/home/lkmao/nfsroot nfsserver/
验证:挂载成功
检查容器的状态
通过docker ps -a获取对应的容器的ID;
使用docker inspect <CONTAINER ID>查看,执行后会输出一大段信息。
可以看到很多的信息,包括绑定的22端口:
经过实际测试不实行的,因为前面已经发出报警了,因为绑定了主机的网络,所以端口设置失效了。