docker:在ubuntu中运行docker容器

前言

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

2 docker运行在ubuntu20.04系统

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

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表示特权模式。

docker run --privileged --network=host --name ub18-lkmao-003 -it -p 8022:22 f9a80a55f492

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

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

再次挂在:挂载成功

先安装nfs客户端:

apt-get install nfs-common
mkdir /nfsserver/ -p

然后挂载:

mount -t nfs 192.168.31.20:/home/lkmao/nfsroot /nfsserver/

后者:

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端口:

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

小结 

相关推荐

  1. docker运行mysql容器

    2024-03-29 06:54:02       29 阅读
  2. ubuntudocker容器安装strongswan

    2024-03-29 06:54:02       33 阅读
  3. ubuntu安装Docker容器

    2024-03-29 06:54:02       35 阅读
  4. 通过docker容器通过Gunicorn运行flask

    2024-03-29 06:54:02       30 阅读
  5. Docker运行Jenkins容器:从入门到实践

    2024-03-29 06:54:02       31 阅读
  6. 如何 docker 容器内部运行 docker命令

    2024-03-29 06:54:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 06:54:02       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 06:54:02       97 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 06:54:02       78 阅读
  4. Python语言-面向对象

    2024-03-29 06:54:02       88 阅读

热门阅读

  1. 【云开发笔记No.7】敏捷开发

    2024-03-29 06:54:02       49 阅读
  2. 再谈敏捷开发

    2024-03-29 06:54:02       43 阅读
  3. Linux centos7离线搭建FTP

    2024-03-29 06:54:02       44 阅读
  4. 数组合并小程序

    2024-03-29 06:54:02       37 阅读
  5. 【WPF应用21】WPF 中的 TextBox 控件详解与示例

    2024-03-29 06:54:02       45 阅读
  6. Superset二次开发之webpack.config.js 功能模块解读

    2024-03-29 06:54:02       46 阅读
  7. 大语言模型中的强化学习与迁移学习技术

    2024-03-29 06:54:02       37 阅读
  8. PyTorch中nn.ReLU函数说明

    2024-03-29 06:54:02       40 阅读
  9. flutter 打包成web应用后怎么通过url跳转页面

    2024-03-29 06:54:02       34 阅读
  10. Flutter——用户关闭键盘后强制拉起键盘

    2024-03-29 06:54:02       39 阅读
  11. 解决 docker swarm 节点容器无法获取客户端真实IP

    2024-03-29 06:54:02       39 阅读