Docker 从入门到精通,常用命令学习

目录

一、安装docker

安装依赖工具

yum install -y yum-utils device-mapper-persistent-data lvm2

切换阿里云下载docker

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

让yum自动检测 那个原速度最快 优先使用

yum makecache fast

安装docker-ce 开源版本

yum -y install docker-ce

启动docker 服务

service docker start

重启docker

systemctl restart docker

查看docker版本

docker version

从docker服务中 拉取 hello-world 镜像

docker pull hello-world

运行 hello-world 成功运行Hello from Docker! 表示安装完成。

docker run hello-world

阿里云加速服务

登录阿里云。搜索 容器镜像服务 – 镜像工具 – 镜像加速器 – 复制 centos 环境下的 加速命令 ,执行
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://54hor5fq.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、Docker常用命令

docker pull 镜像名字<:tagks> - 从远程仓库拉取镜像

docker images - 查看本地镜像

docker run 镜像名称<:tags> - 创建容器,启动应用

docker ps - 查看正在运行中的镜像

docker rm <-f> 容器id - 删除容器

docker rmi <-f> 镜像名称: - 删除镜像

docker 远程仓库网站 (hub.docker.com) ,可以查看需要下载的镜像和版本

操作tomcat 案例:

拉取最新版本/使用最多的 tomcat

docker pull tomcat

拉取指定版本 tomcat

docker pull tomcat:8.5.46-jdk8-openjdk

创建tomcat容器 ,启动成功后,可以按 ctrl + c 退出

docker run tomcat

创建tomcat容器 并且指定 宿主机和容器机 之间的端口映射 -d:表示后台运行

docker run -d -p 8000:8080 tomcat

停止容器

docker stop 容器ID

移除容器

docker rm 容器ID

停止并移除

docker rm -f 容器ID

查看镜像

docker images

删除镜像

docker rmi tomcat:TAG

三、容器内部结构

在容器中执行命令 格式:

docker exec [-it] 容器ID 命令
exec 在对应容器中执行命令
-it采用交互方式执行命令

示例:docker exec -it 073846ed2fe68b /bin/bash
退出容器:exit;

docker相关文件 默认存储位置

cd /var/lib/docker

四、容器生命周期

create -> start -> running -> paused -> stop -> destroy -> deleted

docker create run start pause unpause stop rm

五、Dockerfile 镜像描述文件

Dockerfile 是一个包含用于组合镜像的命令的文本文档
Docker 通过读取Dockerfile中的指令按步骤自动生成镜像
docker build -t 机构/镜像名<:tags> Dockerfile目录

案例:Dockerfile 自动部署Tomcat应用

创建Dockerfile 文件,写入以下内容:

#来自哪个基准镜像
FROM tomcat:latest
#说明信息:这个镜像的所有者/机构
MAINTAINER jack.com
#LABEL version=“1.0”
#LABEL description=“个人学习使用”
#指定工作目录路径 不存在自动创建 类似于cd
WORKDIR /usr/local/tomcat/webapps
#添加/复制 docker-web 到容器的 目录中,会自动解压tar.gz,还具备添加远程文件功能
ADD docker-web ./docker-web
#ENV 设置环境常量
#ENV JAVA_HOME /usr/local/openjdk8
#RUN ${JAVA_HOME}/bin/java -jar test.jar

构建

docker build -t jack.com/mytomcat:1.0 /usr/image/first-dockerfile 用.表示当前目录

运行

docker run -d -p 8001:8080 jack.com/mytomcat:1.0

进入容器查看

docker exec -it 95df962bcbf6 /bin/bash

Dockerfile执行命令

RUN:在build构建时执行命令
RUN yum install -y vim #shell命令运行方式
RUN [“yum”,“install”,"-y",“vim”] #exec运行方式

#Dockerfile 中有多个ENTRYPOINT/CMD 命令时,只会执行最后一条,并且他们是 拼接执行的,当启动容器有追加CMD命令时会覆盖Dockerfile里面的CMD命令
ENTRYPOINT:容器启动时执行的命令
CMD:容器启动后执行默认的命令或参数

案例:构建Redis镜像

Dockerfile 文档写入:
FROM centos
RUN [“yum”,“install”,"-y",“gcc”,“gcc-c++”,“net-tools”,“make”]
WORKDIR /usr/local
ADD redis-4.0.2.tar.gz .
WORKDIR /usr/local/redis-4.0.2/src
RUN make && make install
WORKDIR /usr/local/redis-4.0.2
ADD redis.conf .
EXPOSE 6379
CMD [“redis-server”,“redis.conf”]

构建

docker build -t jack.com/docker-redis .

启动

docker run -d -p 6379:6379 jack.com/docker-redis

六、容器间的通信

#查看容器元数据 Networksetting ipAddress
docker inspect

单向通信 :

创建一个web应用 连接到 database容器

docker run -d --name web --link database tomcat
docker run -d --name database -it centos /bin/bash

双向通信 (bridge网桥):

#查看网络
docker network ls

创建网桥

docker network create -d bridge my-bridge

网桥绑定容器 同一个网桥分组,可以实现互相通信

docker network connect my-bridge web
docker network connect my-bridge database

七、Volume 容器间的数据共享

  1. 通过设置-v挂载宿主机目录
    docker run --name 容器名称 -v 宿主机路径:容器内挂载路径 镜像名
    实例:docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat
  2. 通过 --volumes-from 共享容器内挂载点
    创建共享容器
    docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
    共享容器挂载点
    docker run --volumes-from webpage --name t1 -d tomcat

案例:挂载宿主机的:/usr/webapps目录 到tomcat容器的webapps

  1. -v
    #在宿主机 /usr 目录下添加 webapps 目录
    #启动tomcat容器:
    docker run --name t1 -p 8000:8080 -d -v /usr/webapps:/usr/local/tomcat/webapps tomcat

#启动tomcat2容器:
docker run --name t2 -p 8001:8080 -d -v /usr/webapps:/usr/local/tomcat/webapps tomcat

#然后修改index.html,可以发现 2个tomcat 同步改变了。

  1. –volumes-from
    #创建共享容器
    docker create --name webpage -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/true

#启动容器 并关联到共享容器
docker run -p 8002:8080 --volumes-from webpage --name t3 -d tomcat
docker run -p 8003:8080 --volumes-from webpage --name t4 -d tomcat

八、compose 容器编排工具

单机多容器部署工具:解决多容器之间的依赖关系
通过yml文件定义多容器如何部署

安装步骤 官网步骤:https://docs.docker.com/compose/install/

#国内镜像(推荐):
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

#官方
sudo curl -L “https://github.com/docker/compose/releases/download/v1.29.2/docker-compose- ( u n a m e − s ) − (uname -s)- (unames)(uname -m)” -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

#查看版本
docker-compose -version

案例:安装WordPress 开源博客

cd /usr
mkdir workpress
vim docker-compose.yml

里面粘贴官网的 yml脚本

https://docs.docker.com/samples/wordpress/

安装执行

docker-compose up -d

安装成功后访问 博客首页

http://47.100.242.59:8000/

案例:部署 APP应用+数据库

在 /usr 目录下创建app、app-db文件夹,和docker-compose.yml文件

1. APP应用 Dockerfile

FROM openjkd:8u222-jre
WORKDIR /usr/local/app
ADD app.jar .
ADD application.yml .
ADD application-dev.yml .
EXPOSE 80
CMD [“java”,"-jar",“app.jar”]

#构建容器
docker build -t jack.com/app .

#创建容器
docker run jack.com/app

2. 数据库 Dockerfile

FROM mysql:5.7
#初始化数据库
WORKDIR /docker-entrypoint-initdb.d
ADD init-db.sql .

#构建容器
docker build -t jack.com/app-db .

#创建容器 并指定root的密码
docker run -d -e MYSQL_ROOT_PASSWORD=123456 jack.com/app-db

#进入容器登录MYSQL
docker exec -it aae73fa77d75 /bin/bash
mysql -uroot -p123456

3. docker-compose.yml

文件内容如下:

version: '3.3'
services:
    # 服务名 网络名
    db:
        build: ./app-db/
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: root
    app:
        build: ./app/
        # 设置依赖
        depends_on:
            - db
        # 端口映射
        ports:
            - "80:80"
        restart: always

#执行docker-compose
docker-compose up -d

#查看日志
docker-compose logs

#移除容器
docker-compose down

#application.yml 中数据库的主机名localhost 需要改成db,docker会自动帮我们找到MYSQL主机

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值