【实操记录】docker hello world
Docker可以在Windows10中使用,但是需要是64位专业版、企业版或教育版
我们的PC基本都是家庭版
所以直接在阿里云服务器ECS实例上(Ubuntu 22.04 64位)操作
ECS有现成的安装Docker的实践教程
安装Docker并使用镜像仓库ACR_云服务器 ECS(ECS)-阿里云帮助中心
但是在安装部署的过程中遇到了以下几个问题和解决方法,可能是误打误撞但是先记一下
(由于后面有点别的事情所以导致和ECS连接超时了,错误信息没留到T_T)
1、安装后在启动docker时失败
sudo systemctl start docker
解:卸载后重装
2、拉取Nginx镜像时失败
sudo docker pull nginx:latest
解:配置Docker Hub镜像源,编辑配置文件/etc/docker/daemon.json
{"registry-mirrors":["<加速器地址>"]
}
【阿里云容器镜像服务ACR镜像加速器】地址在【容器镜像服务控制台】
3、创建Dockerfile设置Nginx作为基础镜像,并在Web服务器的根目录创建一个显示Hello World!的index.html文件
sudo tee Dockerfile <<-'EOF'
FROM nginx:latest
RUN echo 'Hello World!' > /usr/share/nginx/html/index.html
EOF
构建镜像,镜像名称为hello-world
sudo docker build . -t hello-world:latest
启动Web程序镜像的容器,并且命名容器名称为hello-world
sudo docker run -d -p 80:80 --name hello-world hello-world:latest
这里报了两个错:
1、大概是说“hello-world”这个name已经被其他container占用了,需要我把原来这个删除掉再创建,或者换一个其他的新name
解:我把代码改成了下面这样,就是启动"hello-world:latest"这个程序镜像,将其命名为hello-docker-world"
sudo docker run -d -p 80:80 --name hello-docker-world hello-world:latest
2、 这里就变成新的错误了,刚好朋友来聊天,问了他,他是这么翻译的:
“80端口被占用了,80端口是http协议的默认端口,443是https的默认端口,不用想了”
“我一般做映射都是直接干10000以后的”
我又问“那个80:80是什么意思呢”
“前面是宿主机端口,后面是docker容器的端口”
“如果是10086:80,就表示在访问宿主机的10086端口的时候等同于访问docker容器的80端口”
于是我把命令改成了
sudo docker run -d -p 10000:80 --name hello-world hello-world:latest
继续报错如下
说的是,这个叫"/hello-world-docker"的container已经被使用了
朋友解答的是:
“即使没run成功也会给你创建,这个时候,你得删了那个报错的再run,docker rm [id or name]”
“删之前要先stop, docker stop [id or name]”
所以大概是这个意思:
于是我照他说的又执行了一次,成功了: