欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker笔记

程序员文章站 2022-03-12 12:22:55
...

Docker概念

  • 镜像(Image)
  • 容器(Container):容器是镜像的一个运行实例。
  • 仓库(Repository)
  • 注册服务器(registry):一个注册服务器上可能有多个仓库,比如ubuntu的仓库,centos的仓库。
  • 公共注册服务器中的仓库(Docker Hub)

Docker常用命令

  • service docker restart ——(重启docker)
  • docker version ——(查看docker是否正常运行)

镜像操作命令

  • docker pull ubuntu:14.04 ——(获取镜像,相当于docker pull registry.hub.docker.com/ubuntu:14.04,即从默认的注册服务器Docker Hub Registry中的ubuntu仓库下载标记为14.04的镜像)
  • docker images ——(列出本地主机上已有镜像)
  • docker tag ubuntu:14.04  myubuntu:14.04 —— (为本地镜像添加新的标签(做标记),使用docker images命令就能看到新命名的镜像,不过它指向的是原来的镜像,只是标签不同)
  • docker inspect ubuntu:14.04 —— (查看镜像详细信息)
  • docker search nginx —— (在远端仓库中搜索镜像)
  • docker rmi ubuntu:14.04 —— (删除镜像,也可以指定镜像id进行删除)
  • docker push myimage:0.1 —— (上传镜像到远程仓库)

创建Docker镜像

创建镜像的方法主要有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。

1.使用已有镜像的容器创建镜像

1.在容器中运行bash应用,然后对容器稍作修改
docker run -it ubuntu:14.04 /bin/bash
[email protected]:/# touch test
[email protected]:/# exit

2.提交新镜像
docker commit -m "Added a new file" -a "Tom" a925cb40b3f0 test:0.1
(-m:信息,-a:作者,后面的是容器id,test:0.1是标识)

3.使用docker images查看

导入和导出镜像

1.导出镜像为tar,这样就可以通过复制tar文件来分析镜像了。

Docker笔记

2.导入镜像

docker load --input ubuntu_14.04.tar

 

 

容器操作命令

  • docker ps -a —— (查看所有容器)
  • docker rm a21c0840213e —— (删除容器,指定容器id)
  • docker create -it ubuntu:latest —— (根据镜像创建一个容器,此时容器处于停止状态)
  • docker start  名字或id —— (启动一个已存在的容器)
  • docker run ubuntu /bin/echo 'Hello world' —— (新建并启动一个容器,执行echo,执行完后容器会自动终止。run命令会先检查本地是否存在指定镜像,不存在会从公共仓库下载。)
  • docker run -it ubuntu:14.04 /bin/bash —— (启动容器后,启动一个bash终端,然后可以进行交互。使用exit或ctrl+d命令要退出)
  • docker run -d …… —— (以后台模式运行)
  • docker logs 名称或id —— (查看容器输出)
  • docker stop 名称或id —— (停止容器)
  • docker restart 名称或id —— (重启容器)
  • docker exec -it 名称或id /bin/bash —— (exec命令可以在容器中执行任意命令)
  • docker export -o a.tar a —— (导出容器a为a.tar)
  • docker import a.tar - test/a:v1.0 —— (导入容器a.tar为test/a,版本v1.0)
  • docker run --name aa zookeeper —— (创建并启动新容器,并命名为aa)

 

端口映射与容器互联

端口映射

docker run -d -P training/webapp python app.py —— (使用大写P参数时,会随机映射49000~49900的端口到内部容器开放的网络端口)

docker run -d -p 5000:5000 training/webapp python app.py —— (使用小写p参数时,可以指定映射的端口)

docker ps命令中可以看到端口映射信息

docker port 名字或id 5000 —— (可以看到容器的5000端口映射到了哪里)

容器互联

使用--link参数可以让容器之间安全地进行交互

docker run -d -P --name web --link db:db training/webapp python app.py

此时,db容器和web容器建立互联关系

 

Docker数据管理

挂载主机目录或文件作为数据卷(这是修改容器中的配置文件的主要方式)

$ docker run --name some-zookeeper  -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg zookeeper

使用-v参数将主机中的$(pwd)/zoo.cfg文件挂载到容器的/conf/zoo.cfg下,这样zookeeper就会读取这个配置并使用。

默认情况下,容器对挂载上去的目录文件具有读写权限,可以通过ro来修改成只读权限。

$ docker run --name some-zookeeper  -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg:ro zookeeper

 

使用Dockerfile创建镜像

例子:(运行java HelloWorld程序)

在当前目录下创建Dockerfile文件,内容如下。(FROM指定基础那个基础镜像,COPY把主机目录下的文件拷贝到镜像中的指定目录,WORKDIR指定接下去命令的工作目录,RUN运行指定命令,CMD用来指定启动容器时默认会执行的命令)

Docker笔记

执行以下命令生成镜像

Docker笔记

 

Docker三剑客

Docker machine

docker machine是用来大规模部署docker的。

Docker Compose

docker compose是官方编排工具,可以让用户通过编写一个简单的模板文件,快速地创建和管理基于Docker容器的应用集群。

Docker Swarm

提供集群服务,使用它,用户可以将多个Docker主机封装为单个大型的虚拟Docker主机,快速打造一套容器云平台。