sudo yum update -y
sudo amazon-linux-extras install docker -y
sudo /bin/systemctl start docker.service
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
退出,再重新登录以接受新的 docker 组权限。您可以关闭当前的 SSH 终端窗口并在新终端窗口中重新连接到实例,完成这一过程。您的新 SSH 会话将具有相应的 docker 组权限。
验证 ec2-user 是否能在没有 sudo 的情况下运行 Docker 命令。
docker info
touch Dockerfile
编辑您刚刚创建的 Dockerfile 并添加以下内容。
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update && \
apt-get -y install apache2
# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html
# Configure apache
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \
chmod 755 /root/run_apache.sh
EXPOSE 80
CMD /root/run_apache.sh
此 Dockerfile 使用 Ubuntu 18.04 镜像。RUN 指令将更新包缓存,安装一些适用于 Web 服务器的程序包,然后将“Hello World!” 内容写入到 Web 服务器的文档根目录。EXPOSE 指令在容器上公开端口 80,CMD 指令启动 Web 服务器。
从您的 Dockerfile 生成 Docker 镜像。
docker build -t hello-world .
运行 docker images 以验证是否已正确创建镜像。
docker images --filter reference=hello-world
运行新构建的镜像。-p 8001:80 选项将容器上公开的端口 80 映射到主机系统上的端口 8001。
docker run -t -i -p 8001:80 hello-world
应看到一个显示“Hello World!”语句的 网页
可通过键入 Ctrl + c 来停止 Docker 容器。
###命令行部署web程序
启动容器
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
$ docker run -it ubuntu /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
root@ed09e4490c57:/# exit
启动已停止运行的容器
查看所有的容器命令如下:
$ docker ps -a
使用 docker start 启动一个已停止的容器:
$ docker start b750bbbcfd88
后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)。
停止一个容器
停止容器的命令如下:
$ docker stop <容器 ID>
停止的容器可以通过 docker restart 重启:
$ docker restart <容器 ID>
进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach
docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
attach 命令
下面演示了使用 docker attach 命令。
$ docker attach 1e560fca3906
注意: 如果从这个容器退出,会导致容器的停止。
exec 命令
下面演示了使用 docker exec 命令。
docker exec -it 243c32535da7 /bin/bash