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

--------------------------------
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

查看本地所有镜像

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入门)