以下操作均在 root 用户下进行,否则请带上
sudo
,或者是把用户加到docker
用户组内。
root@ding-server:~# docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/home/foxconn/.docker")
-v, --version Print version information and quit
Management Commands:
image Manage images
network Manage networks
Commands:
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
Run 'docker COMMAND --help' for more information on a command.
To get more help with docker, check out our guides at https://docs.docker.com/go/guides/
root@ding-server:~# docker pull --help
Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
--platform string Set platform if server is multi-platform capable
-q, --quiet Suppress verbose output
docker pull 镜像地址[:标签名]
不带标签名则为 latest
版。
root@ding-server:~# docker pull node:latest
latest: Pulling from library/node
6aefca2dc61d: Pull complete
967757d56527: Pull complete
c357e2c68cb3: Pull complete
c766e27afb21: Pull complete
32a180f5cf85: Pull complete
3507b5066a40: Pull complete
3c68557c340d: Pull complete
925b4ef5803f: Pull complete
3c263125b4e4: Pull complete
Digest: sha256:73c1ce2540981fec5b9bde1b6738eb08e4e480592afea52b4b8fc3f606b73559
Status: Downloaded newer image for node:latest
docker.io/library/node:latest
一般在帮助文档中,镜像创建者会注明如何运行。
下面的选项,仅“镜像名称或地址”必填,但通常要按需填其他选项。
docker run \
-itd \ # -i:打开标准输入 –t:分配终端 –d:后台
-p 6379:6379 \ # -p 宿主机端口号:容器端口号:映射端口
--name redis \ # --name 容器名称(如无该参数,会随机分配一个名称)
--restart always \ # --restart 重启策略(如无该参数,等同于参数值为 no)
--network ljl \ # --network 网络名:添加到网络
-v /root/redis/data:/data \ # -v 宿主机路径或卷:容器路径:映射目录或文件
-e TZ=Asia/Shanghai \ # -e 环境变量=值:赋环境变量
--privileged=true \ # 是否获取完整权限(如无该参数,为 false)
redis:latest \ # 镜像名称或地址[:标签名](如本地没有会自动拉取)
redis-server /.../redis.conf # 在容器内执行的命令
--restart no # 容器退出时,不重启(默认值)
--restart unless-stopped # 容器退出后总是重启,但是 docker 守护进程运行时即停止的不在内
--restart on-failure[:3] # 容器退出状态码非 0 时,自动重启容器,可以定义最大尝试次数
--restart always # 容器退出后总是重启
--rm # 容器退出后即销毁
# 查看当前运行中的容器
docker ps
# 查看全部状态的容器
docker ps --all
例:
使用 docker ps
时,看不到项目 1。
下面的“容器标识符”,为容器 ID 或其前面若干字;或者为容器名称。
# 停止容器
docker stop 容器标识符
# 启动已停止的容器
docker start 容器标识符
# 重启容器
docker restart 容器标识符
docker rm 容器标识符
只能在容器停止的情况下执行。
强制删除容器可以在容器运行时执行下面的语句,不过不建议在正式情况下使用:
docker rm -f 容器标识符
docker logs 容器标识符
实质上是查看容器内部的标准输出,会输出执行时所有的日志。
如果想实时动态查看日志,可以执行:
docker logs -f 容器标识符
docker exec [-dit] 容器标识符 命令(最好用绝对路径)
最常用的是通过执行容器内的 bash 以进入容器操作:
docker exec -it 容器标识符 /bin/bash
root@ding-server:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node latest 04232a462409 31 hours ago 995MB
<none> <none> 770539807ac2 8 days ago 460MB
jenkins-foxconn latest 2bd4c6fa881a 12 days ago 888MB
grafana/grafana latest b62664e7b910 13 days ago 286MB
prom/prometheus latest a5bac665ffa2 13 days ago 206MB
redis latest 3c3da61c4be0 2 weeks ago 113MB
postgres latest 74b0c105737a 2 weeks ago 376MB
nginx latest fa5269854a5e 2 weeks ago 142MB
jenkins/jenkins latest 997405ea0ac7 2 weeks ago 460MB
sonarqube community 4ca41017fd9b 4 weeks ago 532MB
sonarqube 9.2.4-developer 06a5f9c38d64 4 months ago 598MB
sonarqube 9.2.4-community d3899771462f 4 months ago 514MB
下面的“镜像标识符”,为镜像 ID 或其前面若干字;或者为镜像名称。
docker rmi 镜像标识符
更新镜像即为拉取镜像。
如果更新的镜像有容器在使用,需要删除容器,再运行,才能更新到容器内。