# 移除以前docker相关包
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
#启动
systemctl enable docker --now
# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
以下命令以Nginx为例:
#下载docker镜像
docker pull nginx
# 创建并运行容器 指定名称 后台运行 开机自启 映射端口 镜像ID
docker run --name=mynginx -d --restart=always -p 88:80 87a94228f133
# 进入容器
docker exec -it b181173db9ad /bin/bash
# 进入Nginx 首页位置的 目录
cd /usr/share/nginx/html/
# 追加文本信息到nginx欢迎页中
echo "Hello Docker Nginx!" >> index.html
# 退出容器
exit
# 提交容器 将我们配置好的容器提交成为一个新的镜像 -m提交信息 -a作者 容器ID 新的镜像名:版本
docker commit -m "修改首页" -a "LiuShihao" b181173db9ad liushihaonginx:v1.0
将镜像保存为一个实体的压缩包
#使用docker save 命令 -o 文件名.tar
docker save -o abc.tar 39f3969143bc
# 将本机的abc.tar压缩包 传输到 另一台服务器的root目录下
scp abc.tar [email protected]:/root
将镜像推送到镜像仓库,比如hub docker 等,我以阿里云的镜像仓库为例:
# 推送镜像到仓库之前需要登录 用户名是阿里云账号全称
docker login --username=liu*****t registry.cn-hangzhou.aliyuncs.com
# 给镜像打上标签 镜像ID 仓库全路径:标签
docker tag 39f3969143bc registry.cn-hangzhou.aliyuncs.com/liushihao_docker_repository/nginx_images:v1.0
# 推送镜像
docker push registry.cn-hangzhou.aliyuncs.com/liushihao_docker_repository/nginx_images:v1.0
# -v 宿主机目录:容器内部目录:ro ro只读 rw 读写 87a94228f133:镜像ID
docker run --name=mynginx -d -p 88:80 -v /data/html:/usr/share/nginx/html:ro 87a94228f133
宿主机会自动创建目录 :/date/html
在改目录下创建 index.html
文件
(注意:如果宿主机的目录下为空,把那么容器内的/usr/share/nginx/html目录也是空)
echo "Hello Welcome To Nginx World
" > index.html
之后想要修改Nginx首页只需要修改主机/data/html/index.html的文件就可以对容器生效。
浏览器访问,此时Nginx容器的欢迎页内容显示的就是我们宿主机/data/html
目录下的index.html
页面:
#查看容器运行日志 容器ID
docker logs 11c70c931a5e
# docker cp 容器ID:目录 主机目录 将正在运行的容器内的文件 复制到宿主机的目录下 也可以反过来
docker cp 11c70c931a5e:/etc/nginx/nginx.conf /data/conf/nginx.conf
编写Dockerfile
文件
# JDK环境
FROM openjdk:8-oraclelinux8
# 作者
LABEL maintainer=LiuShihao
#将jar包 复制到容器内的位置
COPY target/*.jar /app.jar
# 执行启动命令
ENTRYPOINT ["java","-jar","app.jar"]
使用docker build 命令打包成镜像
# -t 打标签 -f 指定Dockerfile 如果名称是Dockerfile可省略 .代表当前目录
docker build -t 标签 -f Dockerfile文件名 .
docker build -t crm2.0-open:v1.0 .
然后使用docker images 命令查看我们刚刚通过Dockerfile文件创建的镜像
# -d 后台启动 -p 端口映射
docker run -d -p 8080:8080 镜像ID
docker run -d -p 8080:8080 990ac9e049fb
启动后要使用docker ps
命令查看正在运行的容器,有没有启动起来
如果没有启动起来可以使用docker logs
命令查看容器的运行日志。
如果容器运行失败的原因是:no main manifest attribute, in app.jar
。
解决方法:
在SpringBoot应用的pom文件加上:
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<version>${springboot.version}version>
<executions>
<execution>
<goals>
<goal>repackagegoal>
goals>
execution>
executions>
plugin>
plugins>
build>