docker 快速入门

1.使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装:

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

2.启动 Docker CE

$ sudo systemctl enable docker
$ sudo systemctl start docker

3.测试 Docker 是否安装正确

[root@localhost docker]# docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
[root@localhost docker]# 

Client 和 Server 都有就是说明正确安装和启动

4.配置Docker 镜像(国内)加速器

在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

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

之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

5.拉取镜像(image)

[root@localhost docker]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
e4c3d3e4f7b0: Pull complete 
101c41d0463b: Pull complete 
8275efcd805f: Pull complete 
751620502a7a: Pull complete 
a59da3a7d0e7: Pull complete 
9c0f1dffe039: Pull complete 
c886bd27ecb8: Pull complete 
30fb11aa7eaa: Pull complete 
c9f12e463311: Pull complete 
421d9a80377a: Pull complete 
Digest: sha256:1c78db4bfbf4c75ab763dd463ff74731abbeadcfded2e03024b39cb0af3f1fb3
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest

等全部complete就行了

6. 查看拉取的 镜像(image)

[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              891fcd9c5b3a        2 days ago          647MB

7.启动tomcat 镜像

note:第一个 8080 是宿主机端口 第二个 8080 是容器端口,将映射

docker run -d -p 8080:8080 tomcat

8.停止Tomcat服务

docker stop 66282a52c168 (这个是容器的id)

9.查看容器id、启动容器

注意:如果已经启动过 则启动容器id就可以,因为每次使用run命令都会启动一个新的容器,使用ps命令查看容器id,然后执行命令

//查看容器id
docker ps -a
//启动容器
docker start 66282a52c168 (这个是容器的id)

10.访问 ip:8080 查看tomcat是否启动正常

note:如果发生 404 错误,查看此博客解决 https://blog.csdn.net/qq_40891009/article/details/103898876

在这里插入图片描述

11.进入启动的容器的 bash 里

# 进入已经启动的容器用 exec
$ docker exec -it 66282a52c168 (这个是容器的id) bash

# 从镜像启动新容器用 run(注意--rm 会在退出后删除容器)
$ docker run -it -d -p 8080:8080 --rm tomcat(镜像名字) bash

11.5 看容器日志

# 启动容器
docker start 42f12ae29932
# 看日志
docker logs -f 42f12ae29932

12.删除全部容器

docker container rm $(docker container ls -aq) -f

13.自定义镜像 Dockerfile

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

在宿主机执行以下指令

# 1.创建 Dockerfile 脚本
mkdir docker
cd docker/
vim Dockerfile
# 2.编写脚本 以下是脚本内容
From tomcat
WORKDIR /usr/local/tomcat
RUN rm -rf webapps
RUN cp -r webapps.dist webapps
WORKDIR /usr/local/tomcat/webapps/ROOT
RUN rm -rf ./*
RUN echo "Hello Docker!" > index.html
# 3.根据脚本构建自己的镜像 
# 注意点:在Dockerfile文件目录下执行、命令最后有个点表示当前目录、镜像命名必须全部小写
docker build -t mytomcat .

# 4.查看镜像 成功创建镜像 mytomcat
[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mytomcat            latest              b00319985570        5 seconds ago       652MB
tomcat              latest              891fcd9c5b3a        4 days ago          647MB

# 5.启动一个容器
[root@localhost docker]# docker run -d -p 8080:8080 --rm  mytomcat
9053ae9828e7a4c023fcec50377fb6a013d6c18a14ebddcded8cf431bf6dc3fb

14.数据卷—容器的共享空间

  • 数据卷 可以在容器之间共享和重用
  • 对 数据卷 的修改会立马生效
  • 对 数据卷 的更新,不会影响镜像
  • 数据卷 默认会一直存在,即使容器被删除

例:将宿主机的 /local/docker/ROOT 目录挂载到 docker 中 /usr/local/tomcat/webapps/ROOT 目录,
同一个文件可以挂载多次

# docker run -d -p 8080:8080 -v /local/docker/ROOT:/usr/local/tomcat/webapps/ROOT tomcat
# docker run -d -p 8081:8080 -v /local/docker/ROOT:/usr/local/tomcat/webapps/ROOT tomcat

15.部署mysql

参考文章:https://www.cnblogs.com/haoprogrammer/p/11008786.html

a. 下载镜像

[root@localhost ~]# docker pull mysql:5.7

b. 查看镜像

[root@localhost ~]# docker images|grep mysql
mysql               5.7                 42cdba9f1b08        7 days ago          448MB

c. 启动容器镜像

note:宿主机端口映射 13306:3306,密码修改 -e MYSQL_ROOT_PASSWORD=root

docker run -p 13306:3306  -v /usr/local/workspace/mysql/conf:/etc/mysql -v /usr/local/workspace/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

16.部署redis

参考文章:https://www.cnblogs.com/haoprogrammer/p/11018312.html

a. 下载镜像

docker pull redis:5.0

b. 查看下载镜像

[root@localhost docker]# docker images|grep redis
redis               5.0                 c440306287f4        7 days ago          98.3MB

c. 启动镜像
note:宿主机端口映射 16379:6379

docker run -p 16379:6379 -v /usr/local/workspace/redis/data:/data -d redis:5.0 redis-server --appendonly yes

17.部署前后端应用

a. 部署后端(先要把应用里 mysql 和 redis 的配置改到本机的ip和对应端口,并设置虚拟机端口放行):

docker run -d -p 8081:8080 -v /local/docker/sk-fish:/usr/local/tomcat/webapps/sk-fish tomcat 

b.部署前端(打包时把后端端口固定8081,因为后端在宿主机的端口是8081)

docker run -d -p 8080:8080 -v /local/docker/fishermanDelight:/usr/local/tomcat/webapps/fishermanDelight tomcat 

18.安装 docker-compose

Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。
我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

a. 下载 docker-compose,这里是从git上下载的二进制包,注意修改版本到最新版本(下文的1.27.4 就是版本号)

sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

b. 给文件增加可执行权限

 cd /usr/local/bin/
 chmod +x docker-compose

c. 查看是否安装成功

[root@localhost bin]# docker-compose --version
docker-compose version 1.27.4, build 40524192

19.使用 docker-compose

a. 创建 docker-compose.yml 文件

注意: 要求每个冒号 和每个 - 符号后面必须有一个空格

vi docker-compose.yml

version: "3"
services:
  webapp:
    image: tomcat (使用的镜像)
    container_name: webapp (容器名)
    ports:
      - "8082:8080"
    volumes: (数据卷)
      - /local/docker/composeTest/ROOT:/usr/local/tomcat/webapps/ROOT

yaml 文件拓展:

https://www.funtl.com/zh/docs-docker/Docker-Compose-%E6%A8%A1%E6%9D%BF%E6%96%87%E4%BB%B6.html

b. 启动 docker-compose
注意:需要在 docker-compose.yml 目录下

docker-compose up 
docker-compose up -d (守护态)

c. 看日志:

docker-compose logs -f
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值