Linux下Docker环境搭建及docker常用命令

勿以浮沙筑高台


Linux下安装Docker步骤

  1. 要求 CentOs 系统的内核版本高于 3.10,可通过如下指令查看版本

    uname -r
    
  2. 安装docker ce即社区免费版,先安装必要的软件包,安装yum-utils,它提供一个yum-config-manager单元,同时安装的device-mapper-persistent-data和lvm2用于储存设备映射(devicemapper)必须的两个软件包。

    sudo yum update
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 紧接着配置一个稳定(stable)的仓库 ,仓库配置会保存到/etc/yum.repos.d/dockerce.repo文件中。此处我们使用阿里云。

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  4. 更新docker安装包

    sudo yum makecache	
    
  5. 查看版本信息

    yum list docker-ce --showduplicates | sort -r
    
  6. 安装

    yum install docker-ce
    
  7. 安装完成后进行输入docker info查看
    出现报错信息
    WARNING: IPv4 forwarding is disabled
    WARNING: bridge-nf-call-iptables is disabled
    WARNING: bridge-nf-call-ip6tables is disabled
    解决办法:

    解决办法:
    
    vi /etc/sysctl.conf
    
    添加以下内容
    net.ipv4.ip_forward=1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    
    最后再执行
    
    sysctl -p
    
  8. 设置开机启动

    sudo systemctl start docker
    sudo systemctl enable docker
    
  9. 验证

    docker version
    

    出现或者
    在这里插入图片描述

    sudo docker ps
    

    成功
    在这里插入图片描述

Docker常用命令

  1. 拉取镜像
```java
#busybox是一个缩小的镜像
docker pull busybox	
#拉取一个ngix的镜像
docker pull ngix
#查看镜像
docker images    
```	
  1. 运行镜像
```java
#运行一个别名叫busybox-test的busybox容器
#-i: 交互式操作。
#-t: 终端。
#-d:代表后端运行
#sh:代表启动一个shell脚本的命令操作窗口
docker run -it --name busybox-test busybox sh
#-d:代表后端运行
#启动一个后端运行,别名称为busybox-test的busybox运行容器
docker run -d  --name busybox-test busybox 
```
  1. 进入容器
```java
#	进入容器交互界面
docker exec -it '别名称'  /bin/bash
#	或者
docker exec -it '别名称'  sh
```
  1. 删除容器
```java
#	删除容器
docker rm '镜像别名称'
```

Docker网络模式

搭建集群的时候需要IP是固定因此需要

  1. 查看网络模式
    	docker network ls
    
    在这里插入图片描述
    bright:桥接网络
    host:共享
    null:代表我们自己定义网络
  2. 创建一个网络
    # --driver bridge代表桥接模式
    # --subnet=172.19.0.0/16,代表创建一个16网段的IP
    # --gateway=172.19.0.1,网关为172.19.0.1
    # --dockercompose别名称
    docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 dockercompose
    
  3. 运行一个固定的IP
    #运行别名称为nginx-first网络配置为dockercompose ip为172.19.0.6的ngix容器
    docker run -d --name nginx-first--network=dockercompose --ip 172.19.0.6 nginx
    
  4. 查看运行的IP是多少
    [root@localhost es]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
    9d0d9b68a50c   nginx     "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   80/tcp    nginx-first
    [root@localhost es]# docker inspect 9d0d9b68a50c   #为CONTAINER ID 
    

Docker快照

  1. 生成快照

    [root@localhost es]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
    9d0d9b68a50c   nginx     "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   80/tcp    nginx-first
    #	生成快照
    #	9d0d9b68a50c   为容器ID
    [root@localhost es]#	docker export 9d0d9b68a50c   > nginx.tar
    
  2. 导入快照拉取容器

    # nginx.tar快照名
    #	v1 版本
    #nagix名字
    cat nginx.tar | docker import - nginx:v1
    
  3. 运行容器

    docker ps
    docker run -it ID(镜像) /bin/bash
    

Docker File构建镜像

容器,docker file,仓库的关系是,容器运行在linux上类似于类对象,docker file是构建上层镜像的文件,仓库是从远端拉取的镜像的地址。
dockfile能将镜像以前没有的命令,执行shell脚本下载下来构建新的健全镜像。

DockerFile的指令

#	FROM 指定基础镜像
FROM <image>

FROM <image>:<tag>

FROM <image>:<digest>


#shell格式
#<command>里是要执行的命令
RUN <command>   
#exec格式
RUN ["executable", "param1", "param2"]


#Copy命令
COPY <源路径>... <目标路径>
COPY ["<源路径1>",... "<目标路径>"]
COPY hom* /mydir/
COPY hom?.txt /mydir/


#环境配置
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...

#设置端口
EXPOSE <port> [<port>...]

#程序执行时需要执行的命令
CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2

#指定当前的用户
USER daemon

#设置工作命令
#WORKDIR 指定工作目录
WORKDIR /path/to/workdir

#pwd 最终将会在 /a/b/c 目录中执行
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd

#添加元数据
LABEL version="1.0" description="这是一个Web服务器" by="Docker笔录"
docker inspect itbilu/test
"Labels": {
    "version": "1.0",
    "description": "这是一个Web服务器",
    "by": "Docker笔录"
},

DockerFile实例

#拉取一个centos文件
[root@localhost es]#  docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    4f380adfc10f   6 days ago     133MB
busybox      latest    69593048aa3a   3 weeks ago    1.24MB
centos       latest    300e315adb2f   6 months ago   209MB
[root@localhost es]# docker run -it centos

#发现vim没有
#ifconfig也么没有

[root@7d2cc3191b20 /]# vim
bash: vim: command not found
[root@7d2cc3191b20 /]# ifconfig
bash: ifconfig: command not found
[root@7d2cc3191b20 /]#	exit

接下来对centos进行加工,退出docker centos

#	创建一个Dockerfile文件必须这个名字
mkdir dockerfile
vim dockerfile
cat dockerfile
FROM centos                                                                
MAINTAINER  mr_fucha<1299569147@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD /bin/bash

#重新启动使用docker build 构建centos
#最后那个点代表当前目录下构建。
docker build -t centos-new:v1 .


#运行
docker images
#运行
docker run -it centos-new:v1

这个时候ifconfig有了,成功。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值