勿以浮沙筑高台
Linux下安装Docker步骤
-
要求 CentOs 系统的内核版本高于 3.10,可通过如下指令查看版本
uname -r
-
安装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
-
紧接着配置一个稳定(stable)的仓库 ,仓库配置会保存到/etc/yum.repos.d/dockerce.repo文件中。此处我们使用阿里云。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新docker安装包
sudo yum makecache
-
查看版本信息
yum list docker-ce --showduplicates | sort -r
-
安装
yum install docker-ce
-
安装完成后进行输入
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
-
设置开机启动
sudo systemctl start docker sudo systemctl enable docker
-
验证
docker version
出现或者
sudo docker ps
成功
Docker常用命令
- 拉取镜像
```java
#busybox是一个缩小的镜像
docker pull busybox
#拉取一个ngix的镜像
docker pull ngix
#查看镜像
docker images
```
- 运行镜像
```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
```
- 进入容器
```java
# 进入容器交互界面
docker exec -it '别名称' /bin/bash
# 或者
docker exec -it '别名称' sh
```
- 删除容器
```java
# 删除容器
docker rm '镜像别名称'
```
Docker网络模式
搭建集群的时候需要IP是固定因此需要
- 查看网络模式
docker network ls
bright:桥接网络
host:共享
null:代表我们自己定义网络 - 创建一个网络
# --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
- 运行一个固定的IP
#运行别名称为nginx-first网络配置为dockercompose ip为172.19.0.6的ngix容器 docker run -d --name nginx-first--network=dockercompose --ip 172.19.0.6 nginx
- 查看运行的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快照
-
生成快照
[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
-
导入快照拉取容器
# nginx.tar快照名 # v1 版本 #nagix名字 cat nginx.tar | docker import - nginx:v1
-
运行容器
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有了,成功。