docker 容器学习
使用ubuntu镜像启动一个容器,参数以命令行模式进入该容器:
$docker run -it ubuntu /bin/bash
参数说明:
-i 交互式操作
-t 终端
ubuntu 镜像
/bin/bash 放在镜像名后的是命令,这里我们希望有个交互式shell
#查看所有容器命令
docker ps -a
#启动一个已停止的容器
docker start b750bbbcfd88
docker run -itd --name ubuntu-test ubuntu /bin/bash
参数-d,容器启动后会进入后台。此时想进入容器,可以通过以下指令进入:
docker attach 或 docker exec 推荐后者
container ID 容器ID;image,使用的镜像;COMMAND ,穷容器时运行的命令;CREATED 容器创建时间;STATUS 容器状态;
状态有7种:created ,restarting , running ,removing 迁移中,paused,exited,dead
PORTS:容器的端口信息和使用的连接类型 tcp udp
NAMES 自动分配的容器名称。
docker attach <容器ID> 注:使用该命令后,如果从这个容器退出,会导致容器的停止。
docker exec -it <容器ID> /bin/bash
docker exec执行后,如果从这个容器中退出,不会导致容器停止。可以进入到mysqlflow容器中
docker stop <容器ID>
停止的容器可以通过
docker restart <容器ID>
导出本地某个容器
#导出容器<容器ID>快照到本地文件 ubuntu.tar
docker export <容器ID> >ubuntu.tar
#导入容器快照,将快照文件导入到镜像中
cat docker /opt/ubuntu.tar | docker import - test/ubuntu:v1
也可以通过制定URL或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
docker rm -f <容器ID>
#该命令可以清理掉所有处于中止状态的容器
docker container prune
用docker构建一个web应用程序
docker pull training/webapp #载入镜像
docker run -d -P training/webapp python app.py
参数-d 让容器后台运行
-P 将容器内部使用的网络端口映射到我们使用的主机上
因此可以通过-P参数来设置不同的端口
docker run -d -P 5000:5000 training/webapp python app.py
通过docker ps 可以查看容器的端口映射,docker还提供了了另外一个快捷方式docker port
docker port <容器ID>/或者容器ID对应的名字
查看web应用程序日志
docker logs -f <容器ID或NAME>
-f让docker logs像使用tail -f 一样来输出容器内容的标准输出
docker top wizardly_chandrasekhar(NAME)
docker inspect <容器NAME>
docker stop 容器ID、NAME
docker start 容器ID
docker ps -l 查询最后一次创建的容器
正在运行的容器可以使用docker restart 命令来重启。
docker rm 容器NAME
删除容器时,容器必须是停止状态,否则会报错:
error response from daemon : You cannot remove a running container 。。。
docker images 列出本地主机上的镜像
docker pull ubuntu:13.10 获取一个新的镜像,当我们在本地主机上使用一个不存在镜像时,docker就会自动下载这个镜像。
Docker Hub网址为 https://hub.docker.com/
docker search httpd 可以使用docker search 命令来搜索镜像
docker pull httpd 使用命令docker pull来下载镜像
docker run httpd 下载后既可以使用该镜像
docker rmi hello-world 镜像删除使用docker rmi
两种方式:
更新镜像,在之前,我们需要使用镜像来创建一个容器:
docker run -t -i ubuntu:15.10 /bin/bash
在运行的容器内使用,(进入容器 docker exec )
apt-get update 命令来更新,在操作之后,输入exit命令来退出这个容器。
通过docker commit 来提交容器副本
docker commit -m=“has update” -a =“runoob” 容器ID runboob/ubuntu:v2
参数说明:
-m 提交描述信息
-a 制定镜像作者
容器ID
runboob/ubuntu:v2 制定要创建的目标镜像名称
docker build 从零开始创建一个新的镜像
cat Dockerfile
FROM centos:6.7
MAINTAINER Fisher "[email protected]"
RUN /bin/echo 'root:123456' | chpasswd
RUN useradd runoob
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
第一条FROM ,指定使用那个镜像源
RUN指令告诉docker在镜像内执行命令,安装了什么
然后我们使用Dockerfile文件,通过 docker build 命令来构建一个镜像
dockers build -t runoob/centos:6.7 .
参数说明:
-t 指定要创建的目标镜像名
.: Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为…
使用新的镜像来创建容器:
docker run -t -i runoob/centos:6.7 /bin/bash
docker tag 860c279d2fec funoob/centos:dev
docker tag 镜像ID :860c279d2fec ,用户名称/镜像源名(repository name)
和新的标签名tag ,仓库名:funoob/centos
docker run -d -P training/webapp python app.py
可以指定容器绑定的网络地址,比如绑定127.0.0.1
使用-P参数创建一个容器,使用docker ps 可以查看容器端口5000绑定主机端口32768
-P容器内部端口随机映射到主机的高端口
-p容器内部端口绑定到指定的主机端口
docker run -d -p 5000:5000 training/webapp pyton app.py
指定绑定IP
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
docker ps
默认都是绑定tcp端口,如果要绑定UDP端口,可以在端口后面加上/udp
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
docker port 命令可以让我们快捷的查看端口的绑定情况
docker port container_name 5000
端口映射并不是唯一吧docker连接到另一个容器的方法。
docker有一个连接系统允许将多个容器连接在一起,共享连接信息。
docker连接会创建一个父子关系,其中父容器可以看到自容器的信息。
当我们创建一个容器的时候,docker会自动对它进行命名。
docker run -d -P --name runoob training/webapp python app.py
docker ps -l 使用docker ps 命令来查看容器名称
参考:
https://www.runoob.com/docker/docker-image-usage.html
https://www.kubernetes.org.cn/doc-9 k8s
kubernetes
https://my.oschina.net/jamesview/blog/2994112
docker kubernate
https://www.cnblogs.com/l-hh/p/10395730.html
容器参考