概述
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用户下:
- 追加普通用户:
adduser test
- 默认任何用户都没有/etc/sudoers文件的写权限,给/etc/sudoers文件写权限:
chmod u+w /etc/sudoers
- /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命令,执行时不需要输入密码
- 修改/etc/sudoers文件,增加内容:
##在root ALL=(ALL) ALL下增加xxx ALL=(ALL) ALL
例:
test ALL=(ALL) ALL
19. 删除镜像或容器
docker rm <镜像/容器 id>
最后
以上就是曾经百合为你收集整理的docker常用基本指令的全部内容,希望文章能够帮你解决docker常用基本指令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复