给docker
镜像重命名方式:
docker tag “dockerID或docker原镜像名” 新镜像名
例如:
docker tag ubuntun:20.04 myubuntu:20.04
将当前用户加入安装中自动创建的docker
用户组后,仍然提示Got permission denied
,
可以运行 newgrp docker #更新用户组
在配置docker
容器的别名和免密登录前记得,在 docker
的 root
权限下创建普通用户 acs
,再回到 AC Terminal
里面去配置免密登录。创建后若无法直接连上acs@xxx.xxx.xxx.xxx
的话,重启下云服务器。
遇到问题:
user@VM-20-12-ubuntu:~$ ssh root@localhost -p 20000
报错:
kex_exchange_identification: read: Connection reset by peer
解决:docker容器中没有安装ssh,运行以下代码:
apt-get install ssh
apt-get update
sudo /etc/init.d/ssh start
docker
出现Got permission denied while trying to connect to the Docker daemon socket...
问题的解决办法:
-
使用
sudo
获取root
权限运行 -
docker
守护进程启动的时候,会默认赋予名字为docker
的用户组读写Unix socket
的权限,因此只要创建docker
用户组,并将当前用户加入到docker
用户组中,那么当前用户就有权限访问Unix socket
了,进而也就可以执行docker
相关命令
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker images #测试docker命令是否可以使用sudo正常使用
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0
: 利用docker_lesson:1.0
镜像创建一个名字为my_docker_server
的容器并启动,且将容器的22
端口映射到本地的20000
端口。
docker
实战
(相当于在自己的云服务器利用docker
创建一个可以登录的容器,即在云服务器上搭建云服务器):
# 将镜像上传到自己租的云端服务器
scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar server_name:
# 登录自己的云端服务器
ssh server_name
# 将镜像加载到本地
docker load -i docker_lesson_1_0.tar
# 创建并运行docker_lesson:1.0镜像
# 将docker镜像的22号端口映射到服务器的20000号端口
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0
# 进入创建的docker容器
docker attach my_docker_server
# 设置root密码
passwd
之后Ctrl + p
+ Ctrl + q
将新创建的容器挂起。
去云平台控制台中修改安全组配置,放行端口 20000
退出到自己的云服务器端,
ssh root@localhost -p 20000
:输入刚刚设置的密码,登录到刚刚创建的容器内。
若出现
docker kex_exchange_identification: read: Connection reset by peer
报错,则按照上文提到的错误解决方法,先在docker
容器内安装ssh
可以在容器内创立新的用户
adduser acs
usermode -aG sudo acs # 给予 sudo 权限
之后甚至可以在AC Terminal
里配置免密登录后,从AC Terminal
直接进入docker
容器里的acs
账户了。
ssh acs@xxx.xxx.xxx.xxx -p 20000 # 将xxx.xxx.xxx.xxx替换成自己租的服务器的IP地址
要在
root
用户上apt-get install sudo
安装sudo
命令,才能在acs
账户上使用sudo apt-get install tmux
安装tmux
(若后面还遇到其他问题,会陆续添上)