lab
0、docker搭建linux环境(for Windows)
docker官网下载 docker desktop
右上角点击Get Started,选择Download for Windows进行下载并安装
打开cmd,通过docker --version
命令查看是否安装成功
配置docker镜像
打开docker desktop,在设置中找到Docker Engine,将原有文本修改成如下并Apply & restart
1 |
|
cmd中输入docker info
并显示有如下信息即可
拉取Linux镜像并新建容器
这里选择CentOS系统,当然也可以使用其他系统,只需要修改命令参数
输入docker pull centos
即可拉取最新的centos镜像,如果需要特定版本的镜像,则在系统名字后加上版本参数如docker pull centos:7
还可以输入docker images
查看本地主机上的镜像
其中,
RESPOSITORY 是镜像的仓库源,TAG 是镜像的标签,代表不同版本,IMAGE ID 是镜像ID,CREATED 是镜像的创建时间,SIZE是镜像的大小
docker中镜像相当于一个类,如果运行还需要将类进行实例化,也就是新建一个容器
docker run -it centos /bin/bash
其中,
选项-i 指交互式操作,-t 指终端,it通常一起使用,/bin/bash 表面希望有个交互式shell,centos不指定版本则默认使用最新版本即lastest
[root@9c2ab6d80ac1 /]#
即进入centos系统界面
打开原有容器而非创建
以刚新建的centost容器为例,
- 从docker desktop复制其name或者ID号
docker start 9c2ab6d80ac14f1edf1dec3f89c9b6f759018913f2e13a8086c3c30c24ba0dd9
或者docker start csapp_env
让容器启动docker exec -it 9c2ab6d80ac14f1edf1dec3f89c9b6f759018913f2e13a8086c3c30c24ba0dd9 /bin/bash
以交互式操作进入容器[root@9c2ab6d80ac1 /]#
centos系统界面- 退出容器则输入
exit
这里,除了exec
也可以使用attach
命令进入容器,attach
如果从这个容器退出,就会导致容器的停止
1、datalab
挂载目录实现Linux机与主机文件同步
- 首先在主机中建立要共享的文件夹,复制其绝对路径,如C:\Users\amour\csapp\lab
- 运行
docker container run -it -v "C:\Users\amour\csapp\lab":/csapp --name=csapp_env contos /bin/bash
,实现挂载,其中,在容器中的目录名为csapp
,容器名为csapp_env
- 验证挂载情况,进入容器中的目录
cd csapp
,再用ls
指令查看子文件是否与主机中的一致
配置编译环境
更新yum源,
yum -y update
[报错1] 由于本地语言环境不适配可能会出现
Failed to set locale, defaulting to C.UTF-8
报错,则需要先安装响应的语言包和语言环境locale -a
查看目前已安装的语言包yum install glibc-langpack-zh
安装中文语言包[报错2] 这一步可能又会出现
Failed to download metadata for repo 'appstream'
,需要将软件包修改源,在/etc/yum.repos
中更新repos.d
使用vault.centos.org
代替mirror.centos.org
cd /etc/yum.repos.d
vi CentOS-Linux-BaseOS.repo
1
2
3
4
5
6
7
8[baseos]
name=CentOS Linux $releasever - BaseOS
#mirrorlist=http://mirrorlist.centos.org/release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialvi CentOS-Linux-AppStream.repo
1
2
3
4
5
6
7
8[appstream]
name=CentOS Linux $releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
dnf install glibc-langpack-en
此时再输入
locale -a
查看目前的语言包,发现除了原有的C.utf8
之外,还有其他的en_utf8
和zh_utf8
,至此,已解决语言环境不适配导致无法使用yum更新下载的问题
yum install sudo
安装sudoyum install make automake gcc gcc-c++ kernel-devel
安装c/c++编译环境yum install gdb
安装gdb调试器yum install glibc-debel.i686
安装32位嵌入式C库完成配置
至此,可以在主机的编译器中编写代码保存到共享目录中,在docker的虚拟centos容器中编译和运行代码
如:在共享目录中创建hello.c
文件并编写好,进入容器中的共享文件夹cd csapp/L0/
,使用make hello
进行编译,./hello
即可运行