安装(我用的CentOS7)
以下方式安装的docker版本很低,不推荐。
yum install docker -y (如权限不够,命令前加sudo)
参考官方文档来安装:
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动/停止服务
systemctl start docker
systemctl stop docker
systremctl restart docker
systemctl enable docker // 设置自启动
查看docker服务状态
systemctl status docker
ps -ef | grep docker 查看进程
docker info 查看docker系统信息
修改docker镜像源,解决国内拉取镜像慢的问题
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
基本操作
Docker并不是容器,而只是一个管理容器的引擎;
底层运行原理:
服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序
下载镜像
docker pull xxx
[root@192 ~]# docker pull tomcat
Using default tag: latest
Trying to pull repository docker.io/library/tomcat ...
latest: Pulling from docker.io/library/tomcat
0e29546d541c: Pull complete
9b829c73b52b: Pull complete
cb5b7ae36172: Pull complete
6494e4811622: Pull complete
668f6fcc5fa5: Pull complete
dc120c3e0290: Pull complete
8f7c0eebb7b1: Pull complete
77b694f83996: Pull complete
0f611256ec3a: Pull complete
4f25def12f23: Pull complete
Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
Status: Downloaded newer image for docker.io/tomcat:latest
所有镜像可以在docker镜像仓库中查到 https://hub.docker.com/,未指定版本则默认下载最新版,也可以下载指定版本,比如docker pull tomcat:8.0.15-jre7
也可以使用命令搜索:
docker search tomcat
查看所有镜像
docker images
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/tomcat latest fb5657adc892 15 months ago 680 MB
删除镜像
docker rmi xxx
docker rmi fb5657adc892
运行镜像,得到容器
docker run xxx
docker run docker.io/tomcat
或
docker run fb5657adc892
常用参数: | |
---|---|
-d | 后台运行(一般都是需要加这个参数的) |
-p | 将宿主机的ip映射到容器的ip端口 |
–name | 指定容器的名称 |
-e | 指定环境变量 |
示例:
开启tomcat容器
[root@192 ~]# docker run --name tomcat -d -p 8080:8080 docker.io/tomcat
开启mysql容器
[root@192 ~]# docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a123 -d 3218b38490ce
这样在电脑上就可以通过8080端口访问tomcat了。(如果是用的虚拟机,访问地址应该用虚拟机的ip而不是localhost,比如http://192.168.32.128:8080/)
查看容器状态
docker ps 查看正在运行的容器
docker ps -a 查看所有
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8ee73cd159a docker.io/tomcat "catalina.sh run" 22 minutes ago Exited (130) 18 minutes ago epic_payne
[root@192 ~]# docker logs 6db93d85e362 查看容器运行log
停止容器
docker stop xxx
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6db93d85e362 docker.io/tomcat "catalina.sh run" 4 minutes ago Up 4 minutes 0.0.0.0:8080->8080/tcp suspicious_murdock
[root@192 ~]# docker stop 6db93d85e362
6db93d85e362
进入容器内部
docker exec -it fb5657adc892 bash
内部是个linux的文件系统
[root@192 ~]# docker exec -it c8ee73cd159a bash
root@c8ee73cd159a:/usr/local/tomcat#
exit退出
root@c8ee73cd159a:/usr/local/tomcat# exit
exit
[root@192 ~]#
启动已创建的容器
docker start xxx
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abdedbba7397 docker.io/tomcat "catalina.sh run" 5 minutes ago Exited (130) 2 minutes ago vibrant_edison
[root@192 ~]# docker start abdedbba7397
删除容器
docker rm xxx
[root@192 ~]# docker rm abdedbba7397
一条命令停用所有容器并且删除
docker stop $(docker ps -aq) & docker rm -f $(docker ps -aq)
[root@192 ~]# docker stop $(docker ps -aq) & docker rm -f $(docker ps -aq)
[1] 3430
6db93d85e362
6db93d85e362
c8ee73cd159a
c8ee73cd159a
[1]+ Done docker stop $(docker ps -aq)
[root@192 ~]#
自定义镜像
Dockerfile文件,用于构建docker镜像;Docker是基于目录构建的。Dockerfile文件和jar包放到同一个目录下。
示例:
FROM openjdk:17
MAINTAINER someboby
ENV workdir=/root/docker/eureka-server
COPY . ${workdir}
WORKDIR ${workdir}
EXPOSE 8761
CMD ["java","-jar","Eureka-server-1.0.jar"]
执行 docker build ./eureka-server -t eureka-server:1.0
Docker指定 | |
---|---|
FROM | 基础镜像信息 |
MAINTAINER | 维护者信息 |
ENV | 环境变量 |
COPY | 复制 |
WORKDIR | 进入目录 |
EXPOSE | 容器暴露的端口号 |
CMD | 启动容器时执行的命令 |