docker

docker学习

下载对应镜像
以下操作直接去公共网络下载指定镜像。
docker pull “加上对应需要镜像的名称”:“对应镜像的版本”
docker pull ubuntu:lates
如版本号不加默认是下载最新的。
对应需要指定某个域下载。
docker pull “加上下载域名”:“下载端口”/ “加上对应需要镜像的名称”:“对应镜像的版本”
如:docker pull registry.hub.docker.com/ubuntu:latest
对应需要下载的镜像版本等无法完全确认,并且不需要最新的
搜索镜像下载
可以使用docker search “加上对应镜像名称”进行镜像搜索去下载。
删除镜像
对应删除镜像可以使用命令
docker rmi 输入对应的镜像名称删除,对应如有多相同镜像名称标识的,都会进行删除。
使用镜像id进行删除
docker rm 加上镜像id
对应如镜像正在运行容器中,那么可以先使用docker ps -a查看现在的容器使用
然后使用docker rm 加上容器id删除容器,然后再删除对应的镜像既可。
 
对应运行某个镜像可以使用
docker run -ti 镜像名称 /bin/bash
运行后对应当前镜像创建的容器id如图显示
以当前容器创建镜像
如使用exit退出当前容器后,再次进入其是会生成新的容器,如需要保留对应之前容器中创建的内容,可以在退出的时候使用以下命令创建对应容器镜像
docker commit -m “需要提交的信息” -a “作者签名” 对应之前容器id 加上对应需要创建的镜像名称
如图进入对应新创建的镜像,可以看到之前创建的容器内容。

导出镜像
将已经创建或者下载的镜像导出
docker save -o 镜像保存名称,一般是.tar后缀 再加上对应的现在运行镜像名称。
导入对应本地的镜像
docker load –input 镜像文件名称
docker load < 镜像名称
导入镜像包括对应之前导出的镜像所以信息
 
对应新建容器
docker create -it 容器名称
 
对应容器创建后默认其是停止状态,需要使用docker start 加容器id启动
而对应之前用到的docker run 其等价于同时执行了docker create和docker start
创建守护状态运行的容器
docker run -d 镜像名称 /bin/sh -c “运行参数”
停止对应的容器
docker stop 加上容器id
重启对应容器
docker restart 加上容器id
进入容器
docker attach 该方法进入后,如多个窗口进入同一个容器,其对应容器内容是同步的,所以导致对应如有一个容器执行内容卡住,其他的也会卡住。
exec命令也可以进入对应容器
命令如 docker exec -ti 加上容器id /bin/bash
重命名对应容器name值
docker rename 原来的name 现在的name

导出容器,该命令导出运行中的容器也是可以的
docker export 加上容器id >到指向的导出文件名称
如图

导入容器命令,对应命令导入后会成为镜像
cat 容器文件名称 | docker import -对应镜像名称和标识
对应前面的docker load命令导入方法和docker import基本相同,唯一差异后者可以直接重新命名新标识,而前者为对应之前的标识这些。
 
本地目录作为磁盘挂载到docker容器中
docker run -d -P –name 建立的容器名称 -v 本地目录:容器目录 安装容器需要的镜像 容器运行的守护进程
挂载一个文件到容器中的一个文件下。

注:默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另外一方面,你也可以保存容器所产生的数据。但是当你仅仅需要短暂的运行一个容器,并且这些数据不需要保存,你可能就希望Docker能在容器结束时自动清理其所产生的数据。
 
这个时候你就需要–rm这个参数了。 注意:–rm 和 -d不能共用!
–rm=false: Automatically remove the container when it exits (incompatible with -d)
 
创建一个共享的数据卷容器,其他容器可以挂载该数据卷容器进行数据同步
docker run -it -v 数据卷目录 –name 容器名称 容器镜像
其他容器创建挂载对应数据卷容器
docker run -it –volumes-from 数据卷目录 –name 容器名称 容器镜像
实现效果

利用数据卷容器进行对应数据迁移
docker run –volumes-from 数据卷目录 -v 挂载本地目录:指定容器目录 –name 容器名称 容器镜像 tar cvf 打包对应目录到某个目录下
设置一个容器和另外一个容器连接,实现其2个容器连接通信
新建一个容器
docker run -ti –name db1 centos /bin/bash
并保持该容器运行中的状态。
然后docker run -ti –name web111 –link db1:db1 centos /bin/bash
创建对应2个容器的连接,对应–link就是连接的主要,前面一个db1是要连接到的容器,后面一个db1是为当前创建的连接管道命名
如要查看某个容器的连接,使用docker inspect 容器id

使用dockerfile创建镜像
如使用当前目录下的dockerfile创建命令如:docker build -t 对应标签名
如使用某个目录下的dockerfile创建命令如:docker build -f 目录地址

对应dockerfile的一个格式

ENTRYPOINT(设置container启动时执行的操作)
设置指令,指定容器启动时执行的命令,可以多次设置,但是只有最后一个有效。
两种格式:
1.ENTRYPOINT [“executable”, “param1”, “param2”] (like an exec, the preferred form)
2.ENTRYPOINT command param1 param2 (as a shell)
该指令的使用分为两种情况,一种是独自使用,另一种和CMD指令配合使用。
当独自使用时,如果你还使用了CMD命令且CMD是一个完整的可执行的命令,那么CMD指令和ENTRYPOINT会互相覆盖只有最后一个CMD或者ENTRYPOINT有效。
  1. # CMD指令将不会被执行,只有ENTRYPOINT指令被执行
  2. CMD echo “Hello, World!”
  3. ENTRYPOINT ls -l
另一种用法和CMD指令配合使用来指定ENTRYPOINT的默认参数,这时CMD指令不是一个完整的可执行命令,仅仅是参数部分;ENTRYPOINT指令只能使用JSON方式指定执行命令,而不能指定参数。
  1. FROM ubuntu
  2. CMD [“-l”]
  3. ENTRYPOINT [“/usr/bin/ls”]

发表评论