常用Docker指令
Docker 常用命令 (opens new window)
# 常用指令
# 镜像
# 查找镜像
docker search [image name]
# 拉取镜像
docker pull [image name]
# 查看本地镜像
docker images
# 显示机器上所有的镜像
docker image ls -a
# 删除镜像
docker image rm hello-world
# 删除镜像
docker rmi [image ID]
# 重命名image
docker tag [image_name] [new_image_name]
#将自定义的镜像发布到仓库。如:docker push followtry/demo:latest上传后访问地址:https://cloud.docker.com/swarm/followtry/repository/docker/followtry/demo/general
docker push [username]/[repository]:[tag]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 容器
# 本地不存在,会到仓库获取
docker run [应用名]
# 停止容器
docker stop [containerid]
# 删除容器
docker container rm [容器ID]
docker rm -f [容器名称]
# 查看容器IP
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 1f7d8f36523c
# 查看日志
docker logs [容器名称]
Options:
--details 显示更多的信息
-f, --follow 跟踪日志输出,最后一行为当前时间戳的日志
--since string 显示自具体某个时间或时间段的日志
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
# 查看当前正在运行的image实例
docker ps
# 查看指定容器启动情况
docker ps -a | grep [60afe4036d97]
# 检查任务或容器
docker inspect [task or container]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 常见Docker应用部署方案
# MySql
docker pull mysql
docker run --name mysql --restart always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/gjason/docker/mysql/data:/var/lib/mysql -d mysql:5.6
1
2
2
- -d表示容器将以后台模式运行,所有I/O数据只能通过网络资源或者共享卷组来进行交互。
- -p 127.0.0.1:3306:3306将主机(127.0.0.1)的端口3306映射到容器的端口3306中。这样访问主机中的3306端口就等于访问容器中的3306端口。
- --name mysql给容器取名为 mysql,这样方便识别。
- -v /Users/zengjing/docker/mysql/data:/var/lib/mysql将本机的文件目录挂载到容器对应的目录(/var/lib/mysql)中。这样可以通过数据卷实现容器中数据的持久化。
- -e MYSQL_ROOT_PASSWORD="123456", -e表示设置环境变量,此处设置了mysql的root 用户的访问密码为 123456。
- mysql:latest表示使用 mysql 的最新镜像启动一个容器。
# 进入容器
docker exec -it ${CONTAINER ID} /bin/bash
# 进入mysql
mysql -uroot -p
mysql -h 127.0.0.1 -u root -p
1
2
3
4
5
2
3
4
5
# redis
docker run -p 6379:6379 --restart always --name redis -v /Users/gjason/docker/redis.conf:/etc/redis/redis.conf -v /Users/gjason/docker/redis/data -d redis:latest redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
1
- -p 6379:6379 :将容器的6379端口映射到主机的6379端口
- redis-server --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置
redis-server /etc/redis/redis.conf之后的参数是修改redis.conf中的参数值
# Mongo
docker pull mongo
docker run --name mongo -p 27017:27017 -v /Users/gjason/docker/mongo/data/configdb:/data/configdb -v /Users/gjason/docker/mongo/data/db:/data/db -d mongo
1
2
3
2
3
# kafka
docker run -d --name zookeeper -p 127.0.0.1:2181:2181 -t zookeeper
docker run -d --name kafka -e HOST_IP=localhost -e KAFKA_ADVERTISED_PORT=9092 -e KAFKA_BROKER_ID=1 -e ZK=zk -p 9092:9092 --link zookeeper:zk -t kafka
1
2
3
2
3
# Mac 阿里镜像加速配置
- Docker 镜像加速器使用介绍 (opens new window)
- 右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中将URL加到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。
# 问题
Error response from daemon: conflict: unable to delete be816336fef0 (must be forced) - image is referenced in multiple repositories
由于存在多个imageid一样的镜像存在,需要 image:version 方式
如何保证 Docker 重启,容器服务不会随之下线?
sudo vim /etc/docker/daemon.json
添加"live-restore": true选项,比如:
{
"live-restore": true,
}
1
2
3
4
5
6
7
2
3
4
5
6
7
编辑 (opens new window)
上次更新: 2021/09/15, 17:09:16