目录

一个基本Dockerfile(Ubuntu)

docker启动

提交容器

用ssh连接到container

docker desktop问题

安装

win10自动更新重启后,docker卡在starting阶段

网络端口错误"Ports are not available"

一些命令

一个基本Dockerfile(Ubuntu)

FROM ubuntu:latest

RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get clean
RUN apt-get update

RUN apt-get install -y apt-transport-https \
	&& apt-get install -y vim \
	&& apt-get install -y net-tools \
	&& apt-get install -y tree \
	&& apt-get install -y openssh-server \
	&& apt-get install -y git \
	&& apt-get install -y gcc \
	&& apt-get install -y python3 \
	&& apt-get install -y python3-pip python-dev build-essential

这里build-essential是linux中一个较全的软件包,包括c++、g++等

然后通过 docker build -t ubuntu:basic . 生成image,其中 -t指定名字:TAG, .是Dockerfile(注意大小写)的搜索目录

docker启动

docker run -itd --cap-add SYS_PTRACE(不加不能使用ptrace,或者直接--privileged开启所有权限) -p 主机任一端口:22 -v(挂载) 主机目录:容器中某目录 --name 容器起名 使用的image名 /bin/bash(启动后第一步做的事)

docker exec(在已运行容器中执行命令) -it containerID /bin/bash

注意:挂载目录遵循win的规则,大小写不敏感!

提交容器

docker commit [options] 待提交container repo:tag (名字:版本v1,v2...)

options:

        -a "镜像作者"

        -m "备注信息"

用ssh连接到container

  1. 正常安装openssh-server
  2. 将id_rsa.pub附加到.ssh目录下的authorized_keys后(cat path1/id_rsa.pub >> path2/.ssh/authorized_keys),如果没有这个目录,就用ssh-keygen生成一下。如果是在windows平台,命令是(ssh-keygen -t rsa)
  3. 编辑ssh配置文件 vim /etc/ssh/sshd_config,将以下内容注释去掉
  1. PubkeyAuthentication yes #启用公钥私钥配对认证方式
  2. AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
  3. PermitRootLogin yes #root能使用ssh登录
  4. Port 22
  1. 保存退出后,执行/etc/init.d/ssh restart ,重启ssh服务

然后就可以连接了,这里要注意,由于端口绑定,实际上宿主机连接的ip是自己的ip,并且要指定当初绑定的自己的那个端口

例如:ssh root@127.0.0.1 -p 3000 -i ~/.ssh/id_rsa,这里3000是当时和docker的22绑定的那个端口。

注意,停止一个容器再打开后,也需要启动ssh服务,将上面命令的restart换成start即可

超时断开问题可以设置

ClientAliveInterval 60

ClientAliveCountMax 3

docker desktop问题

安装

建议从命令行安装,可以指定存储路径

https://docs.docker.com/desktop/install/windows-install/

& ".\Docker Desktop Installer (1).exe" install --accept-license  --installation-dir="D:\docker" --wsl-default-data-root="D:\docker-disk\wsl" --hyper-v-default-data-root="D:\docker-disk\hyper-v" --windows-containers-default-data-root="D:\docker-disk\winContainers"

win10自动更新重启后,docker卡在starting阶段

cd "C:\Program Files\Docker\Docker"
./DockerCli.exe -SwitchDaemon

采用此办法解决,似乎是重启了docker程序……

重启后原本设置好的image location也被重置了,找不到原来的image和container。于是再设一遍:

先启用WSL2再关掉,在Resources/ADVANCED选项里就可以调了

注意:挂载的win目录是大小写不敏感的!

网络端口错误"Ports are not available"

powershell以管理员模式执行

net stop winnat net start winnat