开始Docker

开始Docker

1、安装Docker

bash安装(通用所有平台)

  • 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。

    sudo snap install docker
    
    $ curl -fsSL get.docker.com -o get-docker.sh
    $ sudo sh get-docker.sh --mirror Aliyun
    
  • 启动docker

     sudo systemctl enable docker
     sudo systemctl start docker
     查看是否成功
    systemctl status docker
    
    开机自启动
    systemctl enable docker
    
  • 创建docker用户组

    $ sudo groupadd docker
    
  • 将当前用户加入docker组

    $ sudo usermod -aG docker $USER
    
  • 重启docker服务

    systemctl restart docker
    
  • 测试docker安装是否正确

    $ docker run hello-world
    

2、设置ustc的镜像源

(1)在宿主系统编辑或创建文件daemon.json

文件路径:/etc/docker/daemon.json (注:没有则创建。)

 mkdir -p /etc/docker

 vim /etc/docker/daemon.json

daemon.json中内容如下:

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}



systemctl daemon-reload

(2)重启docker

启动:

 systemctl start docker

停止:

systemctl stop docker

重启:

systemctl restart docker

3、配置防火墙

CentOS 7.0默认使用的是firewall作为防火墙

1、根据端口号得到其占用的进程的详细信息

netstat -tlnp|grep 80
 tcp    0   0 192.168.33.10:80      0.0.0.0:*          LISTEN   5014/httpd
 tcp    0   0 0.0.0.0:48054        0.0.0.0:*          LISTEN   5386/java

2、一次性的清除占用80端口的程序

lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh

3、手工终止进程的运行

kill 5014

kill 5014 如果终止不了,可以强制终止

 kill -9 5014

4,查看已经开放的端口:

firewall-cmd --list-ports

5,开启端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

6、查看防火墙状态

firewall-cmd --state  

7、停止firewall

systemctl stop firewalld.service

8、禁止firewall开机启动

systemctl disable firewalld.service 

– 开放指定端口

firewall-cmd --zone=public --add-port=3307/tcp --permanent

– 关闭指定端口

firewall-cmd --zone=public --remove-port=5672/tcp --permanent

4、输入命令重启防火墙

systemctl restart firewalld.service;

5、输入命令重新载入配置

firewall-cmd --reload;

常用命令

(一)docker 基础命令

1、启动
systemctl start docker
2、关闭
systemctl stop docker
3、重启
systemctl restart docker
4、设置docker自启动
systemctl enable docker
5、查看运行状态

------如果是在运行中 输入命令后 会看到绿色的active

systemctl status docker
6、查看版本号信息
docker version
7、查看 详细信息

--------此命令可以查看到docker 中容器运行个数 以及镜像个数等等

docker info
8、帮助命令

docker 帮助命令 忘记了某些命令便可使用此进行查看与回顾

//docker [命令] --help如:docker pull --help

(二)docker 镜像命令

1、查看镜像列表
docker images
2、搜索镜像
docker search 镜像名
如:搜索STARS >9000的mysql镜像
docker search --filter=STARS=9000 mysql

3、拉取镜像
docker pull 镜像名 (默认最新)docker pull 镜像名:tag(版本号)
4、后台运行容器
run:运行容器。-p:映射,系统外部端口:容器内部端口。-d:后台运行。--name:[name 别名].镜像名:版本 | 镜像id
docker run -p 8086:8080 -d --name tomcat8086 tomcat:8.0
5、删除镜像
rmi中的i表示一个镜像 image。
docker image rm 镜像名称/镜像ID
docker rmi -f 镜像名/镜像ID  

#删除多个 其镜像ID或镜像用用空格隔开即可 
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID

#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
6、保存镜像

将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像

docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
docker save tomcat -o /opt/mydocker/locmyimg.tar
7、加载镜像

任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像

docker load -i 镜像保存文件位置

(三)docker 容器命令

前言已经说了 docker 容器 就好比 咱java中的new出来对象(docker run 镜像 产生一个该镜像具体容器实例),docker 容器的启动需要 镜像的支持

先放上 docker 容器查看命令

1、查看正在运行容器
docker ps只返回iddocker ps -q  
2、查看所有容器

-----包含正在运行 和已停止的

docker ps -a只返回iddocker ps -aq 
4、运行容器

后台启动

run:运行容器。-p:映射,系统外部端口:容器内部端口。-d:后台运行。--name:[name 别名].镜像名:版本 | 镜像id
docker run -p 8086:8080 -d --name tomcat8086 tomcat:8.0

启动并进入

# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)   /bin/bash  交互路径
#docker run -it -d 镜像名:Tag /bin/bash
 docker run -it -d --name redis001 redis:5.0.5 /bin/bash

选定网桥配置

--network 网桥名创建网桥:docker network create mynetwork docker run -p 8086:8080 -d --name --network mynetwork tomcat8086 tomcat:8.0

挂载数据卷

docker run -d -it  --name mycentos02 -v 数据卷名称:/usr/local/webapp centos

默认路径
cd /var/lib/docker/volumes/
5、停止容器
正常停止容器
docker stop  容器名/容器ID

立即停止容器
docker kill 容器名/容器ID
6、删除容器
#删除一个容器  -f 可删除运行中的容器
docker rm -f 容器名/容器ID

#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID

#删除全部容器
docker rm -f $(docker ps -aq)
7、进入容器
/bin/bash  表示直接进去容器命令行,必加,固定写死的
方法一(推荐):
docker exec -it 容器名/容器ID /bin/bash

方式二:
docker attach 容器名/容器ID
8、退出容器
#-----直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit

# 优雅提出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
9、重启容器
docker restart 容器ID/容器名
10、启动容器
docker start 容器ID/容器名
11、容器文件拷贝

———无论容器是否开启 都可以进行拷贝

#从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径

#从外部 拷贝文件到容器内
docker  cp 容器外路径 容器ID/名称: 容器内路径
12、查看容器日志
-f:实时展示日志。 -t:加入时间戳展示日志。 --tail n  : 展示最后n行日志
docker logs -t  容器ID/容器名
13、查看容器内进程
docker top 容器ID/容器名
14、查看容器内部细节
docker inspect   容器ID/容器名
15、数据卷
自定义路径;不会把容器中的原始数据加载出去
docker run -p 8080:8080 -d --mame mytomcat01 -v 宿主机目录(绝对路径):容器内目录 tomcat:8.0

默认数据卷
docker run -d -it  --name mycentos02 -v 数据卷名称:/usr/local/webapp centos
docker run -d -it  --name mycentos02 -v mycentos02:/usr/local/webapp centos
默认数据卷路径
/var/lib/docker/volumes/数据卷名称/_data
16、更换容器名
docker rename 容器ID/容器名 新容器名
17、容器自启动

启动容器时,使用docker run命令时 添加参数–restart=always 便表示,该容器随docker服务启动而自动启动

docker run -itd --name redis002 -p 8888:6379 --restart=always  redis:5.0.5 /bin/bash

保存数据添加自动重启配置

方法一:数据挂载(数据卷方法)

方法二:修改其启动配置即

命令:
docker  update --restart=always 容器Id 或者 容器名 
或
docker container update --restart=always 容器Id 或者 容器名  

(四)网络通信机制

1、创建网桥
docker network create  网桥名docker network create  mynet
2、删除网桥

删除一个或多个网桥

docker network rm  网桥名/网桥id

删除全部未链接的网桥‘

docker network prune
3、将容器链接到网桥
docker network connect 网络名/id 容器名/id
4、网桥列表
docker network ls
5、断开容器与网桥的链接
docker network 
6、检查网桥详情
docker network inspect  网桥名/网桥id

安装常用软件

1、mysql安装

docker pull mysql:8.0.21
docker pull mysql:5.7
docker network create  mynet
docker run -d --name mysql -p 3306:3306 -v mysql8conf:/etc/mysql/conf.d -v mysql8data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=8b311#nbiot# --network mynet  mysql:8.0

2、Redis安装

docker pull redis:5.0.5
docker run --name redis02 -d -p 6378:6379 -v redisdata:/data redis:5.0.5 redis-server --appendonly yes

3、Tomcat安装

docker pull tomcat:8.0
docker run -d -p 8081:8080 --name tomcat01 -v tomcat01apps:/usr/local/tomcat/webapps -v tomcat01conf:/usr/local/tomcat/conf tomcat:8.0

4、jdk安装

5、Nginx安装

1、拉取镜像

docker pull nginx

2、启动容器

docker run --name nginx -v nginx02:/etc/nginx  -p 3000:80 -d nginx

3、修改配置文件

cd /var/lib/docker/volumes/nginx02/_data
vim nginx.config

 server {
        listen       80;
		
        server_name  114.132.224.49;
		
		#拦截后与路由匹配成功,跳转  index.html;精确匹配为  location =/xxx
        location / {
           
            root  /etc/nginx/server/yq/dist;
		
            index  index.html index.htm;
        }
}

4、放前端项目

mkdir -p /var/lib/docker/volumes/nginx02/_data/server/yq
#之后放打包好的dist文件

Dockerfile

Dockerfile常用命令

官方说明:https://docs.docker.com/engine/reference/builder/

保留字作用
FROM当前镜像是基于哪个镜像的 第一个指令必须是FROM
MAINTAINER镜像维护者的姓名和邮箱地址
RUN构建镜像时需要运行的指令
EXPOSE当前容器对外暴露出的端口号
WORKDIR指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV用来在构建镜像过程中设置环境变量
ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包
COPY类似于ADD,拷贝文件和目录到镜像中
将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME容器数据卷,用于数据保存和持久化工作
CMD指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数
1 FROM 命令
  • 基于那个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像 必须作为Dockerfile的第一个指令出现

  • 语法:

    FROM  <image>
    FROM  <image>[:<tag>]     使用版本不写为latest
    FROM  <image>[@<digest>]  使用摘要
    
2 MAINTAINER 命令
  • 镜像维护者的姓名和邮箱地址[废弃]

  • 语法:

    MAINTAINER <name>
    
3 RUN 命令
  • RUN指令将在当前映像之上的新层中执行任何命令并提交结果。生成的提交映像将用于Dockerfile中的下一步

  • 语法:

RUN <command> (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows)
RUN echo hello

RUN ["executable", "param1", "param2"] (exec form)
RUN ["/bin/bash", "-c", "echo hello"]
4 EXPOSE 命令
  • 用来指定构建的镜像在运行为容器时对外暴露的端口

  • 语法:

    EXPOSE 80/tcp  如果没有显示指定则默认暴露都是tcpEXPOSE 80/udp
    
5 CMD 命令
  • 用来为启动的容器指定执行的命令,在Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。

  • 注意: Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。

  • 语法:

    CMD ["executable","param1","param2"] (exec form, this is the preferred form) 
    CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
    CMD command param1 param2 (shell form)
    
6 WORKDIR 命令
  • 用来为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。如果WORKDIR不存在,即使它没有在任何后续Dockerfile指令中使用,它也将被创建。

  • 语法:

WORKDIR /path/to/workdir

WORKDIR /a
WORKDIR b
WORKDIR c
`注意:WORKDIR指令可以在Dockerfile中多次使用。如果提供了相对路径,则该路径将与先前WORKDIR指令的路径相对`
7 ENV 命令
  • 用来为构建镜像设置环境变量。这个值将出现在构建阶段中所有后续指令的环境中。

  • 语法:

    ENV <key> <value>ENV <key>=<value> ...
    
8 ADD 命令
  • 用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中。

  • 语法:

ADD hom* /mydir/       通配符添加多个文件
ADD hom?.txt /mydir/   通配符添加
ADD test.txt relativeDir/  可以指定相对路径
ADD test.txt /absoluteDir/ 也可以指定绝对路径
ADD url 
9 COPY 命令
  • 用来将context目录中指定文件复制到镜像的指定目录中

  • 语法:

    COPY src destCOPY ["<src>",... "<dest>"]
    
10 VOLUME 命令
  • 用来定义容器运行时可以挂在到宿主机的目录

  • 语法:

    VOLUME ["/data"]
    
11 ENTRYPOINT命令
  • 用来指定容器启动时执行命令和CMD类似

  • 语法:

      ["executable", "param1", "param2"]
      ENTRYPOINT command param1 param2
    

    ENTRYPOINT指令,往往用于设置容器启动后的第一个命令,这对一个容器来说往往是固定的。
    CMD指令,往往用于设置容器启动的第一个命令的默认参数,这对一个容器来说可以是变化的。

Docker Compose

1、安装

1.linux
  • 在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。例如,在 Linux 64 位系统上直接下载对应的二进制包。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
2.macos、window
  • Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。Docker Desktop for Mac/Windows 自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用
3.bash命令补全
$ curl -L https://raw.githubusercontent.com/docker/compose/1.25.5/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
4.卸载
  • 如果是二进制包方式安装的,删除二进制文件即可。
$ sudo rm /usr/local/bin/docker-compose
5.测试安装成功
$ docker-compose --version docker-compose version 1.25.5, build 4667896b

docker-compose使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值