安装Docker
配置 Docker 的 apt 源
安装包,允许 apt 命令 HTTPS 访问 Docker 源。
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
添加 Docker 官方的 GPG
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
将 Docker 的源添加到 /etc/apt/sources.list
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
安装docker
$ sudo apt-get update
$ sudo apt-get install docker-ce
运行第一个容器
运行容器
$ sudo docker run -d -p 80:80 httpd
查看下载的httpd镜像
$ sudo docker images
查看正在运行的容器
$ sudo docker ps
镜像
hello-world镜像
下载hello-world镜像
$ sudo docker pull hello-world
$ sudo docker run hello-world
通过docker commit 命令构建镜像
下载CentOS的镜像
$ sudo docker pull centos
$ sudo docker run -it centos
安装vi
# yum install vim
在新窗口中查看当前运行的容器
$ sudo docker ps
$ sudo docker commit cool_bhaskara centos-with-vi
$ sudo docker images
$ sudo docker run -it centos-with-vi
通过 Dockerfile 构建镜像
用 Dockerfile 创建上节的 centos-with-vi
$ touch Dockerfile
Dockerfile的内容为:
FROM centos
RUN yum install vim -y
运行docker build命令
$ sudo docker build -t centos-with-vi-dockerfile .
$ sudo docker images
查看新镜像的构建历史
$ sudo docker history centos-with-vi-dockerfile
搭建本地 Registry
启动registry容器
$ sudo docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
$ sudo docker ps
查看仓库内容
打开浏览器,访问http://127.0.0.1:5000/v2/_catalog,可以查看到repositories: [] ,表示现在仓库中没有镜像。
重命名镜像,使之与 registry 匹配
$ sudo docker tag httpd 127.0.0.1:5000/cccxxmo/httpd:v1
上传镜像
$ sudo docker push 127.0.0.1:5000/cccxxmo/httpd
$ sudo docker rmi 127.0.0.1:5000/cccxxmo/httpd:v1
$ sudo docker pull 127.0.0.1:5000/cccxxmo/httpd:v1
查看仓库内容
打开浏览器,再次访问http://127.0.0.1:5000/v2/_catalog,可以看到上传的镜像。
网络
创建自定义网络
创建bridge网络
创建时可以通过指定–subnet和–gateway参数指定IP网段,否则会使用Docker 自动分配的 IP 网段。
$ sudo docker network create --driver bridge my_net
$ brctl show
$ sudo docker network inspect my_net
之后若需要使用新创建的网络,在启动容器时通过–network指定该网络即可。
存储
需创建$HOME/htdocs/index.html
bind mount
将$HOME/htdocsmount到httpd容器
$ sudo docker run -d -p 80:80 -v $HOME/htdocs:/usr/local/apache2/htdocs httpd
验证修改是否生效
$ echo "update index page!" > $HOME/htdocs/index.html
$ curl 127.0.0.1:80
volume container
创建一个volume container
$ sudo docker create --name vc_data -v $HOME/htdocs:/usr/local/apache2/htdocs -v $HOME/vc_test busybox
查看volume和bind
$ sudo docker inspect vc_data
$ sudo docker run -d -p 80 --volumes-from vc_data httpd
$ sudo docker inspect a29ad5280aa3
$ echo "This content is from a volume container!" > $HOME/htdocs/index.html
$ curl 127.0.0.1:32768
data-packed volume container
用Dockfile构建镜像
Dockfile内容如下:
htdocs/index.html内容如下:
build 新镜像 datapacked
$ sudo docker build -t datapacked .
启动 httpd 容器并使用 data-packed volume container
$ sudo docker run -d -p 80:80 --volumes-from vc_data httpd
$ curl 127.0.0.1:80