Docker系列二:玩转单个容器

搜索想要的镜像

那么对于宿主机上运行的服务比,在容器内运行有以下两种优势

docker 保存镜像_docker如何保存镜像docker 保存镜像_docker如何保存镜像


docker 保存镜像_docker如何保存镜像


1.配置:将服务放入容器,提前配置好提供服务所需的程序、库、配置文件等,无须担心宿主机是否有这些组件。若有需要也很容易将容器迁移到另一个宿主机上。

2.隔离:每个容器有自己单独的文件系统和网络接口,能按需运行多个相同的服务容器。每个容器使用各自的IP和端口来公开其服务,这些服务之间不会彼此冲突。

在虚拟机内安装容器测试后发现虚拟机内的容器性能接近于物理机。

1.查看容器镜像 docker ps -a

3.在容器内运行命令 apt-get update

如图所示可以安装想装的软件了 apt-get install vim

registry是一个位置——在那里能够找到许多reitory相关联的镜像。

reitory是一个名字——Docker用它来代表多个镜像。

docker search ubuntu

docker search -s 10 ubuntu

国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 和国内很多云服务商都提供了国内加速器服务,我们以 Docker 加速器 为例。

CentOS 7

请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

之后重新启动服务。

配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker ,如果从结果中看到了如下内容,说明配置成功。

然后根据旁边的提示 docker pull oraclelinux

拉取镜像并不是将镜像放入系统的方式,可以将本地系统的镜像保存到一个tar文件,然后传输到另外一个系统中,在那里装载他。

docker se 命令会保存与特定的reitory关联所有的镜像。

docker images

docker se -o mysql.tar mysql

du -sh mysql.tar

修改mysql权限,root注意要有

用SCP命令传输tar文件到另外一个系统中【centos传输至unbuntu】

【unbuntu需要scp能连接上】

sudo apt install

scp mysql.tar 192.168.140.134:/tmp

在unbuntu中装载mysql.tar

docker load -i /tmp/mysql.tar

docker export -o pg_1018export.tar 63

docker import pg_1018export.tar pg3

但是需要注意运行导入的镜像的时候必须带command,否则容器不能运行。

在新的地方装载

docker se保存的是镜像(image),docker export保存的是容器(contain查看docker下的镜像,选择mysql进行打包。er)

查看镜像,进行打包

查看容器,进行打包

对比两者打包后的大小和内容

对比可以看到容器内容是一个linux的文件目录

镜像的内容拆开看到:

其实就是一个稍后deployment会部署完成,创建以下serv分层的系统

Docker镜像实际上就是由这样的一层层文件进行叠加起来的,上层的文件会覆盖下层的同名文件。

如果将镜像中各层文件合并到一起,基本就是容器打包后内容。由于镜像里的各层文件会有很多重复文件,所以镜像打包后会比容器大那么一点。

简单地总结就是下面这样

se — 镜像 打包—用 load 载入,用import可以载入但启动不了。

export — 容器 打包—用 import 载入,用load不能载入,docker load必须要载入的是一个分层文件系统。

查看正在运行或暂停容器 docker ps

查看停止的容器 docker ps -a

停止 docker stop CONTAINER ID

重启 docker restart CONTAINER ID

暂停 docker pause CONTAINER ID

取消暂停 docker unpause CONTAINER ID

docker run 创建新的容器

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

详细见

以mysql的镜像为例子

[root@localhost text]# docker run -it mysql /bin/bash

然后也可以达到进入容器内的相同效果

在minikube上使用本地docker镜像

如果直接运行 kubectl create deploy whatr --image=whatr:latest --port=8080 --image-pull-pol2.进入容器里面 docker exec -it f74716b965d7 /bin/bash 或者 docker exec -it f74716b965d7 "bash"icy=Nr 会提示没有--image-pull-policy这个选项

minikube有自己的docker程序,不同于本地的dokcer,如果需要使用本地build的镜像,而不从网上拉取,需要以下步骤:

启动 docker start CONTAINER ID

执行完毕后进入minikube dashboard修改deployment的配置,将

改为以下并保存