docker随笔1

1.docker常用命令集合:

执行docker的时候建议使用root用户进行操作,ubuntu/deepin 如果没有设置root的密码,可以执行以下命令

sudo  passwd

设置root密码

切换root 用户: 使用su命令

docker pull name       #拉取镜像
docker images #获取镜像的列表
docker inspect imageid #以package.json的形式显示镜像的详细信息。
docker search keyword #根据关键词搜索相应的镜像。
docker rmi image/id #删除镜像

2.创建镜像

创建镜像有三种方式,

  基于已有镜像容器创建,

  基于本地模版创建,

  基于dockerfile创建

2-1 基于已有镜像创建容器:

  容器是不会保存用户的修改的,如果想持久化就需要docker commit,创建一个新的容器。

  基于已有镜像进行创建容器,就是commit的过程。

  

docker commit -m "commit message" -a "author"  imageid

实例:

docker images  #查看已有镜像
docker search ubuntu #搜搜ubutnu镜像
docker pull rmrbest/ubuntu16-phalcon-php7  #拉取镜像,这个是我搜到的排行靠前的镜像 
docker run -ti rmrbest/ubuntu16-phalcon-php7  /bin/bash  #进入容器

进入容器以后创建一个php文件

echo "<?php echo "Hello,world"" >> hello.php

退出容器 : exit

创建新的镜像:

docker commit 678023e1884f(进入的原来的镜像的id)  mytest(新镜像的名字)

基于已有镜像创建新的镜像完成。

因为下的这个镜像有些大,所以我要删除镜像

docker rmi mytest

发现报错,因为我的容器应用正在后台运行,所以需要先删除该镜像下的所有容器

docker ps -a #查看所有docker进程
dcoker rm container_id #删除容器

如果嫌麻烦也可以直接强制删除,不推荐

docker rmi  -f image_id

==========================================================================================

 2-2基于本地模版创建

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

使用import对本地的文件末班导入成镜像。

3.导出和载入镜像

  导出:将已有的镜像导出成本地文件。

  

docker save -o  test.tar rmrbest/ubuntu16-phalcon-php7

  -o参数 将镜像文件放到指定文件中

  载入:将本地的导出的镜像再次载入本地镜像:

 

docker load --input  test.tar
或
docker load < test.tar

4.容器

创建容器:

  

docker create it image_id 

dokcer start container_id(容器的id)

通过create创建的容器是一个未启用的容器

创建并使用:相当于create 和 start合并了

docker run   [option] image

终止容器

docker stop container_id  #停止容器

 导入导出容器:

docker export -o  filename   container_id 
#实例
docker export -o test.tar 2c6(名称只填写下部分可以用于区分即可)

导入容器

docker import filename
#实例 docker import test.
tar

5.仓库

在docker.hub中有各种各样的镜像,单个单词的镜像是经过docker公司验证的,带有/ 的是用户自己上传的。

创建私有仓库:

 官方提供了一个registry镜像用于搭建本地私有化的仓库。

docker pull registry #先获取registry镜像

运行并将仓库的目录执行文件夹:registry默认是放到/tmp/registry里的,需要-v参数进行指定(这里-v是创建一个数据卷,用于容器间的数据共享和重用)

docker run -d -p 5000:5000 -v /home/lx/docker/registry:/tmp/registry registry

这句的意思是,后台启动registry镜像,并对外开放端口5000端口,仓库存放文件目录是/home/lx/docker/registry文件夹。启动的是一个私有化仓库的服务。

管理私有化仓库: 

使用tag命令标记一个镜像用于区分

docker tag hub.c.163.com/library/nginx 127.0.0.1:5000/mypull

再上传之前需要增加一个配置,因为docker push 默认走的是https的,所以会报错

vi /etc/docker/daemon.json

增加下面:

{
 "insecure-registries": [
      "127.0.0.1:5000"
    ]
}

提交刚才打好标签的镜像

docker push  127.0.0.1:5000/mypull

检测效果,删除本地的mypull,

docker rmi  127.0.0.1:5000/mypull
docker images docker pull
127.0.0.1/mypull

6.总结 :

仓库,镜像,容器是docker里面最重要的三个东西,可以通过类比增强记忆,仓库就像各种操作系统的集合,里面存着windows的各个版本,你可以从里面下载制作自己的系统,镜像可以类比成我们的windows操作系统,而容器就相当于一个个的软件,启动软件由点击变成了通过命令来执行。

  

原文地址:https://www.cnblogs.com/callmelx/p/11024508.html