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操作系统,而容器就相当于一个个的软件,启动软件由点击变成了通过命令来执行。