安装Docker
先卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装Docker官方源:
yum -y install yum-utils
yum-config-manager –add-repo http://download.docker.com/linux/centos/docker-ce.repo
或者
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新源:
yum makecache fast
安装:
yum install docker-ce
启动并设为开机自启:
systemctl enable docker #设为开机自启
systemctl start docker #开启docker
systemctl status docker #查看状态
查看docker版本:
docker version
如果遇到/usr/bin/docker:权限不足需要执行命令:
chattr -i /usr/bin/docker
chmod +x /usr/bin/docker
附上卸载方案:
yum remove docker-ce rm -rf /var/lib/docker
Docker镜像与容器操作
Docker镜像官网:http://hub.docker.com
#镜像操作
#下载镜像
#docker pull name:tag
docker pull nginx:1.20.0
#查看本地已下载
docker images
#删除镜像
docker rmi 镜像id或名称
#删除所有镜像
docker rmi $(docker images -q)
#容器操作
#启动容器
docker run --name mynginx -p 8080:80 -d nginx:1.20.0 -v /data:/home/nginx/html
#--name mynginx:容器名称。
#-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
#-d nginx: 设置容器在在后台运行,eg: -d nginx:latest
#-v /data:/home... :设置nginx挂载目录(目录映射)
#端口映射方式
#单个端口 -p 80:80
#多个端口 -p 80-90:80-90
#使用主机网络端口(全映射出去不安全)
#docker run --rm --network host --name mytest nginx
#查看所有容器(包括未运行的)
docker ps -a
#查看运行中的容器
docker ps
#停止容器
docker stop 容器ID或容器名称
#开启已经停止的容器
docker start 容器ID或容器名称
#移除已经停止的容器
docker rm -v 容器ID或容器名称
docker rm -f 容器ID或名称
# -f强制删除(无论是否在运行中)
#查看日志
#docker logs -f 容器id或容器名称
docker logs -f mynginx
#切入到容器中(exec保证退出后不停止容器)
docker exec -it mynginx /bin/bash
#-i 标准输入
#-t 终端
#查看容器详细信息(包括ip地址)
docker inspect mynginx
#创建mynginx1,并用名称连接mybginx2并进入mynginx1的sh操作
docker run -it --name mynginx1 --link mynginx2 busybox sh
#退出容器
exit
#查看端口映射情况:
docker port <ID/Name>
#停止所有容器:
docker stop $(docker ps -aq)
#删除所有容器:
docker rm $(docker ps -aq)
安装Docker Compose
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
网速慢的话也可以直接去https://github.com/docker/compose/releases网站手动下载
使用命令查看centos配置来确定该下载哪个版本:
uname -s
uname -m
手动下载后直接运行./docker-compose-Linux-x86_64 -o /use/local/bin/docker-compose
加权限
chmod +x /usr/local/bin/docker-compose
DockerCompose构建镜像 SpringBoot项目根目录中添加docker-compose.yml
version: '2'
services:
#构建mysql
mysql:
#待构建Dockerfile的地址
build:
context: ./db
#环境变量
environment:
MYSQL_PASSWORD: root
restart: always
#容器名称
container_name: mysql
#镜像名称
image: mysql
#端口映射
ports:
- 3306:3306
#磁盘映射
volumes:
- ./mysql:/var/lib/mysql
#命令
command: --lower_case_table_names=1
#SpringBoot项目构建方案
springboot:
build:
context: ./springboot
restart: always
container_name: springboot
image: springboot
ports:
- 8080:8080
db/Dockerfile 【在db目录中放一个mysql.sql初始化数据库表】
FROM mysql:8.0.23
MAINTAINER John
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY ./mysql.sql /docker-entrypoint-initdb.d
springboot/Dockerfile
FROM circleci/java:8-jdk
MAINTAINER John
ENV NAME=springboot
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms128m -Xmx256m -Dspring.profiles.active=test -Djava.security.egd=file:/dev/./urandom"
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /$NAME
WORKDIR /$NAME
EXPOSE 8080
ADD ./target/$NAME.jar ./
CMD sleep 0;java $JAVA_OPTS -jar $NAME.jar
#docker-compose构建镜像(在docker-compose.yml所在目录执行)
docker-compose build
或者使用 docker-compose -f xxx.yml -f xxxx.yml build指定自定义的yml配置
#启动构建的镜像 -d 表示后台运行
docker-compose -f xxx.yml up -d
docker的备份和迁移
容器保存为镜像
我们可以通过以下命令将容器保存为镜像
docker commit pyg_nginx mynginx
pyg_nginx是容器名称
mynginx是新的镜像名称
此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器
镜像备份
docker save -o mynginx.tar mynginx
-o 输出到的文件
执行后,运行ls命令即可看到打成的tar包
镜像恢复与迁移
首先我们先删除掉mynginx镜像
然后执行此命令进行恢复
docker load -i mynginx.tar
-i 输入的文件
执行后再次查看镜像,可以看到镜像已经恢复
卸载docker
查看已安装的docker yum list installed | grep docker
删除docker yum -y remove docker-engine.x86_64xxxxx 清理磁盘文件 rm -rf /var/lib/docker