从docker到k8s进阶
一:基本命令
查看镜像列表:docker images 或者 docker image ls
查看运行的容器:docker container ls 或者docker ps
查看所有容器:docker container ls --all 或者 docker ps -a
查看存储情况:docker system df
运行某个容器:docker start 容器ID/名称
重启某个容器:docker restart 容器ID/名称
停止某个容器:docker stop 容器ID/名称
删除容器:docker rm [-f] 容器ID/名称 (-f可以强制删除正在运行的容器)
删除镜像:docker image rm 镜像名称[:tag] 或者 docker image rm 镜像ID (image rm可以缩写为rmi)
查看某个容器日志:docker logs [-f] 容器ID
进入某个容器:docker exec -it 容器ID/名称 /bin/bash
查看镜像历史提交记录:docker history nginx[:标签]
删除所有容器:docker rm -f $(docker ps -aq) (括号里面的内容是列出所有容器ID)
二:获取镜像
官方提供了公共的镜像仓库:https://hub.docker.com/,我们可以使用命令docker pull从这获取镜像,格式为:
docker pull [选项] [Docker Registry 地址[:端口]/]仓库名[:标签]
Docker镜像仓库地址:地址格式一般是<域名/IP>[:端口],默认是Docker Hub。
仓库名:两段式名称<用户名>/<软件名>,若地址是Docker Hub,不显示写出用户名,默认为library,即官方镜像。
三:运行容器
docker run --name myUbuntu -it --rm ubuntu:16.04 /bin/bash
–rm:退出容器后删除容器
–name:给容器取别名(例如上面的myUbuntu)
-it:以交互方式进入容器
–name:给容器取别名(例如上面的my_nginx)
-d:后台运行
-p 80:80:将宿主机端口和容器端口映射在一起
四:简单制作镜像
docker commit --author "Mr.nobody" --message "简单修改默认首页" my_nginx nginx:v1.0
以my_nginx这个容器为基础,定制新的镜像nginx:v1.0
五:制作镜像
以下以nginx镜像为基础,并且修改nginx首页页面内容,来制作新的镜像nginx:v2.0。
1:新建文件夹,并且进入该文件,再创建Dockerfile文件。
mkdir mynginx
cd mynginx
touch Dockerfile
2:编辑Dockerfile文件,输入以下内容并且保存。
FROM nginx
RUN echo '<h1>Hello My New Nginx!' > /usr/share/nginx/html/index.html
Dockerfile是一个文本文件,包含了一条条指令,每条指令构建一层,描述该层应当如何构建。
FROM 代表要继承哪个基础镜像,FROM scratch 代表不继承任何镜像。FROM是必备的指令,并且必须是第一条指令。
RUN 代表要执行的脚本。可以有多个RUN,一个RUN代表一层。可以将多个脚本命令通过 && 连接起来用一个RUN,这样就只有一层。
3:构建镜像
在当前文件夹mynginx路径下,执行以下命令:
docker build -t nginx:v2.0 .
命令最后有一个“.”,代表将当前构建上下文发送给Docker服务端。从构建输出的日志 Sending build context to Docker daemon 就可以看出。这就是为什么我们首先要创建一个空文件夹(实践中一般在项目根目录),如若在根目录创建Dockerfile文件,会把很多东西甚至整个硬盘的文件都打包发给Docker daemon。这样打包文件会很大而且很慢。
构建完就可以通过docker images命令查看生成的镜像了。
如若不想将某些文件打包,可以在文件夹下创建.dockerignore
文件,在文件里面输入要忽略的文件全名(包括后缀)。
六:归档压缩和加载镜像
有时我们需要将镜像从一个服务器放到其他服务器,可以先归档压缩,然后发给另一个服务器再加载。
归档压缩
docker save nginx:v2.0 | gzip > nginx.v2.0.tar.gz
加载
docker load -i nginx.v2.0.tar.gz
上一篇: 单例模式的几种创建方式
下一篇: Vue CLI