docker:在ubuntu中运行docker容器

前言

1 本笔记本电脑运行的ubuntu20.04系统

2 docker运行在ubuntu20.04系统

3 docker镜像使用的是ubuntu18.04,这样拉的

bash 复制代码
docker 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表示特权模式。

bash 复制代码
docker run --privileged --network=host --name ub18-lkmao-003 -it -p 8022:22 f9a80a55f492

会有一个经过表示,你都使用主机网络了,还有必要做端口转发发,所以端口转发设置无效。

因为是新建的容器,所以安装一些必要的软件。现在在容器里执行ifconfig,通过输出信息可知,当前容器已经使用了和宿主机相同的IP地址了。

再次挂在:挂载成功

先安装nfs客户端:

bash 复制代码
apt-get install nfs-common
mkdir /nfsserver/ -p

然后挂载:

bash 复制代码
mount -t nfs 192.168.31.20:/home/lkmao/nfsroot /nfsserver/

后者:

bash 复制代码
sudo mount -t nfs -o nfsvers=3,nolock 192.168.31.20:/home/lkmao/nfsroot nfsserver/

验证:挂载成功

检查容器的状态

通过docker ps -a获取对应的容器的ID;

使用docker inspect <CONTAINER ID>查看,执行后会输出一大段信息。

可以看到很多的信息,包括绑定的22端口:

经过实际测试不实行的,因为前面已经发出报警了,因为绑定了主机的网络,所以端口设置失效了。

小结

相关推荐
学习向前冲15 分钟前
安装一键式重置密码插件(Linux)-CloudResetPwdAgent
linux·运维·服务器
RobinDevNotes42 分钟前
自动化构建镜像:Packer
运维·packer
yohoo菜鸟1 小时前
kubernetes简单入门实战
云原生·容器·kubernetes
落非1 小时前
Ubuntu配置阿里云docker apt源
ubuntu·阿里云·docker
fareast_mzh1 小时前
Setting Up a Simple Live Streaming Server on Debian 11
运维·debian·直播
BillKu2 小时前
Linux设置Nginx开机启动
linux·运维·nginx
东方佑2 小时前
FastHTML快速入门:服务器渲染超媒体应用的利器
运维·服务器
baidu_375528813 小时前
光感传感器 芯片stk3171 linux驱动程序
linux·运维·服务器
飞腾开发者3 小时前
飞腾平台Arm NN软件栈安装使用指南
linux·运维·人工智能·机器学习·计算机视觉
x2lab3 小时前
国产化 ARM 环境mysql-mariadb 部署
arm开发·mysql·docker·mariadb