Docker基本操作
Docker基本操作

Docker基本操作

1.安装docker可参照官方文档

详细参考:Install | Docker Docs

docker的镜像源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
指定下载docker的源例如(CentOS 8.0):
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
指定下载镜像源例如:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://docker.1ms.run",
 "https://docker.1panel.live/",
 "https://hub-mirror.c.163.com",
 "https://mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.常用命令

详细参考docker | Docker Docs

2.1 下载镜像 docker pull <镜像名:版本>

若不指定版本则下载最新版,例如docker pull nginx,则会下载最新版的nginx镜像

2.2 查看镜像列表及相关信息 docker images

2.3 删除镜像 docker rmi <镜像名:版本/image id>

若不指定版本则下载最新版,例如docker pull nginx,则会下载最新版的nginx镜像

2.4 启动新容器 docker run [options] <镜像名:版本>

options及其它参数作用:
 <镜像名:版本> ,若不指定镜像版本则会启动最新版,若不存在镜像则会自动下载
 -d ,使镜像在后台运行
 --name <别名> ,赋予容器别名,若不设置则随机生成
 -p <外部端口:内部端口> ,端口映射,遵循外部端口:内部端口,需注意外部端口是否重复,而每一个容器的内部端口是独立的,可以重复。简单来说,每启动一个容器就相当于启动了一台虚拟机,所以可重复。可使用多个-p做多个映射
 -v <外部文件目录:内部文件目录>,目录挂载,内部文件目录可查询相应文档
 --network <网络名称>,指定容器加入的网络
 -e,配置环境变量(例5)
例1:docker run -d --name myapp -p 80:80 mynginx:v1.0 ->后台运行mynginx:v1.0镜像暴露在80端口上,并取别名为myapp
例2:docker run -d -p 80:80 --name myapp -v /app/nghtml:/usr/share/nginx/html nginx ->把外部的/app/nghtml目录挂载到/usr/share/nginx/html目录上。挂载后目录则会变成双向链接(内外部修改,文件都会发生变化)
例3:docker run -d -p 88:80 -v /app/nghtml:/usr/share/nginx/html -v /app/ngconf:/etc/nginx --name myapp02 nginx ->在例2基础上再挂载conf目录到外部(挂载会以外部文件为准,若外部文件为空,则会出现docker找不到配置文件的问题,所以需要提前配置好外部配置文件)
例4:docker run -d -p 98:80 -v /app/nghtml:/usr/share/nginx/html -v ngconf:/etc/nginx --name myapp03 nginx ->使用卷映射解决例3配置文件问题,映射后位置为/var/lib/docker/volumes/<volume-name>(你的卷名,为以上标绿字段)
例5:docker -run -d -p 6379::6379 -v /app/rd1:/bitnami/redis/data -e REDIS_REPLICATION_MODE=master -e REDIS_PASSWORD=your-password --name redis1 bitnami/redis

2.5 查看正在运行得容器 docker ps [options]

options及其它参数作用:
 -a ,查看所有容器信息,包含未运行的容器
 -q,只打印容器ID
例如:docker ps -aq 会打印所有存在的容器的id

2.6 停止运行容器 docker stop <容器ID/ContainerID>

可用doker ps命令查看容器id,容器id可用前三位,理论上只要能与其他容器进行区别即可

2.7 启动停止状态的容器 docker start <镜像名/容器ID>

2.8 重启容器 docker restart <容器ID>

可重启运行中的或停止的容器

2.9 查看容器状态(占用) docker stats <容器ID>

2.10 查看容器日志 docker logs <容器ID>

2.11 进入容器内部bash控制台 docker exec [options] <容器ID/容器名> bash

options及其它参数作用:
 -it,以交互模式进入容器
在exec模式下,输入exit可退出

2.12 删除容器 docker rm [options] <容器ID>

options及其它参数作用:
 -f ,强制删除运行中的容器
tips:
可使用docker rm -f $(docker ps -aq)删除所有容器

2.13 打包提交容器(打包成镜像) docker commit [options] <需打包的容器名> <镜像名>

options及其它参数作用:
 -a <作者名>,指定镜像作者
 -c <List>,使用dockerfile来创建镜像
 -m <信息>,本次打包的相关信息
 -p,打包时暂停容器运行
 <需打包的容器名>,打包的目标容器
 <镜像名>,打包后镜像的名字

2.14 封装已打包的容器 docker save [options] [打包后文件名.后缀] <需要打包的镜像名>

options及其它参数作用:
 -o <文件名>,指定文件名称
例如:docker save -o myapp.tar myapp,注意这里的文件名需要小写!

2.15 加载打包的容器 docker load [options] <已打包的镜像文件名>

options及其它参数作用:
 -i,指定文件名

2.16 卷操作 docker volume [command]

command及其作用:
 ls,查看所有卷
 create <卷名>,创建一个卷
 inspect <卷名>,查看某个卷的详情

2.17 查看docker对象详细信息 docker inspect [options] <名称/ID>

options及其作用:
 -type,返回指定类型的对象信息,可选类型(container、image、network、volume)
例如:docker network inspect ->查看docker网络详情

3.分享镜像

3.1 登录hub账号 docker login

3.2 给镜像添加标签 docker tag <原镜像名<:版本名>> <新标记名<:版本名>>

给镜像标记不同版本或者别名,便于归入特定仓库
例如:docker tag mynginx:v1.0 runseasy/mynginx:latest

3.2 推送至login账户 dockers push <镜像名:版本号>

最好为tag后的名称,便于管理
版本名可以为:latest,也就是指定他为最新版本,便于下载(无需指定版本号)

4.自定义网络

4.1 自定义网络相关 docker network <commands>

command及其作用:
 ls,查看所有网络
 create <name>,创建一个网络
容器加入同一网络后(参考2.4中--network参数),容器名=访问网络域名,
例如:docker exec -it app1 bash下,可以用curl http://app02:80访问到app02的数据,注意这里的端口是容器的内部端口

5.compose.yaml文件编写及应用

详细参考:docker compose | Docker Docs

5.1 compose.yaml编写规范及启动流程


5.2 docker compose <commands> [options] <service>

commands用法:
 up,从<service>中构建(build)->创建(create)->启动(start)一个容器,从无到有创建
 down ,停止并删除容器、网络,使用--rmi all -v可以连带删除卷
 stop ,停止正在运行的服务
 ls,查看正在运行的compose项目
options用法:
 -f,指定文件名
 -d,后台启动
tips:
 执行同一个compose文件,docker会识别文件中被修改的内容选择性运行,不会全部重新运行

6.DockerFile

6.1 DockerFile里需要包含基础环境、软件包、启动命令三个内容

6.2 DockerFile指令

详细参考:Dockerfile reference | Docker Docs

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注