目录:
- 1.拉取Ubuntu镜像并启动Docker容器
- 2.进入容器,安装一些必要的软件:sudo、vim、wget、ssh等
- 3.远程连接Docker容器
- 4.镜像拷贝
1.拉取Ubuntu镜像并启动Docker容器
首先,从DockerHub上拉取一个ubuntu镜像:docker pull ubuntu:18.04

然后,启动容器:docker run -itd -p 50001:22 ubuntu:18.04
(-p: 指定端口映射,格式为:主机(宿主)端口:容器端口。这样,当我们访问宿主机的50001端口时,自动映射到当前容器的22端口。)
启动成功,使用 docker ps
查看正在运行的容器,如下图:

2.进入容器,安装一些必要的软件
进入容器:docker exec -it 7338ded2d7e6 /bin/bash

扫描软件源服务器,建立更新软件包列表:apt-get update
安装sudo:apt-get install sudo
设置root账号的密码:sudo passwd root
安装vim:apt-get install vim
安装wget(使用VSCode连接容器时需要):apt-get install wget
安装ssh:apt-get install openssh-server
查看ssh服务启动情况:service ssh status
启动ssh服务:service ssh start
ssh默认是禁止root账号远程登录,可修改ssh配置文件进行设置。
ssh允许root账号远程登录:vim /etc/ssh/sshd_config
添加一行:PermitRootLogin yes
重启ssh服务:service ssh restart
每次重启容器后,都要手动启动ssh服务,这样太繁琐了。
通过添加启动命令到/root/.bashrc
文件中实现ssh自启动。
修改配置:sudo vim /root/.bashrc
添加一行:/etc/init.d/ssh start 或 service ssh start
使修改的配置生效:source /root/.bashrc
至此,基本环境已安装和配置完毕。
使用docker commit
命令将容器保存为镜像,以备份当前环境。
退出容器:exit
从容器创建一个新的镜像:docker commit 7338ded2d7e6 lyf/ubuntu_ssh:18.04
保存镜像成功,使用docker images
命令可看到新建的镜像:

3.远程连接Docker容器
3.1 宿主机(启动容器的虚拟机)使用ssh命令连接容器:
命令:ssh root@0.0.0.0 -p 50001

3.2 远程主机使用ssh命令连接容器:
命令:ssh root@192.168.43.42 -p 50001

3.3 使用VSCode远程连接容器:
先在VSCode的"扩展"上搜索并安装Remote - SSH,然后在"远程资源管理器"的config配置文件中添加配置:
Host liyunfei_docker
HostName 192.168.43.42
Port 50001
User root

保存config文件后点击connect to host
按钮即可连接。

4.镜像拷贝
Docker的特点在于“一次构建,到处运行”。它可以将环境及代码保存为镜像,将该镜像拷贝到其他的主机上就可以实现环境的复用。
实现镜像拷贝的两种方式:
- 1)通过
docker save
命令将指定镜像保存成tar归档文件。
通过docker load
命令导入使用docker save
命令导出的镜像。 - 2)通过
docker push
命令将指定镜像推送到DockerHub镜像仓库上。
通过docker pull
命令从DockerHub镜像仓库拉取指定的镜像。
(DockerHub是公共的镜像仓库,有条件可以基于Harbor搭建一个私有的镜像仓库。)
第一种方式:docker save 和 docker load
将镜像保存为tar文件,命令:docker save -o tar文件名 镜像名

将tar文件拷贝到另一台装有Docker的主机上(使用FileZilla、XShell、SecureCRT等工具,或者直接使用scp命令进行拷贝)。

导入镜像:docker load -i tar文件名

第二种方式:docker push 和 docker pull
先到DockerHub官网上注册一个账号吧:https://registry.hub.docker.com/
登入DockerHub:docker login -u 用户名 -p 密码

标记本地镜像,将其归入某一仓库。
docker tag lyf/ubuntu_ssh_curl_gcc:18.04 lyf524951805/ubuntu_ssh_curl_gcc:18.04

push镜像到DockerHub仓库:
docker push lyf524951805/ubuntu_ssh_curl_gcc:18.04

登录DockerHub账号,可以看到镜像已成功推动到仓库中。

登出DockerHub:docker logout

在任何装有Docker的主机上,执行pull命令就可以拉取该镜像:
docker pull lyf524951805/ubuntu_ssh_curl_gcc:18.04

网友评论