前置条件
- yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 设置阿里云的docker源
- yum makecache fast 设置最快的源
- yum install -y docker-ce 安装docker
- service docker start 启动docker
- docker pull hello-world 拉取名为hello-world的docker镜像
- docker run hello-world 运行镜像
阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://vw8b6y27.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
宿主机与容器端口映射
- docker run -d -p 8000:8080 tomcat 后台运行容器
- docker ps 列出当前正在映射的容器以及相关信息
- docker rm (-f) 容器id 移除(非运行状态下的)容器 -f 强制移除
- docker stop 容器id 停止容器
- docker rmi (-f) 镜像名:tag 删除镜像
在容器中执行命令
- docker exec -it 容器id /bin/bash
容器启动tomcat镜像访问报404问题
通过docker exec -it 容器id /bin/bash进入容器中,看到有webapps跟webapps-dist目录,然后查看webapps目录,发现竟然是空的,而webapps-dist是非空的,把webapps文件夹删除,将webapps-dist重命名webapps,然后再访问docker容器即可访问到
构建自己的docker镜像
- 创建目录 mkdir -p /usr/image
- 在目录下 mkdir first-dockerfile,
- 在first-dockerfile目录下创建docker-web目录及文件Dockerfile,编辑Dockerfile如下
# 设置基准镜像
FROM tomcat:latest
# 镜像的拥有者
MAINTAINER jack.com
# 设置切换工作目录路径 cd /usr/local/tomcat/webapps
WORKDIR /usr/local/tomcat/webapps
# 将docker-web中的所有内容复制到容器的工作目录下的docker-web目录
ADD docker-web ./docker-web
- 进入docker-web目录,新建index.html,编辑index.html文件内容
<h1>自定义docker file<h1>
- 回到first-dockerfile目录,通过
docker build -t jack.com/mywebapp:1.0 .
构建docker-file,如下图所示
- 运行docker镜像
docker run -d -p 8001:8080 jack.com/mywebapp:1.0
- 测试自定docker 如下图(乱码由于编码问题,此处不关心)
FROM -基于基准镜像
- FROM centos #制作基准镜像(基于centos:latest)
- FROM scratch #不依赖任何基准镜像base image
- FROM tomcat:9.0.22-jdk8-openjdk
- 尽量使用官方提供的Base Image
- MAINTAINER jack.com(dockerfile的维护机构或个人)
- LABEL version = “1.0”(维护的其他信息)
- LABEL description = “杰克个人工作室”
- WORKDIR /usr/local/newdir #自动创建
ADD©
- ADD hello / 复制到容器内部的根路径下
- ADD test.tar.gz / 复制到根目录并解压
- ADD 除了复制,还具备添加远程文件的功能
设置环境常量
- ENV JAVA_HOME /usr/local/openjdk8
- RUN ${JAVA_HOME}/bin/java -jar test.jar
- 尽量使用环境常量,可提高程序维护性
docker容器单项访问
图docker容器单项访问
- docker run -d --name web tomcat 创建名称为web的tomcat容器
- docker run -d --name database -it centos /bin/bash 创建名为database的centos容器
- docker inspect 容器id
- docker run -d --name web --link database tomcat 创建容器并添加链接
- docker exec -it 容器id /bin/bash
- ping 172.17.0.3/ping database
Bridge网桥双向通信
- docker network ls 查看docker容器底层网络服务明细
- docker network create -d bridge my-bridge 创建网桥
- docker network connect my-bridge web 将web容器绑定my-bridge网桥
容器间共享数据
- docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
实例:docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat - docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true 创建共享容器
- docker run --volumes-from webpage --name t1 -d tomcat 共享容器挂载点
Docker-compose安装
- sudo curl -L “https://github.com/docker/compose/releases/download/1.25.0/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)” -o /usr/local/bin/docker-compose 获取并自动安装
- chmod +x /usr/local/bin/docker-compose 授权
- docker-compose -version 查看版本
通过docker-compose创建开源博客worldpress
- mkdir -p /usr/wordpress 创建新目录并切换
- vim docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
- docker-compose up -d 安装博客