linux安装docker

官网安装教程:https://docs.docker.com/engine/install/centos/

注:安装docker前的操作
  • 关闭防火墙(CentOS7自带的)

    ~]# systemctl stop firewalld

  • 再设置  (禁止开机启动)

    ~ ]# systemctl disable firewalld

  • 关闭selinux :  

    ~]# getenforce

启动docker

systemctl start docker

开机启动docker
systemctl enable docker
重启docker
systemctl restart docker


使用官方安装脚本自动安装

在线教程地址:https://www.runoob.com/docker/centos-docker-install.html

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh


卸载Docker
  1. 卸载Docker Engine,CLI和Containerd软件包:

    $ sudo yum remove docker-ce docker-ce-cli containerd.io
  2. 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:

    $ sudo rm -rf /var/lib/docker


容器与宿主拷贝文件
docker cp 容器名:要拷贝的文件在容器里面的路径    要拷贝到宿主机的相应路径

docker cp  3138a85e9eef:/opt/www/config.php  /www/web

3138a85e9eef  :容器 id
/opt/www/config.php  : 容器中的文件
/www/web 宿主机目录

示例说明:
docker cp 主机文件路径 容器id或者容器名:容器路径  #主机中文件拷贝到容器中
docker cp 容器id或者容器名:容器路径 主机文件路径  #主机中文件拷贝到容器中

(查看docker信息)

docker info

(查看docker版本信息)

docker version

(创建一个docker容器)

docker run -it nginx

(查看docker容器)

docker ps
查看容器ip信息
docker inspect 运行容器的ID
访问容器
curl 容器ip地址
进入容器中
docker exec -it 容器ID bash
docker exec -it 容器名称 bash     (进入一个容器)
exit (退出容器)

查看镜像中各层内容及大小

docker history <容器ID/容器NAME>

docker镜像默认存储在/var/lib/docker/

配置docker加速器

文档地址:https://www.daocloud.io/mirror

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
配置完加速地址后重启一下docker
systemctl restart docker
删除容器|镜像
docker rm -f 容器ID   (删除一个容器)

停止所有容器,这样才能够删除其中的镜像:
docker stop $(docker ps -a -q)

如果想要删除所有容器:
docker rm $(docker ps -a -q)

联合命令
docker stop $(docker ps -q) & docker rm $(docker ps -aq)    (先停止所有容器 再 删除所有的容器)

docker image rm 镜像名称  (删除镜像)
docker rmi hello-world   (删除镜像[名称])
docker rmi -f images ID          (删除指定image 镜像)
docker rmi $(docker images -q)  (删除全部image 镜像)

查看镜像

docker images (查看所有镜像包括未运行的)

REPOSITORY  存储库名称
Tag  镜像的标签不写版本号码默认下载最新latest镜像
IMAGE ID  镜像ld
CREATED  创建时间
SIZE 大小

docker images -a
docker images -q ---只显示镜像的id
docker images --digests ---显示镜像的摘要信息
docker images --no-trunc ---显示完整镜像信息

保存一个镜像

docker image save centos > contos.tar

导入一个镜像

docker image load < contos.tar
docker ps  (查看当前运行的容器)

docker container ps  (查看当前运行的容器)
docker ps     (默认只列出运行的容器)
docker ps -l  (列出最新创建的容器)
docker ps -a  (列出所有创建的容器,包括停止的和运行的)
docker inspect 容器名称   (列出容器详细信息)

搜索镜像文件

docker search mysql   (搜索mysql镜像)
      latest  表示为最新的镜像文件
docker run 参数说明
docker run --name 容器名 -it -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像ID或镜像名:tag
#--name指定容器名,可自定义,不指定自动命名
#-i以交互模式运行容器
#-t分配一个伪终端,即命令行,通常-it组合来使用
#-p指定映射端口,讲主机端口映射到容器内的端口
#-d后台运行容器
#-v指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
dcoker ps 参数说明
docker ps -a -q
# docker ps 查看正在运行的容器
# -a 查看所有容器(运行中、示运行)
# -q 只查看容器的ID

查看docker容器运行日志

docker logs 容器名称    (NAMES)

示例:

运行一个容器

docker run --name ng -d -p 8080:808 nginx

--name ng  (给容器起个名字为 “ng”)

-d  (表示后台运行)

-p 8080:808   (表示绑定端口号,8080为本机端口,808为容器端口)

docker stop 容器id    (停止运行一个容器)

docker inspect 容器id   (查看容器ip等详细信息)

启动docker容器并共享文件(目录映射)
docker volume ls        (查看数据卷)

docker volume create nginx_log   (创建数据卷)

docker volume inspect nginx_log   (查看数据卷详细信息)

数据卷的作用:存储docker容器数据

制作镜像

dockerfile指令介绍

1.FROM指定父镜像:基于哪个镜像image构建指定基础镜像,必须为第一个命令

2. MAINTAINER:维护者

3.RUN:容器创建的时候执行一段命令构建镜像时执行的命令

4.ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

5.COPY功能类似ADD,但是是不会自动解压文件,也不能访问网络资源

6.CMD构建容器后调用,也就是在容器启动时才进行调用。sh执行文件

7.ENV设置环境变量

8. EXPOSE:指定于外界交互的端口

9. VOLUME用于指定持久化目录

10. WORKDIR设置进入容器时的路径

把Dockerfile打包成镜像文件
docker build -f Dockerfile -t mydocker:1.0
把Dockerfile打包成了mydocker镜像,版本是1.0
docker run -d mydocker:1.0  ##运行该镜像
制作自己的Dockerfile镜像文件

#继承docker hub中的 centos镜像文件

FROM centos
#自己定制的镜像文件作者
MAINTAINER mydocker-cary2021
##配置环境变量MYPATH
ENV MYPATH /usr
##进入到容器中默认访问的目录/usr
WORKDIR $MYPATH
##安装下载vm
RUN yum -y install vim
##外部访问端口80
EXPOSE 80
###启动成功容器之后自动进入到容器中
CMD /bin/bash

最后保存成 Dockerfile 镜像文件

使用 docker commit 打包镜像示例(打包运行中的容器成为自己的镜像)
docker commit -m="myobj" -a="cary" 正在运行的容器id  myobjsss:1.0
参数说明:
-m="提交的描述信息"
-a="作者"
myobjsss(要创建的镜像名称):1.0[标签名或者版本号]
#2.参数说明
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
打包自己的一个dockerfile文件成镜像文件
将该 dockerfile文件上传到 linux服务器中
使用 docker build -f Dockerfile -t mycs:1
Dockerfile----配置文件
mycs---打包镜像文件名称
1 tag 版本号码
启动自己的镜像名称
docker run -it mycs:1

先安装docker-compse插件

https://docs.docker.com/compose/install/   官网安装教程

https://github.com/docker/compose/releases   最新版本下载地址

curl -L https://github.com/docker/compose/releases/download/1.23.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

或者将下载好的文件移动至指定目录下
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-copose

#最后添加可执行权限
chmod +x /usr/local/bin/docker-compose

#查看安装版本
docker-compose version
#执行容器编排命令
docker-compose up -d

示例1:

保存文件名为:docker-compose.yml

version: "2.1"

services:

    nginx:

        image: nginx

        ports:

            - "80:80"

        volumes: 

            - /www/web:/usr/share/nginx/html

            - /www/nginx/conf:/etc/nginx/conf.d

            - /www/logs:/var/log/nginx

        networks:

            - lnmp-network

    php:

        image: php:7.3-fpm

        volumes:

            - /www/web:/www

            - /www/php-ini/php:/usr/local/etc/php

        networks:

            - lnmp-network

    mysql:

        image: mysql:5.7.34

        ports:

            - "3306:3306"

        environment:

            - MYSQL_ROOT_PASSWORD=123

            - MYSQL_DATABASE=cary2021

            - MYSQL_USER=cary2021

            - MYSQL_PASSWORD=123

        networks:

            - lnmp-network

    redis:

        image: redis

        ports:

            - "6379:6379"

        volumes:

            - /www/redis/conf.d:/etc/redis/redis.conf

            - /www/redis/data:/data

        environment:

            - appendonly=yes

            - requirepass=123

        networks:

            - lnmp-network

networks: 

    lnmp-network:

#执行容器编排命令

docker-compose up -d