赞
踩
卸载老版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
使用仓库进行安装
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
启动docker
sudo systemctl start docker
验证docker引擎是否安装完毕
sudo docker run hello-world
查看下载的镜像列表
docker images
定位镜像方式: REPOSITORY + TAG 或者 IMAGE ID
标识 | 含义 |
---|---|
REPOSITORY | 镜像名称 |
TAG | 版本(latest: 最新) |
IMAGE ID | 镜像唯一标识 |
CREATED | 创建时间 |
SIZE | 镜像大小 |
重新加载docker
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker
配置docker国内镜像地址(加快镜像下载速度)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://aa25jngun.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看版本——docker version
Client: Docker Engine - Community # 客户端 Version: 20.10.11 # 版本 API version: 1.41 Go version: go1.16.9 # GO的版本 Git commit: dea9396 Built: Thu Nov 18 00:36:58 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community # 服务端 Engine: Version: 20.10.11 API version: 1.41 (minimum version 1.12) Go version: go1.16.9 Git commit: 847da18 Built: Thu Nov 18 00:35:20 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.12 GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d runc: Version: 1.0.2 GitCommit: v1.0.2-0-g52b36a2 docker-init: Version: 0.19.0 GitCommit: de40ad0
显示信息——docker info
Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Build with BuildKit (Docker Inc., v0.6.3-docker) scan: Docker Scan (Docker Inc., v0.9.0) Server: Containers: 27 # 一共有27个容器 Running: 14 # 其中有14个运行中的容器 Paused: 0 Stopped: 13 # 其中有13个停止的容器 Images: 9 # 镜像数量 . . . . . . OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.822GiB . . . . . . Registry Mirrors: https://aa25jngun.mirror.aliyuncs.com/ # 镜像地址 Live Restore Enabled: false
帮助指令 ——docker [命令] --help
[root@*********************** docker]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image IDs
查看运行中的容器
查看运行中的容器(默认只显示运行中——UP)
docker ps查看所有状态的容器
docker ps -a
查看容器的top信息——docker top [容器ID]
查看容器元数据信息——docker inspect [容器ID]
进入容器
docker attach [容器ID]
docker exec
docker exec -it [容器ID] /bin/bash
docker exec -it [容器ID] bash
docker exec -it [容器ID] /bin/sh
docker exec -it [容器ID] sh
文件拷贝
从宿主机拷贝文件到容器(docker cp SRC_PATH [容器ID]:DEST_PATH)
从容器拷贝文件到宿主机(docker cp [容器ID]:SRC_PATH DEST_PATH)
查看容器状态——docker stats
标识 | 含义 |
---|---|
CONTAINER ID | 容器ID |
NAME | 容器名称 |
CPU % | 容器使用的主机CPU的百分比 |
MEM % | 容器使用的主机内存的百分比 |
MEM USAGE / LIMIT | 容器正在使用的总内存,以及允许使用的内存总量 |
NET I/O | 容器通过其网络接口发送和接收的数据量 |
BLOCK I/O | 容器从主机上的块设备读取和写入的数据量 |
PIDs | 容器创建的进程或线程数 |
搜索镜像
docker search
标识 | 含义 |
---|---|
NAME | 名称 |
DESCRIPTION | 描述 |
STARS | 星级(越高被使用次数越高) |
OFFICIAL | 是否官方认可的 |
AUTOMATED | 是否自动化的 |
下载镜像——docker pull [镜像]
最新版本
docker pull rabbitmq
指定版本
docker pull rabbitmq:3.8.22
删除镜像
docker rmi -f [IMAGE ID]
docker rmi -f [IMAGE ID] [IMAGE ID] [IMAGE ID] [IMAGE ID]
docker rmi -f $(docker images -aq)
运行容器
# it 交互式(进入容器)
[root@*********************** ~]# docker run -it centos /bin/bash
# -d 后台运行
# --name 指定容器名
# -p 指定服务运行的端口
# --volumes-from 挂载
# nginx未指定版本, 则默认为最新版本
[root@*********************** ~]# docker run -d --name nginx3 -p 1113:80 nginx
0ed40ef4650bf9f6aad36bbf184e738a4316d04c3a48c77e7aac69d6b798e601
退出容器
CTRL + P + Q: 退出容器, 但并不关闭容器
exit、CTRL + D: 退出容器, 关闭容器
删除容器
删除一个容器
# 强制删除一个UP状态的容器
docker rm -f 98d298f1a134
# 删除一个非UP状态的容器
docker rm 68c1dc007ef8
删除多个容器
[root@*********************** ~]# docker rm d05b0fddefd6 105672f0c6f6
d05b0fddefd6
105672f0c6f6
删除所有容器
[root@*********************** ~]# docker rm -f $(docker ps -aq)
.
.
.
[root@*********************** ~]# docker ps -aq | xargs docker rm
.
.
.
启动和重启容器
[root@*********************** ~]# docker start 94b040becc63
94b040becc63
[root@*********************** ~]# docker restart 94b040becc63
94b040becc63
停止容器
[root@*********************** ~]# docker stop 94b040becc63
94b040becc63
kill掉容器
[root@*********************** ~]# docker kill 94b040becc63
94b040becc63
1.镜像是一种轻量级、可执行的独立软件包
2.包含代码、运行时、库、环境变量和配置文件
3.所有应用, 直接打包docker镜像, 就可以直接跑起来
获得镜像的方式:
- 从远程仓库下载
- 通过传输拷贝方式获得
- 通过DockerFile制作镜像
1.下载的时候, 看到的一层层下载, 就是联合文件系统——UnionFS
2.联合文件系统是一种分层、轻量级、高性能的文件系统. 它支持对文件系统的修改作为一次提交来一层层的叠加
3.联合文件系统是Docker镜像的基础
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker是将应用和环境进行了打包. 那么如果删掉容器的话, 数据也会同时被删除掉. 那么, 如果有数据持久化的需求, 或者容器之间数据同步的需求, 就用到了容器数据卷
执行挂载
把本机路径/home/docker/rabbitmq/data,挂在到rabbitmq容器的/var/lib/rabbitmq目录下
docker run -d --name rabbitmq3.8.26 -p 5672:5672 -p 15672:15672 -v /home/docker/rabbitmq/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin [容器ID]
查看挂载内容——docker inspect [容器ID]
匿名挂载
通过-v指定容器内路径
docker run -d -P --name nginx1 -v :/etc/nginx nginx
具名挂载(常用方式)
通过-v卷名:容器内路径, 指定具名挂载
docker run -d -P --name nginx2 -v nginx2:/etc/nginx nginx
查看挂载列表——docker volume ls
查看挂载信息——docker volume inspect [VOLUME]
容器中文件是
互相同步复制备份
的. 而并不是共享了某个目录, 查看一个备份
查看Linux系统多少位——getconf LONG_BIT
获取java镜像
自定义
1.预先pull centos
2.上传jdk-8u201-linux-x64.tar.gz文件至服务器
在/home/docker/dockerfiles下新建java8u201文件
编写DockerFile文件(命令大写, 必须以FROM指令开头
)
FROM centos
MAINTAINER author
RUN mkdir /usr/local/jdk
WORKDIR /usr/local/jdk
ADD jdk-8u201-linux-x64.tar.gz /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_201
ENV JRE_HOME /usr/local/jdk/jdk1.8.0_201/jre
ENV PATH $JAVA_HOME/bin:$PATH
构造镜像
构建文件时, 因为’’.’'的存在会将当前文件夹中所有内容进行打包, 所以
尽量避免不必要的文件存放其中
建立.dockerignore文件进行筛选
[root@*********************** java]# docker build -f /home/docker/dockerfiles/java8u201 -t java:8u201 . Sending build context to Docker daemon 191.8MB Step 1/8 : FROM centos ---> 5d0da3dc9764 . . . Step 8/8 : ENV PATH $JAVA_HOME/bin:$PATH ---> Running in d4aee3b8b6e6 Removing intermediate container d4aee3b8b6e6 ---> 47188765c2fa Successfully built 47188765c2fa Successfully tagged java:8u201 [root@*********************** java]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE java 8u201 47188765c2fa 21 minutes ago 628MB
启动镜像
[root@*********************** java]# docker run -it 47188765c2fa /bin/bash
[root@05d6871b52b0 jdk]# ls
jdk1.8.0_201
docker pull
mayan31370/openjdk-alpine-with-chinese-timezone:8-jdk
比较上面自制java镜像, 此镜像已经做了相关优化, SIZE也小很多
[root@*********************** java]# docker pull mayan31370/openjdk-alpine-with-chinese-timezone:8-jdk
8-jdk: Pulling from mayan31370/openjdk-alpine-with-chinese-timezone
b56ae66c2937: Pull complete
81cebc5bcaf8: Pull complete
9f7678525069: Pull complete
a90637ec9fbd: Pull complete
Digest: sha256:f11c87aafa6bd12ea20eb1f8c00e828a4870178d3f3a21efc50ee26c84997fcf
Status: Downloaded newer image for mayan31370/openjdk-alpine-with-chinese-timezone:8-jdk
docker.io/mayan31370/openjdk-alpine-with-chinese-timezone:8-jdk
[root@*********************** java]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mayan31370/openjdk-alpine-with-chinese-timezone 8-jdk 70e61b8bb388 4 years ago 101MB
java:8
比较上面自制java镜像, SIZE还要大
[root@*********************** java]# docker pull java:8 8: Pulling from library/java 5040bd298390: Pull complete fce5728aad85: Pull complete 76610ec20bf5: Pull complete 60170fec2151: Pull complete e98f73de8f0d: Pull complete 11f7af24ed9c: Pull complete 49e2d6393f32: Pull complete bb9cdec9c7f3: Pull complete Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d Status: Downloaded newer image for java:8 docker.io/library/java:8 [root@*********************** java]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE java 8 d23bdf5b1b1b 4 years ago 643MB
部署Java应用
前置条件: 项目jar包
创建dockerfile文件并编辑
FROM mayan31370/openjdk-alpine-with-chinese-timezone:8-jdk
ADD spring-demo-1.0.0.jar /spring-demo-1.0.0.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","-Xmx512m","-Xms128m","/spring-demo-1.0.0.jar"]
构造镜像
[root@*********************** dockerfiles]# docker build -f /home/docker/dockerfiles/testFile1 -t spring-demo:1.0.0 .
.
.
.
Successfully tagged spring-demo:1.0.0
[root@*********************** dockerfiles]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
spring-demo 1.0.0 7b7209930a87 21 minutes ago 119MB
启动镜像
[root@*********************** dockerfiles]# docker run -p 8080:8080 --name spring-demo1 -d 7b7209930a87
8a2676f3235d23fefd8990d50dea7fbfde8110465b41ae216f3b855951e49f93
检查项目是否已经启动
[root@*********************** dockerfiles]# curl localhost:8080/hello
hello
1.项目已经成功启动
2.访问不通可能的原因:
项目未正常启动
防火墙拦截
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。