docker常用基本指令

0. 安装docker

参考:https://www.cnblogs.com/walker-lin/p/11214127.html
如果出现依赖问题,可以参考链接:https://blog.csdn.net/qq_40423339/article/details/87885086

1. c++环境感知搭建

主机中:
安装xserver,为了让容器能够在主机中图形显示

sudo apt install x11-xserver-utils

许可所有用户都可访问xserver
这里是为了让docker容器也能使用图像化界面显示。

xhost +
2. 将修改后的容器做成一个有tar标记的镜像。

思路:将修改后的容器重新做成一个镜像,将这个镜像导出成一个tag包,然后将这个tag包还原成一个新的镜像
docker commit 812a997f614a(容器id) ubuntu:update
容器ID 新名字容器新tag(随意起)
如:

docker  commit  640c369d7093  nginx2:test
3. 将新的镜像保存为tar包

docker save -o update1.tar ubuntu:update
如:

docker save -o nginx3.tar nginx2:test
4. 加载快照文件 name.tar
docker load -i nginx3.tar
5. 查看镜像文件
docker images
6. docker重命名镜像repository和tag
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
7. 创建容器
docker run -itd --name Display -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/llgj/ssj/c++:/home/c++  -p 8888:8888 -e DISPLAY=:0 modat:v1 /bin/bash  

普通创建容器:

docker run -itd --name Name modat:v1 /bin/bash
解释:

docker run -itd --name Display #容器的名字
-v /tmp/.X11-unix:/tmp/.X11-unix #X11传输文件需要被挂载(为了能够在主机上图形显示)
-e DISPLAY=:0 #显示设备(例:使得容器中运行qtcreator时,能够图像化显示出来)
-v /home/llgj/ssj/c++:/home/c++ #home/llgj/ssj是需要被挂载的目录 后面docker挂载目录不变
-p 8888:8888 #映射端口
modat:v1 #镜像
/bin/bash #权限

8. 进入到容器中后,测试显示时钟
xarclock
9. 查看所有容器
docker ps -a
10. 进入容器48b1282c606e(容器id)
docker exec -it 48b1282c606e /bin/bash
11. 查看显示器端口号
echo $DISPLAY
12. 在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式
docker run -itd --name ubuntu-test ubuntu /bin/bash

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec

13. 停止一个容器
docker stop <容器 id>
14. 停止的容器可以通过docker restart重启
docker restart <容器 id>
15. 进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach
docker exec: 推荐使用,因为用这种方式进入的容器,退出终端后,不会导致容器停止,容器还会在后台运行

docker exec -it 48b1282c606e(容器id) /bin/bash
16. docker本身提供了一种机制,可以将主机上的某个目录与容器的某个目录(称为挂载点、或者叫卷)关联起来,容器上的挂载点下的内容就是主机的这个目录下的内容,这类似linux系统下mount的机制。 这样的话,我们修改主机上该目录的内容时,不需要同步容器,对容器来说是立即生效的。 挂载点可以让多个容器共享。
docker run --name test -it -v /home/xqh/myimage:/data ubuntu /bin/bash
17. bash: sudo: command not found

容器内避免使用root,建立新用户执行命令使用sudo ,提示如下
bash: sudo: command not found
同时,如果没有sudo的话,也没有/etc/sudoers这个配置文件
解决办法:

apt-get update
apt-get install sudo
18. 创建普通用户

在root用户下:

  1. 追加普通用户:
adduser test
  1. 默认任何用户都没有/etc/sudoers文件的写权限,给/etc/sudoers文件写权限:
chmod u+w /etc/sudoers
  1. /etc/sudoers中介绍了四种类型的权限设置,分别如下:
xxx ALL=(ALL) ALL             ##允许用户xxx执行sudo命令(需要输入密码)
%xxx ALL=(ALL) ALL            ##允许用户组xxx里面的用户执行sudo命令(需要输入密码)
xxx ALL=(ALL) NOPASSWD: ALL   ##允许用户xxx执行sudo命令,执行时不需要输入密码
%xxx ALL=(ALL) NOPASSWD: ALL  ##允许用户组xxx里面的用户执行sudo命令,执行时不需要输入密码
  1. 修改/etc/sudoers文件,增加内容:
##在root ALL=(ALL) ALL下增加xxx ALL=(ALL) ALL
例:
test ALL=(ALL) ALL
19. 删除镜像或容器
docker rm <镜像/容器 id>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值