目录
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
- 正常安装openssh-server
- 将id_rsa.pub附加到.ssh目录下的authorized_keys后(cat path1/id_rsa.pub >> path2/.ssh/authorized_keys),如果没有这个目录,就用ssh-keygen生成一下。如果是在windows平台,命令是(ssh-keygen -t rsa)
- 编辑ssh配置文件 vim /etc/ssh/sshd_config,将以下内容注释去掉
- PubkeyAuthentication yes #启用公钥私钥配对认证方式
- AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
- PermitRootLogin yes #root能使用ssh登录
- Port 22
- 保存退出后,执行/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
一些命令
docker container ls -a #查看所有容器
docker system df #查看磁盘空间占用情况
docker stats #查看docker容器占用资源的情况