我是靠谱客的博主 曾经百合,最近开发中收集的这篇文章主要介绍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>

最后

以上就是曾经百合为你收集整理的docker常用基本指令的全部内容,希望文章能够帮你解决docker常用基本指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部