macOS 我们可以使用 Homebrew 来安装 Docker。
Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:
$ brew cask install docker ==> Creating Caskroom at /usr/local/Caskroom ==> We'll set permissions properly so we won't need sudo in the future Password: # 输入 macOS 密码 ==> Satisfying dependencies ==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg ######################################################################## 100.0% ==> Verifying checksum for Cask docker ==> Installing Cask docker ==> Moving App 'Docker.app' to '/Applications/Docker.app'. x1f37a; docker was successfully installed!
在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标()。
启动终端后,通过命令可以检查安装后的 Docker 版本。
$ docker --version Docker version 17.09.1-ce, build 19e2cf6
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。
在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址即可。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。
https://docs.docker.com/docker-for-mac/
打开一个命令行终端,通过运行简单的Docker镜像hello-world来测试你的安装是否工作正常:
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
启动Dockerized Web服务器。就像上面的hello-world图片一样,如果图片不是在本地找到的,Docker会将其从Docker Hub中提取出来。
$ docker run -d -p 80:80 --name webserver nginx
在Web浏览器中,转到http://localhost/
查看nginx主页。因为我们指定了默认的HTTP端口,所以不需要:80
在URL的末尾追加。
早期测试版本用作
docker
主机名来构建URL。现在,端口暴露在虚拟机的私有IP地址上,并转发到localhost
其他主机名称。
在Web服务器运行时(docker container ls
或使用docker ps
)查看容器上的详细信息:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
56f433965490 nginx "nginx -g 'daemon off" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 443/tcp webserver
使用以下命令停止并移除容器和图像。使用“全部”标志(--all
或-a
)查看停止的容器。
$ docker container ls //列出运行的容器
$ docker container stop webserver //停止容器按照容器名称
$ docker container ls -a
$ docker container rm webserver //删除容器
$ docker image ls //列出所有镜像
$ docker image rm nginx //删除镜像
$ docker search 镜像名称 //搜索镜像
$ docker pull 镜像名称 //下载镜像
$ docker inspect 镜像名称 //查看详细的容器信息
# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all
(1)docker container start
前面的docker container run
命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器,就要使用docker container start
命令,它用来启动已经生成、已经停止运行的容器文件。
$ docker container start [containerID]
(2)docker container stop
前面的docker container kill
命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。而docker container stop
命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
$ bash container stop [containerID]
这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
(3)docker container logs
docker container logs
命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果docker run
命令运行容器的时候,没有使用-it
参数,就要用这个命令查看输出。
$ docker container logs [containerID]
(4)docker container exec
docker container exec
命令用于进入一个正在运行的 docker 容器。如果docker run
命令运行容器的时候,没有使用-it
参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
$ docker container exec -it [containerID] /bin/bash
(5)docker container cp
docker container cp
命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。
$ docker container cp [containID]:[/path/to/file] .
Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo
,可以把用户加入 Docker 用户组(官方文档)。
$ sudo usermod -aG docker $USER
Docker 是服务器----客户端架构。命令行运行docker
命令的时候,需要本机有 Docker 服务。如果这项服务没有启动,可以用下面的命令启动。
# service 命令的用法 $ sudo service docker start # systemctl 命令的用法 $ sudo systemctl start docker
对于那些不会自动终止的容器,必须使用docker container kill
命令手动终止。
$ docker container kill [containID]