尝试 docker

开源书籍: docker从入门到实践

ubuntu16.04安装

自动安装

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
或
curl -sSL https://get.daocloud.io/docker | sh

手动安装

sudo apt-get install apt-transport-https ca-certificates

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

sudo apt-get update

sudo apt-get install docker-engine

sudo systemctl enable docker

sudo systemctl start docker

sudo groupadd docker

sudo usermod -aG docker $USER

hello world

命令:

docker pull [OPTIONS] NAME[:TAG]    #拉取某指定的镜像
docker images [OPTIONS] [REPOSITORY][:TAG] #查看本机镜像

拉取hello-world

docker pull hello-world

由于网络问题,所以到网易蜂巢 镜像中心去拉取:https://c.163.com/hub#/m/home/

docker pull hub.c.163.com/library/hello-world:latest

运行docker

docker run [OPTIONS] image[:TAG] [COMMAND] [ARG]...

运行hello-world

docker run hub.c.163.com/library/hello-world # 全名

运行NGINX

拉取镜像

docker pull hub.c.163.com/library/nginx:latest

后台运行

docker run -d hub.c.163.com/library/nginx:latest # -d表示在后台运行 # 返回容器的id:945649a76bc73b523f00b72ef140a603ed2d106c7f9d9c07ff961f859936fb67

docker exec命令

docker exec -- help
Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --help                 Print usage
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])

执行

docker exec -it 94 bash # 进入nginx所在的Linux环境下的bash

停止docker

docker stop docker-id

docker的网络

docker run -d -P 8080:80 docker-name # -P 把所有监听端口都和主机映射

网络类型

  • Bridge:
  • Host:与主机共享同一块网卡
  • None:没有网络,此时Docker不会与外界发生联系

端口映射

获取镜像

从 Docker Registry 获取镜像的命令是 docker pull。其命令格式为:

bash docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

docker pull --help

运行

docker run 就是运行容器的命令

-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。

--rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。

ubuntu:14.04:这是指用 ubuntu:14.04 镜像为基础来启动容器。

bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。

列出镜像

  • 要想列出已经下载下来的镜像,可以使用 docker images 命令。
docker images
  • 列表包含了仓库名、标签、镜像 ID、创建时间以及所占用的空间。

镜像体积

虚悬镜像

  • 由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为 的镜像。这类无标签镜像也被称为 虚悬镜像(dangling image) ,可以用下面的命令专门显示这类镜像:
docker images -f dangling=true
  • 一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
docker rmi $(docker images -q -f dangling=true)

中间层镜像

  • 为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像。所以在使用一段时间后,可能会看到一些依赖的中间层镜像。
  • 默认的 docker images 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数
docker images -a

列出部分镜像

  • 根据仓库名列出镜像
docker images name
docker images ubuntu
docker images ubuntu:16.04
  • docker images 还支持强大的过滤器参数 –filter,或者简写 -f
docker images -f since=mongo:3.2

以特定格式显示

利用 commit 理解镜像构成

  • 现在让我们以定制一个 Web 服务器为例子,来讲解镜像是如何构建的
docker run --name webserver -d -p 80:80 nginx

这条命令会用 nginx 镜像启动一个容器,命名为 webserver,并且映射了 80 端口,这样我们可以用浏览器去访问这个 nginx 服务器。
。。。。

使用 Dockerfile 定制镜像

….

删除本地镜像

docker rmi [选项] <镜像1> [<镜像2> ...] 

用 ID、镜像名、摘要删除镜像。其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。

注意 docker rm 命令是删除容器,不要混淆。

 用 Docker Images 命令来配合

docker rmi $(docker images -q -f dangling=true)
docker rmi $(docker images -q redis)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值