docker
docker官网:https://www.docker.com/
docker hub官网:https://hub.docker.com/
docker文档官网:https://docs.docker.com/
1. docker安装
第一步:进入docker官网

第二步:点击 Get Docker

第三步:选择对应的liunx版本进入对应页面

第四步:卸载旧docker

第五步:配置docker软件的yum源

第六步:yum安装docker

第七步:检查docker是否安装成功
docker -v

第八步:配置docker镜像加速

2. docker命令
2.1 docker启停
systemctl start docker (docker启动)
systemctl stop docker (docker停止)
systemctl restart docker (docker重启)
systemctl enable docker (docker开机自启)
2.2 docker镜像
docker pull 【镜像名称:镜像版本】 (拉取镜像)
docker images (查看docker本地镜像)
docker rmi 【软件名称:软件版本】 (删除本地镜像)
docker images rm 【软件名称:软件版本】 (删除本地镜像)
docker tag 镜像名称:【镜像版本】 【新镜像名称】:【新镜像版本】 (修改镜像名称和版本,当修改前镜像已经有名称和版本则会复制镜像并以新名称和版本名称)
docker commit -a【作者】 -m【备注】 【容器名称或容器id】 【生成的镜像名称和版本】 (生成镜像,一般用修改过内容的容器来生成)
例:
docker commit -a ggh -m testcreateimg mysql001 gghmysql:0.1
含义解释:
-a ggh 作者为ggh(非必须)
-m testcreateimg 备注为testcreateimg(非必须)
mysql001 用来生成镜像的容器名称为mysql001
gghmysql:0.1 生成镜像名称和版本为gghmysql:0.1(版本非必须)
docker save -o 【导出镜像资源名称.tar】 【镜像名称和版本】 (导出镜像,一般利用镜像导出镜像资源)
例:
docker save -o gghmysql01.tar gghmysql:0.1
含义解释:
-o gghmysqltar.tar 导出镜像资源名称为gghmysqltar.tar到当前目录
gghmysql:0.1 利用名称和版本为gghmysql:0.1的镜像导出镜像资源
docker load -i 【镜像资源名称】 (导入镜像,利用镜像资源导入镜像到docker中)
2.3 docker容器
docker ps (查看正在运行的容器)
docker ps -a (查看全部容器)
docker rm 【容器名称或容器id】 (删除容器,运行中的容器无法删除)
docker rm -f 【容器名称或容器id】 (强制删除容器)
docker rm -f $(docker ps -aq) (强制删除全部容器)
docker create --name 【容器名称】 -p 【容器名称或容器id】(创建容器)
docker start 【容器名称或容器id】 (启动容器)
docker stop 【容器名称或容器id】 (停止容器)
docker kill 【容器名称或容器id】 (强行停止容器)
docker exec -it 【容器名称或容器id】 /bin/bash (进入容器,运行中的容器才能进入)
exit (退出容器,使用docker run -it进入的容器使用exit退出会关闭容器,使用docker exec -it进入的容器使用exit退出不会关闭容器)
Ctrl+P+Q (退出容器,Ctrl+P+Q退出容器后容器不会关闭)
docker run 【镜像名称】:【镜像版本】 (创建容器并运行)
docker run -d --name 【容器名称】 -p 【端口映射】 -v 【宿主机目录或数据卷:容器内目录】 -e 【环境变量】 【镜像名称:镜像版本 或 镜像id】 (后台守护启动)
docker run -it --name 【容器名称】 -p 【端口映射】-v 【宿主机目录或数据卷:容器内目录】 -e 【环境变量】 【镜像名称:镜像版本 或 镜像id】 /bin/bash (前台交互启动(创建容器并运行并进入容器中,需要额外启动服务:docker run -d -p 80:80 nginx:1.22 <==> docker run it -p 80:80 nginx:1.22 bash;service nginx start))
例:
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
含义解释:
-d 后台运行
--name mysql 指定容器名称为mysql
-p 3306:3306 端口映射(前面的是宿主机的端口(自定义),后面是容器的端口(一般不变))
-e MYSQL_ROOT_PASSWORD=123456 环境变量(不同的软件环境变量不同 具体查询dockerhub官网)
mysql:8.0 指定容器的镜像为mysql:8.0
docker cp 【容器名称或容器id】:【文件含路径名称】 【宿主机放文件的路径】 (文件拷贝,容器内文件拷贝到宿主机)???
docker logs 【容器名称或容器id】 (查看容器运行日志)
docker system df(查看镜像、容器、数据卷的资源占用)
docker stats (查看正在运行的容器的资源占用)
docker stats -a (查看全部容器的资源占用)
docker top 【容器名称或容器id】 (查看容器中的进程)
docker inspect 【容器名称或容器id】 (查看容器元数据,元数据:镜像名、作者、描述、创建日期、环境变量等信息)
2.4 目录数据同步
docker run -v【宿主机目录】:【容器内目录】 (目录挂载)

例:
docker run -d --name nginx001 -p 80:80 -v /home/testdir:/etc/nginx nginx:1.22
docker run -it --name nginx001 -p 80:80 -v /home/testdir:/etc/nginx nginx:1.22 bash;service nginx start
含义解释:
-v /home/testdir:/etc/nginx 目录挂载
docker run -v【数据卷名称】:【容器内目录】 (卷映射)

例:
docker run -d --name nginx001 -p 80:80 -v volume001:/etc/nginx nginx:1.22
docker run -it --name nginx001 -p 80:80 -v volume001:/etc/nginx nginx:1.22 bash;service nginx start
含义解释:
-v volume001:/etc/nginx 卷映射
docker volume create 【数据卷名称】 (创建数据卷,数据卷的挂载点目录/var/lib/docker/volumes/【数据卷名称】/_data)

docker volume ls (查看全部数据卷)
docker volume inspect 【数据卷名称】 (查看数据卷属性)
docker volume rm 【数据卷名称】 (删除数据卷)
2.5 网络
docker network create 【自定义网络名称】 (创建自定义网络,相当于创建了一个局域网)

例:
docker network create network001
docker run --network 【网络名称】 (手动加入自定义网络,相当于加入局域网)

curl http://【宿主机ip:端口】

curl http://【目标容器ip:端口】

docker run -d -p 【端口映射】 --name 【容器名称】 --network 【网络名称】 【镜像名称:版本 或 镜像id】
curl http://【目标容器ip:端口】
curl http://【目标容器名称:端口】
例:
docker run -d -p 80:80 --name nginx001 --network network001 nginx:1.22
docker network ls (查看所有网络)
docker network rm 【网络名称】(删除网络)
2.6 docker compose
#名字
name: composename001
#服务
service:
mysql111:
container_name: mysql001 #容器名称 未指定默认为 composename001-mysql111-1
image: mysql:8.0 #镜像
ports: #端口映射
- "3306:3306"
environment: #环境变量
- MYSQL_ROOT_PASSWORD=123456
volumes: #目录挂载和卷映射
- mysql-data001:/var/lib/mysql
- /app/myconf001:/etc/mysql/conf.d
networks: #网络
- network001
wordpress111:
container_name: wordpress001 #默认为 composename001-wordpress111-1
image: wordpress
ports:
- "8080:80"
environment:
- WORDPRESS_DB_HOST=mysql001
- WORDPRESS_DB_NAME=wordpress
volumes:
- wordpress001:/var/www/html
networks:
- network111
depends_on: #依赖
- mysql111
#数据卷(创建 当已有时???)
volumes:
- mysql-data001 #默认为 composename001_mysql-data001
- wordpress001 #默认为 composename001_wordpress001
#网络(创建 当已有时???)
networks:
network001 #默认为 composename001_network001
+
docker compose -f compose.yaml up -d
含义解释
-f compose.yaml 选定compose文件
up 启动compose
-d 后台启动
再次执行时会重启compose
将up改为down时执行会结束compose
执行down时加上-v会同步删除数据卷(docker compose -f compose.yaml down -v)
<=等价转换=>
docker run \
-d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v mysql-data001:/var/lib/mysql \
-v /app/myconf001:/etc/mysql/conf.d \
--network network001 \
--name mysql001 \
mysql:8.0
docker run \
-d \
-p 8080:80 \
-e WORDPRESS_DB_HOST=mysql001 \
-e WORDPRESS_DB_NAME=wordpress \
-v wordpress:/var/www/html \
--name wordpress001 \
--network network001 \
wordpress:latest
2.7 Dockerfile
FROM openjdk:8 #基础镜像
LABEL author001=ggh001 #备注
COPY /home/test001/wordpress001.jar /root/wordpress001.jar #容器外文件拷贝到容器内
EXPOSE 8080 #端口暴漏
ENTRYPOINT ["java","-jar","/root/wordpress001.jar"] #命令 java -jar /root/wordpress001.jar
+
docker build -f Dockerfile -t wordpress002:v1.0 .
含义解释:
docker build 构建镜像
-f Dockerfile 指定Dockerfile文件的路径为./Dockerfile
-t wordpress002:v1.0 指定构建完成的镜像名称和版本
. 指定容器外的文件的目录为当前目录(即wordpress001.jar的目录为当期目录 )
docker image history 【镜像名称:镜像版本 或 镜像id】(查看镜像的构建历史)
nginx
/etc/nginx/nginx.conf
/usr/share/nginx/html
/var/log/nginx
mysql
docker run -d --name mysql57000 -p 3306:3306 \
-v /root/mysql5.7/db:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7

浙公网安备 33010602011771号