yum -y install docker.io
启动服务systemctl start docker
设置自动运行systemctl enable docker
获取并使用镜像 执行镜像docker run ubuntu history
如果镜像不存在,则从DockerHub中抓取,再执行后面的命令。
镜像中执行docker run -i -t ubuntu
- -i:新容器中指定一个终端
- -t:允许对容器内的终端进行交互操作处理
更新当前镜像
update
退出镜像 Ctrl D 或exit
查询镜像状态docker ps -a
查看镜像docker images
搜索镜像docker search centos
或
docker search centos:15
docker pull docker.io/redis
Docker容器 将内容拷贝到容器中查看镜像ID
docker images
拷贝jdk到镜像的*/usr/local*目录下
docker cp /usr/local/jdk ID:/usr/local/
为了方便后续使用,将配置更改的容器保存为新镜像
docker commit -m="Java运行环境镜像" -a="凌凌漆" ID centos-java:base
- -m: 表示说明的定义
- -a: 表示作者
- base: 标签
docker run -p 80:8080 -it centos-java:base
后台运行镜像Ctrl + P +Q
镜像管理 文件保存镜像 创建镜像docker save -o /root/docker/centos-java.base centos-java:base
删除镜像docker rmi ubuntu:base
注意:删除镜像前需要保证已经没有运行的容器存在,否则会出现:
Error response from daemon: conflict: unable to remove repository reference "docker.io/ubuntu:latest" (must force) - container 4024d3922009 is using its referenced image ba6acccedd29
docker rm ID
删除所有后台运行的容器
docker rm -f 'docker ps -a -q'
docker stop ID
导入镜像文件到容器docker load --input /root/docker/centos-java.base
DockerHub保存镜像DockerHub地址:https://hub.docker.com/
上传镜像docker push linglingqi/centos-java:base
注意:推送到DockerHub中的镜像需要以用户名做前缀,我的DockerHub的用户名是linglingqi
如果保存的镜像没有用户名前缀,则重新生成镜像
docker commit -m="Java运行环境" -a="凌凌漆" 96f544e4900b linglingqi/centos-java:base
docker pull linglingqi/centos-java:base
Dockerfile创建镜像 创建Dockerfile#基础镜像
FROM centos
# 说明文件及作者信息
MAINTAINER linglingqi "imlinglingqi@gmail.com"
# 更新镜像
RUN yum update
# 安装wget
RUN yum -y install wget
# 下载JDK
RUN cd /usr/local && wget http://172.17.0.1:8080/jdk1.8.0_141.tar.gz
RUN tar -zxvf /usr/local/jdk1.8.0_141.tar.gz -C /usr/local/
RUN mv /usr/local/jdk1.8.0_141 /usr/local/jdk
# 下载Maven
RUN cd /usr/local && wget http://172.17.0.1:8080/apache-maven-3.3.9.tar.gz
RUN tar -zxvf /usr/local/apache-maven-3.3.9.tar.gz -C /usr/local/maven
# 配置环境变量
ENV JAVA_HOME=/usr/local/jdk
ENV CLASSPATH=$JAVA_HOME/lib
ENV PATH=$PATH:$JAVA_HOME/bin
RUN export PATH JAVA_HOME CLASSPATH
ENV M2_HOME=/usr/local/maven
RUN export PATH=${M2_HOME}/bin:${PATH}
# 端口映射
EXPOSE 8080
构建镜像
docker build -t linglingqi/centos-env:dev /root/docker/
按端口映射启动docker run -p 80:8080 -it linglingqi/centos-env:dev
使用Docker发布微服务 Docker主机开启Api进程vi /lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd-current # --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current # --default-runtime=docker-runc # --exec-opt native.cgroupdriver=systemd # --userland-proxy-path=/usr/libexec/docker/docker-proxy-current # --init-path=/usr/libexec/docker/docker-init-current # --seccomp-profile=/etc/docker/seccomp.json # $OPTIONS # $DOCKER_STORAGE_OPTIONS # $DOCKER_NETWORK_OPTIONS # $ADD_REGISTRY # $BLOCK_REGISTRY # $INSECURE_REGISTRY # $REGISTRIES ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重新加载守护配置项
systemctl daemon-reload
重启docker服务
service docker restart
查看API端口
ss -ntulp | grep 2375
[linglingqi]# ss -ntulp | grep 2375
tcp LISTEN 0 128 [::]:2375 [::]:* users:(("dockerd-current",pid=13171,fd=5))
配置完成后访问:http://服务器IP:2375/version
如果提示: dial tcp 服务器IP:2375: connect: operation timed out
则大概率是防火墙的原因,设置防火墙或安全组,开放2375端口允许外网访问。
开启后再次访问:{"Version":"1.13.1","ApiVersion":"1.26","MinAPIVersion":"1.12","GitCommit":"4ef4b30/1.13.1",
"GoVersion":"go1.13.3","Os":"linux","Arch":"amd64","KernelVersion":"4.19.91-19.1.al7.x86_64",
"BuildTime":"2020-01-31T15:01:11.405321918+08:00","PkgVersion":"docker-1.13.1-108.git4ef4b30.1.al7.x86_64"}
则证明成功。
修改maven的settings.xml文件
修改项目的pom.xml文件自定义ID,项目中会用到 DockerHub的用户名 DockerHub的密码 DockerHub的注册邮箱
org.apache.maven.plugins maven-compiler-plugin8 8 org.apache.maven.plugins maven-surefire-plugin2.19.1 true com.spotify docker-maven-plugin0.4.12 http://47.101.49.234:2375 linglingqi/registry-micro-service dev latest java true ["java","-jar","/${project.build.finalName}.jar"] / ${project.build.directory} ${project.build.finalName}.jar github dockerhub
- serverId:Maven配置文件(settings.xml)中定义的服务连接ID。
- dockerHost:配置Docker主机,并且要求此主机开启API进程。
- imageTags:定义镜像的标签,默认会使用latest。
- imageName:镜像名称,该镜像名称需要满足“正则[a-z0-9-_.]”,必须有用户名做前缀。
- baseImage:要使用的基础镜像名称,如果本地Docker不存在,则会自动抓取镜像信息。
- entryPoint:Docker镜像执行时的命令为java -jar xxx.jar。
mvn clean package docker:build -DpushImage
启动docker run -p 10000:10000 -itd linglingqi/registry-micro-service:dev
- -p: 端口映射
- -d: daemon运行
- linglingqi/registry-micro-service: pom.xml中指定的镜像名称
http://http://服务器IP:10000
服务编排 安装docker-composeyum -y install docker-compose
编写docker-compose.yml文件version: '1'
services:
registry1:
image: linglingqi/registry-micro-service:prod
ports:
- "10001:10001"
environment:
- spring.profiles.active=server1
registry2:
image: linglingqi/registry-micro-service:prod
ports:
- "10002:10002"
environment:
- spring.profiles.active=server2
启动
docker-compose up -d
- -d:daemon方式运行



