准备docker环境
首先su root
切换到root用户
升级内核
升级内核
reboot后查看内核版本为更新的版本
用国内阿里云安装
# Set up repository
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Use Aliyun Docker
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看指定版本
yum list docker-ce --showduplicates
# 安装指定版本
yum install -y --setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
# 不指定版本号 默认安装最新版
sudo yum install docker-ce
设置文件系统
vim /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
#ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry hub.03in.com:5002
ExecStart=/usr/bin/dockerd -s overlay2 --insecure-registry hub.03in.com:5002
启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
一定要做这一步,否则没有server
查看docker版本
安装成功
运行第一个容器
运行镜像
docker run hello-world
运行镜像
docker run -it ubuntu bash
显示本地镜像库内容
docker images
获得帮助
docker --help
显示运行中容器
docker ps
显示所有容器(包含已中止)
docker ps -a
继续运行原容器并进入
docker restart frosty_goodall
docker ps
docker attach frosty_goodall
MySQL与容器化
拉取 MySQL 镜像
docker pull mysql:5.7
构建docker镜像练习
mkdir mydock && cd mydock
vi dockerfile
在这里插入图片描述
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
构建镜像
docker build . -t hello
运行镜像
docker run -it --rm hello -H
使用MySQL容器
启动服务器
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 00cbdb363500c562e7ee552250b6434a33a37301cc24986645d216d6bbcd2f36
启动服务器
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
启动 MySQL 客户端
docker run -it --net host mysql:5.7 "sh"
mysql -h127.0.0.1 -P3306 -uroot -proot
之后可进行数据库的相关操作
使用MySQL容器(挂载卷保存db)
docker exec -it mysql2 bash
Dockerfile 的 VOLUME /var/lib/mysql 的含义
docker container prune -f
docker volume prune –f
docker volume ls
创建卷并挂载
docker rm $(docker ps -a -q) -f -v
docker volume create mydb
docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7
启动客户端容器链接服务器
docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
自动编排容器
下载docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
编写stack.yml编排文件
mkdir comptest && cd comptest
vi stack.yml
version: '3.1'
services:
db:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
docker-compose -f stack.yml up
管理容器网络
docker network ls
备制支持 ifconfig 和 ping 命令的 ubuntu 容器
docker run --name unet -it --rm ubuntu bash
启动另一个命令窗口,由容器制作镜像
docker commit unet ubuntu:net
创建自定义网络
docker network create mynet
在两个窗口创建 u1,u2 容器网络,并使用以下命令
docker run --name u1 -it -p 8080:80 --net mynet --rm ubuntu:net bash
docker run --name u2 --net mynet -it --rm ubuntu:net bash
docker info u1
docker network connect bridge u1
docker network disconnect mynet u1
容器监控与与日志
检查docker的状态
docker info
docker info --format {{.ServerVersion}}
容器详细信息
docker inspect
docker inspect -f '{{.NetworkSettings.IPAddress}}'
容器日志查看
docker logs
实战
参考 https://blog.csdn.net/Mrfive555/article/details/85227697
创建静态文件服务器docker
FROM node:8
# Create app directory
RUN mkdir -p /home/swapi
WORKDIR /home/swapi
# Bundle app source
COPY . /home/swapi
RUN npm install
EXPOSE 8888
# CMD [ "npm", "start" ]
CMD ["node", "bin/index.js", "8888", "http://192.168.134.129:8080"]
创建后端服务器docker
# Use an official Golang runtime as a parent image
FROM golang:latest
# Make the working directory
RUN mkdir -p go/src/server
# Set the working directory to /go/src/server
WORKDIR /go/src/server
# Copy the current directory contents into the container at /go/src/server
COPY . /go/src/server
# Get all packets and install
RUN go get -u -v
RUN go install -v
# Make port 8080 available to the world outside this container
EXPOSE 8080
CMD server run
创建数据库docker
FROM mysql:5.7.21
#设置登录密码
ENV MYSQL_ROOT_PASSWORD 123456
#定义工作目录
ENV WORK_PATH /opt/starWar
#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
# 创建文件夹
RUN mkdir -p $WORK_PATH
#将所需文件放到容器中
COPY starWar.sql $WORK_PATH/
COPY setup.sh $AUTO_RUN_DIR/
#给执行文件增加可执行权限
RUN bash $AUTO_RUN_DIR/setup.sh
setup.sh
mysql -uroot -p$MYSQL_ROOT_PASSWORD &
source $WORK_PATH/starWar.sql;
service start mysql