本文仅作为学习内容的记录,专注于实操,概念类的解释可能有不到位的地方。
前言
以前,想有一台Linux服务器,企业级的有虚拟机,家庭版的就是双系统。有了Docker,这件事就变得非常简单了。
基础概念
Docker : 一个开源的应用容器引擎,它提供了一种标准化、轻量级的容器化解决方案,使开发人员和系统管理员能够更便捷地打包、分发、部署和运行应用程序及其依赖环境。
容器(container): 可以简单理解为Image的一个实例;加了读写层的Image。
镜像(Image):只读的模板。
安装Docker:
Window安装(对系统有一定的要求,安装前先确认一下;我的是Win10 专业版 64位机)
官网下载最新版本:Get Started | Docker
AWS EC2/Linux上安装
基础知识: 创建容器镜像以在 Amazon ECS 上使用 - Amazon Elastic Container Service
sudo yum install -y docker
下载镜像
国内访问官方镜像比较慢,建议添加国内的镜像。下图中,黄色部分是我添加的部分可用镜像。
阿里云的镜像也是比较稳定的,但需要个人注册,适合已经有账户的。
打开cmd命令行,查看修改是否有效:
docker version
Registry Mirrors会显示配置好的地址。
我们先安装一个Ubuntu
docker search ubuntu
我们选择最新版的 Ubuntu。如果有版本需求 就加上版本号。
docker pull ubuntu
等待镜像下载,结束就可以启动容器了。
运行镜像
方法一:
window下,界面操作是最直接的。
在Imgages里面找到我们想启动的,点击Run就可以了。这里还可以配置一些参数:
点击左侧的container,就可以进入创建好的Ubuntu系统了。
方法二:
在cmd命令行里输入
docker run -it ubuntu
启动成功后,cmd界面会连入到Ubuntu系统。如果不小心关掉cmd窗口,怎样再次进入呢?
可以使用下面的命令:
C:\Users\ronghua>docker exec -it 52817667ecd9 /bin/bash
root@52817667ecd9:/#
docker container ls
-it 后面的参数是 container的ID。
安装其他软件
先来更新apt-get。
在cmd和Docker Desktop里面执行相同的命令,显示的错误不太一样。
一个报403,一个是Hash Sum mismatch。
先修改一下 apt源
修改先,先备份原文件:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
添加网易的源后,还是有报错:
换阿里云终于OK了。
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
apt升级后,我们就可以安装自己需要的软件了。
apt-get install vim
apt-get install openssh-server
看看当前系统已经安装了哪些软件?
apt list --installed
apt list --installed | grep ssh
apt show ssh
接下来我们配置ssh
1. 给root账户设置一个密码: passwd
2. 修改配置文件
vim /etc/ssh/sshd_config
注释掉PermitRootLogin prohibit-password
添加PermitRootLogin yes
3. 重启ssh服务
# /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd
查看ssh服务是否启动成功
ps -e|grep ssh
3239 ? 00:00:00 sshd
如果显示sshd,表明ssh server启动成功。
试着在客户端连一下,结果失败了。这是因为我们在启动的时候,没有指定container对外的端口。现在container已经创建,start的时候不能再增加 -P。
bing了一下解决方案:
1. 将现有的container打包成一个镜像
docker commit container-name new-image-name
利用此镜像,重启一个container,并指定port :将本机的7788端口映射到Container的22端口
docker run -it -p 7788:22 joyce_ubuntu
root@fca1b48f9d14:/# ps -e|grep ssh
root@fca1b48f9d14:/# /etc/init.d/ssh start
* Starting OpenBSD Secure Shell server sshd
ssh root@127.0.0.1 -p 7788
2.修改现有的Container
window下找到对应的文件比较难(这里需要学习WSL 2),后续有时间了再研究。
在Linux下的,可以参考docker给已存在的容器添加或修改端口映射_docker 创建容器无法设置端口-CSDN博客(未验证)