【docker基础学习篇2】docker的安装及其使用

Centos7版本安装docker

docker的相关进程:
docker-proxy: 这个进程专门负责端口映射(监听端口)
dockerd : docker server 的进程
containerd: 整个容器的管理进程
containerd-shim-runc-v2:具体某个容器对应的进程

使用存储库安装

假如你是一台新的主机,首次安装Docker Engine之前,您需要设置Dokcer存储库。之后,您可以从存储库安装和更新Docker
设置存储库
安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定存储库。

sudo yum install -y yum-utils
# 国外源
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  #  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  阿里源

安装后会存储到 /etc/yum.repos.d 目录下,形成 docker-ce.repo引擎包,该文件提供了docker的官方下载地址。

安装 Docker 引擎
1、安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:

yum install docker-ce docker-ce-cli containerd.io

2、启动docker

systemctl start docker  

如果启动失败,建议关闭selinux
设置:SELINUX=disable

[root@localhost yum.repos.d]# vim /etc/selinux/config 
# 查看selinux状态
[root@localhost yum.repos.d]# getenforce 

更改国内源
在 /etc/dokcer目录下新建daemon.json文件
文件配置如下:

{"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]}

3、重启docker服务

systemctl restart docker.service
service docker restart

4、启动容器

 # 创建并且启动
 [root@localhost docker]# docker run --name sc_nginx_1 -p 80:80 -d nginx
    name:指定容器名字
    p:指定端口 第一个为真实机器的端口,第二个是容器端口 通过iptables实现映射到容器中
    d: 后台运行
注意启动时,真实机器的端口是否被占用,如被占用需要释放端口
使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能

# 停止容器
 [root@localhost docker]# docker stop 容器名字
 # 启动容器
 [root@localhost docker]# docker start 容器名字
# 设置docker开机启动
[root@sc-docker-1 ~]# systemctl enable docker

在容器会使用的DNAT向宿主机发布docker内网服务,宿主机再通过iptables、SNAT实现端口映射到容器,docker在启动的同时会在iptables中添加DOCKER链路,当你的docker启动一个容器时会在DOCKER链路中添加DANT规则

docker命令

# 查看docker版本
[root@localhost yum.repos.d]# docker version
# 查看本机有哪些docker镜像
[root@localhost yum.repos.d]# docker images 
# 下载镜像 从docker hub仓库中下载镜像
docker pull nginx  加冒号指定下载版本
# 查询某个服务有哪些镜像
[root@localhost docker]# docker search nginx
# 查看启动的容器(包括没有启动成功的)
[root@localhost docker]# docker ps -a
# 查看docker容器的ip地址
[root@localhost ~]# docker inspect sc_nginx_1
# 查看容器的详细信息
[root@sc-docker-1 ~]# docker inspect sc_nginx_1
# 查看容器中的进程
[root@sc-docker-1 ~]# docker top sc-redis```
# 删除容器
[root@sc-docker-1 ~]# docker rm 容器的ID
# 进入容器内部:打开一个终端
[root@localhost ~]# docker exec -it sc_nginx_1 /bin/bash
# 查看容器中的进程
[root@sc-docker-1 ~]# docker top sc-redis

导入、导出镜像(save\load、export\import)

导出: docker save: 是用来将一个或多个image打包保存的工具
导入:docker load

# 导出 save 导出的是docker本地静态的导出的是一个镜像
[root@sc-docker-1 ~]# docker save redis >  redis.tar
[root@sc-docker-1 ~]# docker save -o redis.tar redis
[root@sc-docker-1 ~]# docker save --output redis.tar redis
# 传输
[root@sc-docker-1 ~]# scp redis.tar 192.168.163.137:/root
# 导入
[root@localhost ~]# docker load -i redis.tar 

docker export如果指定的是container,docker save将保存的是容器背后的image。
导出: docker export
导入: docker import

 将container的文件系统进行打包 导出的是一个容器 注意必须指定容器名字而不是镜像名字
[root@sc-docker-1 ~]# docker export sc-nginx_1 > nginx.tar
[root@sc-docker-1 ~]# docker export --output/-o nginx.tar sc-nginx_1
# 传输
[root@sc-docker-1 ~]# scp nginx.tar 192.168.163.137:/root
#将打包的container载入进来使用docker import
[root@sc-docker-1 ~]# docker import nginx.tar nginx:sc-nginx

docker import将container导入后会成为一个image,而不是恢复为一个container。 docker
import可以指定IMAGE[:TAG],说明我们可以为镜像指定新名称

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

总结一下docker save和docker export的区别:

  1. docker save保存的是镜像(image),docker export保存的是容器(container);
  2. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像
  3. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值