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上