Docker 常用命令

1 docker 常用命令

整理常用的 docker 命令和常用的 docker 软件,详细和最新的命令文档还要参考最新的docker 官方文档地址

1.1 镜像管理

dockerHub 是docker的镜像仓库,里面存放有各种docker镜像。

1.1.1 在 dockerHub 查找镜像

docker search [OPTIONS] TERM
  • --filter , -f : 根据提供的条件过滤
  • --no-trunc : 显示完整的镜像描述
  • --limit : 限制搜索出来的结果数量(默认 25)

1.1.2 从 dockerHub 下载镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • --all-tags , -a : 拉取所有 tagged 镜像
  • --disable-content-trust : 忽略镜像的校验, 默认开启

1.1.3 本地镜像列表

docker images [OPTIONS] [REPOSITORY[:TAG]]
  • --all , -a : 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
  • --digests : 显示镜像的摘要信息
  • --filter , -f : 根据提供的条件过滤
  • --format : 指定返回值的模板文件
  • --no-trunc : 显示完整的镜像信息
  • --quiet , -q : 只显示镜像 ID

1.1.4 删除本地镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]
  • --force , -f : 强制删除镜像

1.2 容器操作

1.2.1 创建容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • --publish , -p : 绑定宿主机端口到容器端口(例如 -p 8080:80 把宿主机 8080 端口绑定到容器的 80 端口)
  • --detach , -d : 后台启动容器,并返回容器的 id
  • --name : 指定容器的名称
  • --volume , -v : 绑定挂载宿主机目录到容器目录(例如 -v /Users/sunbufu/data/logs:/logs 绑定挂载宿主机 /Users/sunbufu/data/logs 到容器到 /logs 目录
  • --env , -e : 设置容器的环境变量
  • --link : 与另外的容器建立链接

注:参数较多,详情请参考官方文档

1.2.2 启动容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

1.2.3 停止容器

docker stop [OPTIONS] CONTAINER [CONTAINER...]
  • --time , -t : 再杀掉容器之前等待秒数(默认 10)

1.2.4 杀掉容器

docker kill [OPTIONS] CONTAINER [CONTAINER...]
  • --signal , -s : 发给容器的信号(默认 KILL)

1.2.5 删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • --force , -f : 强制删除运行中的容器(使用 SIGKILL)

1.2.6 容器日志

docker logs [OPTIONS] CONTAINER
  • --tail : 展示日志文件尾部的多少行(默认 all)
  • --since : 展示从某个时间开始的日志(例如 2013-01-02T13:23:37)或者相对时间(例如 42m for 42 minutes)

1.2.7 执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • --interactive , -i : 以交互模式运行容器
  • --tty , -t : 为容器重新分配一个伪输入终端
  • --detach , -d : 后台运行模式

例:进入容器的 bash,并执行命令
docker exec -it mysql /bin/bash

2 docker 常用软件安装

2.1 gitlab-ce

docker run \
--detach \
--publish 8443:443 \
--publish 8080:80 \
--publish 8022:22 \
--name gitlab \
--volume ~/data/gitlab/config:/etc/gitlab \
--volume ~/data/gitlab/logs:/var/log/gitlab \
--volume ~/data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce 

2.2 mysql

docker run \
--detach \
--publish 3306:3306 \
--name mysql \
--volume ~/data/mysql/conf:/etc/mysql/conf.d \
--volume ~/data/mysql/logs:/logs \
--volume ~/data/mysql/data:/var/lib/mysql \
--env MYSQL_ROOT_PASSWORD=123456 \
mysql

注:mysql 8 版本需要额外的配置下远程连接用户,命令如下

#进入容器
docker exec -it mysql bash

#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

#添加远程登录用户
CREATE USER 'sunbufu'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'sunbufu'@'%';

2.3 mongodb

docker run \
--detach \
--publish 27017:27017 \
--name mongodb \
--volume ~/data/mongodb/data/db:/data/db \
mongo

2.4 zookeeper

docker run \
--detach  \
--publish 2181:2181 \
--volume ~/data/zookeeper/data/:/data/ \
--volume ~/data/zookeeper/conf/:/conf/ \
--name=zookeeper  \
--privileged zookeeper

2.5 redis

docker run \
--detach  \
--publish 6379:6379 \
--volume ~/data/redis/data/:/data/ \
--name redis \
redis \
redis-server --appendonly yes

redis-server --appendonly yes : 在容器执行 redis-server 启动命令,并打开 redis 持久化配置

2.6 nacos

docker run \
--detach \
--publish 8848:8848 \
--name nacos \
--volume ~/data/nacos/data:/home/nacos/data \
--volume ~/data/nacos/logs:/home/nacos/logs \
--env MODE=standalone \
nacos/nacos-server

详细配置参照 https://hub.docker.com/r/nacos/nacos-server

2.7 postgres

docker run \
--detach \
--publish 5432:5432 \
--name postgres \
--volume ~/data/postgres/data:/var/lib/postgresql/data \
--env POSTGRES_PASSWORD=123456 \
postgres

详细配置参照 https://hub.docker.com/_/postgres

2.8 nextcloud

docker run \
--detach \
--restart=always \
--name nextcloud \
--publish 8080:80 \
--volume ~/data/nextcloud/data:/var/www/html \
docker.io/nextcloud

详细配置参照 https://hub.docker.com/_/nextcloud

Search

    Table of Contents