1.docker安装
1:将用户切换到root权限 $su -root
2:如果电脑没有安装yum工具的话请先安装 $ yum install -y yum-utils device-mapper-persistent-data lvm2
3:添加yum阿里云仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4:
安装社区版Docker $ yum -y install docker-ce
5:启动关闭docker: start docker/stop docker/restart docker
6:为docker建立用户组
docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。
sudo groupadd docker
7:添加当前用户到docker组
sudo usermod -aG docker $USER
8:这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["你的加速器地址"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
之后重新加载配置,并且重启 Docker 服务
systemctl daemon-reload
systemctl restart docker
2:docker常用命令
docker -v/docker version:查看版本
docker images:查看镜像
docker search tomcat:搜索镜像
docker pull tomcat:拉取镜像
docker rmi tomcat:删除镜像
docker run -it 470671670cac(镜像ID):运行镜像并进入容器
$ exit (退出并停止)
Ctrl + P + Q (退出)
容器命令
docker ps 查看当前运行的容器
docker ps -n3 查看前三运行的容器
docker start 容器id
docker stop 容器id
docker restart 容器id
docker kill 容器id 强制关闭容器
docker rm 容器id 删除容器
docker attach 容器ID 进入容器
# 后台运行容器 # centos的话,运行完后会退出 # 如果是阻塞的程序,不会退出
docker run -d centos
# 查看容器日志
docker logs a389c769edd1(容器ID)
docker logs -t a389c769edd1(容器ID) 显示时间
docker logs -f a389c769edd1(容器ID) 不停的追加
docker logs -t -f --tail 3 a389c769edd1(容器ID)
#查看容器内进程
docker top 容器id
#查看容器详情
docker inspect 容器id
#向容器内发送命令
docker exec -t 容器id ls -l /root
#以bash方式进入到容器中
docker exec -t 容器id /bin/bash
# 拷贝容器内的文件到宿主机
docker cp 容器ID:容器文件路径 宿主机路径
docker cp 9e12d1175d04:/tmp/test.txt ./
# 端口映射
# docker内是8080,宿主机是8099
# -d 后台运行
docker run -d -p 8099:8080 --name my_tomcat tomcat
# 文件映射
# 宿主机路径 /opt/docker_file_map/tomcat_webapps
# docker内路径 /usr/local/tomcat/webapps
docker run -d -p 8099:8080 -v /opt/docker_file_map/
tomcat/webapps:/usr/local/tomcat/webapps --name
my_tomcat tomcat
# 运行后,再进入容器,可以进行各种编辑
docker exec -it 容器id/bin/bash
#生成镜像方式
1:commit方式
docker commit -a=‘作者名’ -m=“描述” 容器id 包/名称:版本
docker commit -a="test_author" -m="tomcat test hello" b6c1ff931ffc skey/mytomcat:1.1
#启动镜像
docker run -d -p 23333:8080 skey/mytomcat:1.1
2:dockerfile方式
# 1. 编辑Dockerfile (详见后续Dockerfile示例)
# 2. 构建镜像(当前路径),最后的.是当前路径
docker build -t hello:v1.0 . //注意最后有个点
# 3. 运行镜像
docker images | grep hello
docker run -d -p 23333:8080 hello:v1.0
# 4. 导出镜像
docker save hello -o hello.tar
# 5. 加载镜像
docker load -i hello.tar
dockerfile语法
# FROM 是继承哪一个镜像
FROM java:8
# 作者和邮箱
MAINTAINER jerry<jerry2020@gmail.com>
# ENV 是配置环境变量
ENV mypath=/usr/local
# WORKDIR 是工作目录,进入该镜像时会到该目录
WORKDIR $mypath
# ADD 添加并解压
ADD test.zip /
# COPY 是只添加
# 挂载容器的的路径
VOLUME ["/data01", "/data02"]
# 对外暴露的端口
EXPOSE 8080
# RUN 运行shell命令
RUN ls /
# CMD 容器启动时运行,运行shell命令,重复多个CMD时,只有
最后一个生效
# 并且会被`docker run 镜像ID`后面的命令会替换
CMD /bin/bash
# ENTRYPOINT 不会被替换,而是追加后面的参数
ENTRYPOINT /bin/bash
dockerfile示例
FROM centos
# 作者和邮箱
MAINTAINER jerry<jerry2020@gmail.com>
# 挂载容器的的路径
# 会自动与主机某个路径对应,需利用`docker inspect 容器ID`查看路径
VOLUME ["/data01", "/data02"]
CMD echo "finished ------ success"
# 默认命令,容器启动时运行,只有最后一个CMD有效,并且会被docker run 后面的命令替换
CMD /bin/bash
# FROM 继承自镜像java:8
FROM java:8
# ENV 配置环境变量
ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Dspring.config.location=/hello/application.properties"
# RUN 运行Linux命令
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD hello.zip .
RUN unzip hello.zip
RUN chmod +x /hello/bin/start.sh
RUN chmod +x /hello/bin/stop.sh
# CMD 容器启动时运行,运行Linux命令
CMD cd /hello/bin/&&./start.sh
实例做一个scala,java,maven环境
选择一个目录准备好如下包
jdk-8u231-linux-x64.tar.gz
scala-2.11.12.tgz
apache-maven-3.6.3-bin.tar.gz
在当前目录下编辑dockerfile $vim DockerFile
FROM centos:7
MAINTAINER my_name<my_mail@gmail.com>
# 解压宿主机的jdk、scala、maven到容器内
ADD jdk-8u231-linux-x64.tar.gz /usr/local
ADD scala-2.11.12.tgz /usr/local
ADD apache-maven-3.6.3-bin.tar.gz /usr/local
# 安装vim,下载有点慢
RUN yum -y install vim
# 配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_231
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV SCALA_HOME /usr/local/scala-2.11.12/
ENV MAVEN_HOME /usr/local/apache-maven-3.6.3
ENV PATH $PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$MAVEN_HOME/bin
# 暴露端口,不需要
# EXPOSE 8080
# 工作目录
WORKDIR /usr/local/
# 运行
CMD java -version && scala -version && mvn -version && /bin/bash
命令1 - 生成镜像 $ docker build -t my_java_scala_env:1.0 .
命令2 - 运行镜像 $ docker run -it my_java_scala_env:1.0
命令3 - 导出镜像 $ docker save my_java_scala_env:1.0 -o my_java_scala_env_1.0.tar
复制到到其他服务器
命令4 - 加载镜像 $ docker load -i my_java_scala_env_1.0.tar