一. docker基础命令
启动docker
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
docker设置随服务启动而自启动
systemctl enable docker
查看docker 运行状态
systemctl status docker
查看docker 版本号信息
docker version
docker 帮助命令
docker --help
或其他操作相关的命令
docker pull --help

二. docker 镜像命令
1. 查看自己服务器中docker 镜像列表
docker images
2. 搜索镜像
docker search 镜像名
# 搜索 STARS >9000的 mysql 镜像
docker search --filter=STARS=9000 mysql
3. 拉取镜像
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest
加:tag 则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
比如
docker pull mysql:5.7.30
4. 删除镜像
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
5. 导出镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
比如:
docker save tomcat -o /myimg.tar
6. 加载导出的镜像
docker load -i 镜像保存文件位置
7. 镜像标签
相当于给镜像弄版本号或者区分开发和测试版本等
docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
如果省略TAG 则会为镜像默认打上latest TAG 等于 docker tag aaa:latest bbb:test
docker tag aaa bbb
三. docker 容器命令
1. 查看正在运行容器列表
docker ps
2. 查看所有容器 -----包含正在运行 和已停止的
docker ps -a
3. 运行容器
3.1 运行之前未运行过的容器
会占用当前终端,适合短期任务和调试。
docker run 镜像ID/镜像名
3.2 运行之前运行过但停止的容器
docker start 容器ID/容器名
上面启动后容器只
3.3 后台运行 -d
docker run -d tomcat
3.4 端口映射 -p
将 容器的80 端口映射到 宿主机的8080 端口
docker run -d -p 8080:80 tomcat
3.5 为容器指定一个名称 --name
docker run -d -p 8080:8080 --name myTomcat tomcat

3.6 容器数据卷挂载 -v
来源痛点:若没有容器数据卷,数据都在容器内存储,一旦容器删除数据也会丢失,所以就有了容器数据卷。
好处:我们以后修改只需要在本地修改即可,容器内会自动同步,它是一种copy方式,即使删除其中一个容器,映射在外面的数据依旧存在。
3.6.1 挂载文件
比如挂载nginx配置文件
首先一定要在宿主机所要挂载的目录创建一个nginx.conf,然后里面写上基本配置,不能是空文件,配置文件尽量从别处复制个完整的。下面只是个例子
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9005;
server_name 192.168.1.100;
charset utf-8;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /pro-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.1.100:17888/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
然后运行docker命令
docker run -d -p 80:80 -v /usr/local/docker-nginx-conf/nginx.conf:/etc/nginx/nginx.conf --name myNginx11 2cd1d97f893f
挂载配置文件和前端目录。
配置文件宿主机需要事先有,挂载的目录容器里面会自动创建
docker run -d -p 80:80 --name myNginx2 -v /opt/myProject/vueProject:/usr/local/myProject -v /usr/local/my-docker-data/nginx.conf:/etc/nginx/nginx.conf 2cd1d97f893f
3.6.2 挂载目录
比如挂载mysql目录
宿主机准备工作
mkdir -p /usr/local/docker-mysql-data
chown -R 999:999 /usr/local/docker-mysql-data # 修改目录所有者
chmod -R 755 /usr/local/docker-mysql-data # 赋予读写权限
docker run -d -p 3306:3306 --name mysql-container -v /usr/local/docker-mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql
3.6 运行后进入交互模式 -it
容器的输出会直接显示在终端中,用户可以实时看到容器的运行状态和输出。
docker run -it tomcat
如果运行后直接进入容器的 Bash 终端
docker run -it tomcat /bin/bash
3.7 进入容器 exec
- 首先启动一个容器
docker run -d -p 8080:8080 --name myTomcat4 tomcat
- 进入启动后的这个容器
docker exec -it myTomcat4 /bin/bash
3.8 退出容器
exit
4. 重启容器
docker restart 容器ID/容器名
5. 停止容器
给进程时间清理资源时间,优雅关闭
docker stop 容器名/容器ID
直接强制终止,一般不建议使用
docker kill 容器ID/容器名
6. 删除容器
删除一个容器
docker rm -f 容器名/容器ID
删除全部容器
docker rm -f $(docker ps -aq)
7. 查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
8. 容器随docker启动而启动
启动容器时,使用docker run命令时 添加参数--restart=always 便表示,该容器随docker服务启动而自动启动
docker run -itd --name redis002 -p 8888:6379 --restart=always redis:5.0.5 /bin/bash
9. 更新容器配置
把容器更新为跟随docker启动而启动
docker update --restart=always 容器Id 或者 容器名
或
docker container update --restart=always 容器Id 或者 容器名
10. 更换容器名
docker rename 容器ID/容器名 新容器名
11. 查看容器信息 inspect(元数据)
docker inspect 4a42faa31350
Config:容器的静态配置
State:运行时状态信息
NetworkSettings:网络配置
Mounts:卷挂载信息
HostConfig:主机相关配置

12. 提交容器为新镜像
类似于git提交,也就是容器的版本管理
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
例如:
docker commit -a="wangzhen" -m="测试提交" 25cf5f2e460c my_nginx999:2.0


305

被折叠的 条评论
为什么被折叠?



