下载安装
https://docs.docker.com/engine/install/ubuntu/
检查 Docker 是否正在运行:
sudo systemctl status docker
类似以下内容,说明该服务处于活动状态并且正在运行:
root@VM-16-5-ubuntu:/home/ubuntu# sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-02-08 00:03:36 CST; 10h ago
Docs: https://docs.docker.com
Main PID: 15585 (dockerd)
Tasks: 9
CGroup: /system.slice/docker.service
└─15585 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
默认情况下,docker
命令只能由 root 用户或由 docker 组中的用户运行,docker 组用户是在Docker安装过程中自动创建的。
在 Docker 中使用镜像
Docker 容器(containers)是从 Docker 镜像生成出来的。默认情况下,Docker 从Docker Hub下载这些镜像,Docker 公司在运营这个Docker Hub。
要检查是否可以访问 Docker Hub 和从这个网站下载镜像,请输入:
docker run hello-world
如果你得到以下结果,说明你的机器访问 Docker hub 一切顺畅:
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
执行此命令时,Docker 首先在本地查找hello-world
,如没有,它会从 Docker Hub(默认版本库)下载了该镜像。下载镜像后,Docker 会根据镜像创建一个容器,并执行该容器中的应用程序。
您可以通过将docker
命令与search
子命令配合使用来搜索 Docker Hub 上可用的镜像。
例如,要搜索 Ubuntu 的镜像,请输入:
docker search ubuntu
此命令会在 Docker Hub 上搜索并返回名称与搜索字符串匹配的所有镜像列表。
执行后显示的结果如下:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 11102 [OK]
dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 443 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 245 [OK]
consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 220 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 110 [OK]
neurodebian NeuroDebian provides neuroscience research s… 68 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 50 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components=m… 44 [OK]
nuagebec/ubuntu Simple always updated Ubuntu docker images w… 24 [OK]
i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 21
1and1internet/ubuntu-16-apache-php-5.6 ubuntu-16-apache-php-5.6 14 [OK]
1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 13 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10 ubuntu-16-nginx-php-phpmyadmin-mariadb-10 11 [OK]
1and1internet/ubuntu-16-nginx-php-5.6 ubuntu-16-nginx-php-5.6 8 [OK]
1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 7 [OK]
1and1internet/ubuntu-16-apache-php-7.1 ubuntu-16-apache-php-7.1 6 [OK]
darksheer/ubuntu Base Ubuntu Image -- Updated hourly 5 [OK]
1and1internet/ubuntu-16-nginx-php-7.0 ubuntu-16-nginx-php-7.0 4 [OK]
pivotaldata/ubuntu A quick freshening-up of the base Ubuntu doc… 4
pivotaldata/ubuntu16.04-build Ubuntu 16.04 image for GPDB compilation 2
1and1internet/ubuntu-16-sshd ubuntu-16-sshd 1 [OK]
smartentry/ubuntu ubuntu with smartentry 1 [OK]
1and1internet/ubuntu-16-php-7.1 ubuntu-16-php-7.1 1 [OK]
pivotaldata/ubuntu-gpdb-dev Ubuntu images for GPDB development 1
pivotaldata/ubuntu16.04-test Ubuntu 16.04 image for GPDB testing 0
“ OFFICIAL” 列(即官方)对应的镜像,就是出自官方的镜像了,大家可放心使用。
接下来,我们可以用pull
子命令,将你需要的镜像下载到计算机。
本教程我们使用ubuntu
的官方镜像。
docker pull ubuntu
你将看到以下执行结果:
Using default tag: latest
latest: Pulling from library/ubuntu
692c352adcf2: Pull complete
97058a342707: Pull complete
2821b8e766f4: Pull complete
4e643cc37772: Pull complete
Digest: sha256:55cd38b70425947db71112eb5dddfa3aa3e3ce307754a3df2269069d2278ce47
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
下载镜像后,可以用run
来运行镜像。
从上面这个案例我们可以发现,使用run
来执行本地不存在的hello-world
镜像时, docker 发现本地没有这个镜像,会直接在 Docker hub 上查找并下载对应的镜像。
要查看已下载到计算机的镜像:
docker images
输出结果如下:
root@VM-16-5-ubuntu:/home/ubuntu# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 54c9d81cbb44 6 days ago 72.8MB
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
当镜像执行时,它会生成一个容器,我们在容器中添加所需的软件后,可以把这个容器再次打包成新镜像。
运行 Docker 容器
在上一步的例子中,我们执行了hello-world
并学习了如何查看镜像和容器。但其实容器并不仅仅是这样,它可比这有用的多。接下来我们来看看容器能做些什么。
作为示例,让我们用 Ubuntu 最新镜像来运行。使用-i -t 这两个参数,可以让你通过 shell 来管理他们。
docker run -it ubuntu
执行命令后,提示符会变为你正在使用镜像的容器id:
root@7896ef8f403f:/#
Docker运行Nginx
1、获取Nginx镜像
要运行容器,首先需要有相应的镜像,使用下面的命令拉取NGINX镜像:
docker pull nginx
如图所示
2、运行Nginx容器
获取Nginx镜像之后,我们就可以根据镜像来运行容器
docker run --name=nginx -d -p 4030:80 nginx
上面命令的解释如下:
- –name:设置容器的名称。
- -d:表示在后台运行容器。
- -p:指定端口映射。4030是宿主机的端口,80是Nginx容器内部的端口。
- nginx:表示根据nginx镜像运行容器。
如图所示
然后在浏览器里面访问:
出现上面的截图,就说明Nginx容器运行成功。