docker基本使用加载和输出

简介: docker基本使用加载和输出

前言

这是个人的docker使用总结


安装docker

  • 直接安装docker,

参考此文:https://yeasy.gitbook.io/docker_practice/install/ubuntu

  • 离线安装的

在docker官网选择一下三个文件,手动安装https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/

版本号大家可以自己按照自己系统来

839886cd3c004deb9abdba851aa48a4c.png

使用docker

加载docker镜像

sudo docker load   <  test.dockerimage

查看本机的镜像

使用 docker images 或者 docker image list 命令查看本机所有的镜像。

839886cd3c004deb9abdba851aa48a4c.png

初次从镜像启动容器

启动有很多种方式,run exec 等,这里使用了run,并且用了端口映射,希望别的设备进行访问。

sudo docker run -it -d -p 3033:22 f81f02c7ce16[镜像] /bin/bash

Docker-端口映射可使用-p、-P来实现:

-p指定要映射的端口,一个指定端口上只可以绑定一个容器

-P将容器内部开放的网络端口随机映射到宿主机的一个端口上

例如:将容器指定端口随机映射到宿主机一个端口上,docker run -P 80 -it ubuntu /bin/bash

将容器指定端口指定映射到宿主机的一个端口上,docker run -p 8000:80 -it ubuntu /bin/bash

具体参考可以看这篇:https://www.jianshu.com/p/b92d4b845ed6

-d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec。

具体内容可以参考这篇文章:https://yeasy.gitbook.io/docker_practice/container/daemon

查看本机的容器

使用 sudo docker ps -a 命令查看本机所有的容器

839886cd3c004deb9abdba851aa48a4c.png

启动和关掉已经存在的容器

启动容器 sudo docker start c1b6333e7ee2[容器] 关闭容器sudo docker stop c1b6333e7ee2[容器]

不杀掉容器的情况下退出

进入容器之后,我们会有时候需要退出,这时候使用ctrl + d退出,容器也要死掉,这时候有两种方式可以退出不让容器死掉:

1.不使用ctrl + d 使用组合命令,ctrl + p + q

还有一种方式ctrl + d退出不杀掉容器

2.启动时候使用 exec,例如:先使用sudo docker start c1b6333e7ee2[容器] , 再使用 sudo docker exec -it c1b6333e7ee2[容器] /bin/bash 进入一个已经启动容器,这时候我们使用ctrl + d退出,容器是不会被杀掉的。

按照目前的容器创建自己的image

sudo docker commit -m="update" -a="羽林君" 289e963a60ad[容器] test:v2 新建一镜像

宿主主机与容器互相传输文件

1、从容器中copy文件到宿主机器

命令:docker cp 容器名:在容器里要拷贝的文件路径 要拷贝到宿主机器的路径

sudo docker cp container:/home/test.txt /home/Document

2、从宿主机器copy文件到容器里

命令: docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

sudo docker cp /home/Document/test.txt container:/home/

3.需要注意的是,不管容器有没有启动,拷贝命令都会生效。

本地镜像的导出、导入(export、import、save、load)

使用 export 和 import

这两个命令是通过容器来导入、导出镜像.

(1) export 导出镜像 ,使用 docker export 命令根据容器 ID 将容器的文件系统归档信息输出到文件。

sudo docker export cd06d0c64c04 > test.tar
sudo docker export -o test.tar test

上面命令执行后,可以看到文件已经保存到当前的 docker 终端目录下。

(2) 导入镜像 使用 docker import 命令则可将这个镜像文件导入进来。

sudo docker import  new_test <  test.tar
sudo docker import  test.tar  test

从上面的命令可以看出,docker import将container导入后会成为一个image,而不是恢复为一个container。

此外,也可以通过指定 URL 或者某个目录来导入,例如

sudo docker import http://example.com/exampleimage.tgz example/imagerepo

执行 docker images 命令可以看到镜像确实已经导入进来了。

  1. 使用 saveload
    这两个命令是通过镜像来保存、加载镜像文件的。

(1) 保存镜像 下面使用 docker save 命令根据 ID 将镜像保存成一个文件。

sudo docker save d7693aba42dd > test.tar

我们还可以同时将多个 image 打包成一个文件

sudo docker save [images] [images] > [name.tar]
sudo docker save -o  [name.tar]  [images] [images] ......

(2) 载入镜像 使用 docker load 命令则可将这个镜像文件载入进来。

sudo docker load < test.tar

最后再说一下 使用 export 、import 和 使用 save 和 load 的差异:

1,文件大小不同

export 导出的镜像文件体积小于 save 保存的镜像

2,是否可以对镜像重命名

docker import 可以为镜像指定新名称

docker load 不能对载入的镜像重命名

3,是否可以同时将多个镜像打包到一个文件中

docker export 不支持

docker save 支持

4,是否包含镜像历史

export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息(即仅保存容器当时的快照状态),所以无法进行回滚操作。

而 save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。

5,应用场景不同

docker export 的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。

docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,然后拷贝到客户服务器上使用 docker load 载入。


结语

这就是我自己的一些docker使用分享。如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。


目录
相关文章
|
Java Linux 应用服务中间件
Docker的基本使用 2
Docker的基本使用
162 1
|
Ubuntu Linux Docker
[笔记]Centos/Ubuntu/Windows/Docker 安装使用Aria2及Aria2基本使用
[笔记]Centos/Ubuntu/Windows/Docker 安装使用Aria2及Aria2基本使用
555 0
|
存储 安全 Linux
Docker 离线安装与基本使用
Docker 离线安装与基本使用
2292 0
Docker 离线安装与基本使用
|
5月前
|
Java Linux Shell
Docker的基本使用
Docker的基本使用
47 0
|
Docker 容器
docker保存镜像、打包tar、加载tar镜像
本文记录docker保存镜像、打包tar、加载tar镜像。
1729 0
|
7月前
|
运维 Linux Shell
Docker详解(五)——Docker基本使用
Docker详解(五)——Docker基本使用
40 0
|
7月前
|
Ubuntu Linux Docker
Docker 安装与基本使用
Docker 安装与基本使用
106 0
|
关系型数据库 MySQL 应用服务中间件
Docker基本使用
初识Docker 什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 应用部署的环境问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。 Docker解决依赖兼
53 1
|
Ubuntu NoSQL Linux
一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等
1、Docker的基本概念 2、常用的Docker命令 3、虚拟机安装Docker
|
Docker 容器
Docker导出和加载镜像
Docker导出和加载镜像