美文网首页
2019-12-22 【机器学习笔录】Docker入门

2019-12-22 【机器学习笔录】Docker入门

作者: 狐二丶 | 来源:发表于2019-12-23 12:21 被阅读0次
    --------------------------------
    Author : ShawnDong
    updateDate :2019.12.22
    Blog : ShawnDong98.github.io
    --------------------------------

    概念

    Docker系统有两个程序:docker服务端和docker客户端。

    docker服务端是一个服务进程,管理着所有的容器。

    docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。

    容器和镜像的区别

    我的理解是容器是还没成型的镜像。

    我们不断向容器里添加内容,当容器环境配置好了以后,进行打包,打包好的容器就叫镜像。

    在容器中安装程序以及进入容器

    docker run learn/tutorial apt-get install -y ping

    出现

    Reading package lists...
    E: Unable to locate package ping
    Building dependency tree...
    Reading state information

    先进入容器

    docker run -t -i ubuntu
    apt-get update
    apt-get upgrade
    apt install iputils-ping # ping

    Docker 参数 -i -t 的作用*
    通常的解释是: -t让docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开.

    问题
    所以通常都是这样的: sudo docker run -it ubuntu 进入了命令交互界面
    但是如果不加呢? sudo docker run ubuntu 或sudo docker create ubuntu & sudo docker start ubuntu
    这样的话, docker容器无法启动。

    原因
    Docker中系统镜像的缺省命令是 bash,如果不加 -ti bash 命令执行了自动会退出。这是因为如果没有衔接输入流,本身就会马上结束。加-ti 后docker命令会为容器分配一个伪终端,并接管其stdin/stdout支持交互操作,这时候bash命令不会自动退出。

    保存对容器的修改

    查看容器id

    docker ps -l

    提交指定容器保存为新的镜像

    docker commit <container id> <new image name>

    查看本地所有镜像

    docker images

    注意:

    docker commit前需要停止容器
    我安装完ping之后试了下ping www.baidu.com 然后 commit,结果就是查看镜像信息时里面COMMAND有“ping www.baidu.com”,造成每次以这个镜像启动一个容器就会去ping 百度了

    运行新的镜像

    > docker run ubuntu/learn ping www.google.com

    检查运行中的镜像

    docker inspect efe

    efe为镜像的id前面部分

    发布自己的镜像

    首先需要登录docker的站点,然后docker login,成功后使用docker tag修改测试运行过的image,然后再docker push 【账号】/【docker】:【tag】,如果没给tag,默认就是latest,如果制定了,以后pull镜像就需要指定tag

    先在https://hub.docker.com/注册个账号,然后再linux端docker login,打tag,再然后docker push上去

    登陆之后仍然报错

    learn/ping前面的learn是你在Docker Hub的注册名,所以把learn改成你的注册名再push

    先login

    docker login

    再打tag

    docker tag ubuntu/learn xxx/learn

    xxx是你的dockerHub的id

    再push

    docker push xxx/learn

    删除镜像和容器

    删除镜像

    docker rmi id

    当一个镜像被多次打tag后需要先把tag的镜像删了

    docker rmi xxx

    xxx是镜像名称

    删除镜像前必须先删除使用着的容器

    删除容器

    docker rm id

    删除容器前必须先停止容器

    停止容器

    docker stop id

    删除所有的容器和镜像

    删除之前需要停止所有的容器

    docker stop $(docker ps -a -q)

    删除所有容器

    docker rm $(docker ps -a -q)

    删除所有镜像

    docker rmi $(docker images -q)

    相关文章

      网友评论

          本文标题:2019-12-22 【机器学习笔录】Docker入门

          本文链接:https://www.haomeiwen.com/subject/zueanctx.html