Docker搭建实验环境

1.概览

  • 获取我自己做的docker
  • 常用的docker指令
  • 脚本启动docker(使doocker能运行GUI程序)

2.获取我自己做的docker

docker pull misaki25/myubuntu:v1.2

3.常用的docker指令

3.1 拉取镜像

docker pull ...

3.2 查看镜像

docker images

3.3 启动镜像

docker run -it <image>  # i是交互, t是终端

3.4 删除镜像(注意与删除容器区别)

docker rmi <image>

3.5 查看容器

# 所有容器
docker container ls -a

# 正在运行的容器
docker ps

3.6 启动容器

docker start <CONTAINER_ID>

3.7 进入容器

docker exec -it <CONTAINER_ID> /bin/bash  

# 可以自己写bash然后执行bash
docker exec -it <CONTAINER_ID> xxx.sh

3.8 容器创建镜像

docker commit -m "..." -a "..." <CONTAINER_ID> <repository:tag>
# -m 备注
# -a 作者名
# repository, 和自己的dockerhub上的repository名要相同,之后才能push

3.9 Hyper-v下共享文件夹

# 在创建容器的时候挂载, D:\\temp是windows下的目录,即docker挂载到本地目录
docker run -v D:\\temp:/dataset -it <IMAGE>

3.10 导入导出镜像

# -o 输出选项
docker save <Image> -o xxx.tar.gz

# -i 输入选项
docker load -i <xxx.tar.gz>

4.脚本启动docker

#!/bin/bash

## The bash to start my own docker for hit-os-lab
## Author: Misaki


# Get the image id of hit-os-lab
IMAGE_ID=$(docker images | grep misaki25/myubuntu | grep v1.2 | awk '{print$3}')

# Get the container id of hit-os-lab
CONTAINER_ID=$(docker container ls -a | grep misaki25/myubuntu:v1.2 | awk '{print$1}')

# Use x11 to display the gui application of hit_docker(Here is bochs)
run_docker(){
    xhost +
    docker run -it \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -e DISPLAY=unix$DISPLAY \
    -e GDK_SCALE \
    -e GDK_DPI_SCALE \
    misaki25/myubuntu:v1.2
}

# Main
if [ ! $CONTAINER_ID ]; then
    echo "We do not have the container and create now......"
    echo "The id of image is $IMAGE_ID"
   # run_docker
else
    echo "The container exists and CONTAINER_ID is: $CONTAINER_ID"
    #docker exec -it $CONTAINER_ID /bin/bash
    arr=$(docker container ls -a | grep misaki)
    #echo $arr
    for word in $arr
    do
        #注意if[]里面的空格
        if [ "$word" = "Exited" ]; then
            echo "The container now is Exited and we start it"
            docker start $CONTAINER_ID
            break 
        fi
    done
    echo "Exec the container"
    docker exec -it $CONTAINER_ID /bin/bash
fi

5.自己的版本更新

2021.9.7 misaki25/myubuntu:v1.3

使用mknod添加了循环设备/dev/loop0, 让linux0.11的hdc能够顺利挂载在我们的docker上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容