如何搭建完整的docker版ubuntu

装docker是好久之前装的了,也没什么坑,网上的教程都有,就不演示了。这里推荐菜鸟教程的docker教程,个人认为docker基础用法,这个网站是相对比较完整而且翻译比较好的。

Docker 教程 | 菜鸟教程

1、配置加速器

root@openmediavault:/# cd /etc/docker/
root@openmediavault:/etc/docker# dir
daemon.json  key.json  myapp
root@openmediavault:/etc/docker# cat daemon.json
{
"registry-mirrors":[
    "https://tukjbhel.mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn/",
    "https://hub-mirror.c.163.com",
    "https://registry.docker-cn.com"
    ]
}

发现只有第一个可以下载,而且速度很快,阿里云的docker镜像需要登录账号密码,如何配置如下链接:docker配置阿里云镜像_普通网友的博客-CSDN博客_docker配置阿里云镜像

阿里私有镜像站网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

私有镜像教程:https://www.jb51.net/article/243066.htm

2、镜像拉取与容器构建

我的需求是,创建一个docker虚拟机,配置ssh,外部主机可以访问这台内部虚拟机。基本命令教程:使用网络 - 容器互联 - 《Docker — 从入门到实践(v1.3.0)》 - 书栈网 · BookStack

1)首先拉取最新的ubuntu镜像。

docker pull ubuntu

2)将镜像解压到容器,并启动ubuntu

root@openmediavault:/etc# docker run -itd --privileged --name ubuntu --u root -p 9201:9200 ubuntu /bin/bash
# run和start 区别
#  -itd -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。-d 后台运行。
#  注意:需要设置 --privileged参数,确保能获取到真正的root权限。
# --u root 使用root权限登录
# -p 9201:9200 绑定端口,对应关系 宿主主机端口:主机端口
# /bin/bash  启动时运行的脚本

3)并配置ssh,发现这是个最小镜像,没有vi最基本的文本编辑器,所以只能使用echo进行简单处理,配置代理上网。

在/etc/apt/apt.conf.d,新增文件proxy,

echo  'Acquire::http::Proxy "http://xxxxxx:8080";'  > proxy

输入以下命令,更新apt镜像,安装vi文字编辑器。

apt update
apt upgarde
apt install vim

4)现在无法使用sytemctl命令,查看、启动或关掉进程。内部就没有安装systemd,也就没有/sbin/init,这会导致启动容器失败。因此需要先进入容器,安装好systemd,在对配置进行修改。

docker exec -it ubuntu /bin/bash
apt install systemd
ls -al /sbin/init

此时使用 systemctl start ssh 会报错:ystem has not been booted with systemd as init system (PID 1). Can‘t operate.

请添加图片描述

退出容器,关掉docker 。

$ exit
$ docker stop ubuntu
$ sudo systemctl stop docker

修改 config.v2.json中的 Path 和 Cmd ,由 /bin/bash 设置为 /sbin/init 。注意:一定要先关闭docker服务,修改配置才能生效。

# vim /var/lib/docker/containers/0f22b0c68de9819eb72d02094a5d23d3ee66e4eabd3563b9190f48ac83c55f22/config.v2.json

请添加图片描述

保存修改后,重启docker,再重启docker容器,重新配置即可。

$ docker start ubuntu
$ docker exec -it ubuntu /bin/bash
$ sudo systemctl start ssh
$ sudo systemctl status ssh

3、镜像导入和导出

1)将已经做好的镜像打包

 docker export CONTAINER-ID  > ubuntu.tar

 2)将打包的ubuntu.tar文件,复制到另一台有docker环境的主机,导入即可。

cat ubuntu.tar | docker import - ubuntu

参考:解决 System has not been booted with systemd as init system (PID 1). Can‘t operate._duapple的博客-CSDN博客

你可能感兴趣的:(linux,1024程序员节,docker)