# Docker使用经验

# 目录

[toc]

# 1.镜像&容器

镜像和容器

  • 容器是由镜像实例化而来。简单来说,镜像(images)是文件,容器(container)是进程
  • 命令格式3部分
    • docker 命令名称 其他参数

# 2.镜像(images)相关命令

# 2.1.本地(local)和远程(remote)交互

# docker login

# docker pull

# docker push

docker search : 从Docker Hub查找镜像

  • 其实,我觉得比如,阿里的也可以查找
docker search centos
1

# 2.2.本地(local)镜像管理

# docker images⭐

docker images : 列出本地镜像。

  • 这个可以查看那docker pull 某镜像 ,命令是否执行成功

# docker rmi⭐

  • rmi命令的来源(rm + images)

删除本地一个或多个镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]
1

# docker tag⭐[注意仓库理解]

docker tag : 标记本地镜像,将其归入某一仓库

root@runoob:~# docker tag ubuntu:15.10 runoob/ubuntu:v3
root@runoob:~# docker images   runoob/ubuntu:v3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/ubuntu       v3                  4e3b13c8a266        3 months ago        136.3 MB
1
2
3
4

# 3.容器(container)相关命令

# 3.1.容器生命周期管理(大概类似进程管理)

# docker run⭐

创建一个新的容器运行一个命令

# docker create⭐

创建一个新的容器但不启动它(注意和run命令区别)

# docker rm⭐

删除一个或多个容器

# docker kill

杀掉一个运行中的容器。

类似杀死进程了

# docker start/stop/restart⭐

docker start :启动一个或多个已经被停止的容器

docker stop :停止一个运行中的容器

docker restart :重启容器

# docker pause/unpause

docker pause : 暂停容器中所有的进程。

docker unpause : 恢复容器中所有的进程。

# 区别docker stopdocker pause

1、stop命令用于停止一个运行中的容器,pause命令用于暂停容器中的所有进程;

2、使用stop命令容器内主进程会在指定时间内被杀死,默认为十秒,使用pause命令会挂起指定容器中的所有进程。

# docker exec 命令⭐⭐⭐

docker exec :运行的容器中执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec [选项]     容器      命令 [ARG...]
1
2

OPTIONS说明:

  • **-d 😗*分离模式: 在⭐后台运行⭐
  • **-i 😗*即使没有附加也保持STDIN 打开
  • **-t 😗*分配一个⭐伪终端⭐(方法2,使用docker desktop里面的终端)

在容器 mynginx 中开启一个交互模式的终端:

runoob@runoob:~$ docker exec -i -t  mynginx /bin/bash
root@b1a0703e41e7:/#
1
2

# 3.2.获取-容器本身更多信息(类似进程信息)

# docker port⭐⭐

docker port 用于列出指定的容器的端口映射,或者查找将 PRIVATE_PORT NAT 到面向公众的端口。

⭐常用:比如。用来给vscode链接我本地的docker中的Linux

# docker top

**docker top 😗*查看容器中运行的进程信息,支持 ps 命令参数。

# 4.关于docker的FAQ

# 4.1.docker疑难杂症:docker命令Tab无法自动补全

  • bash的解决方案:
今天在敲命令时,发现docker无法自动补全镜像名和其他参数,这样使用效率大大降低,然后百度找方法,下面是解决方法

一、安装bash-complete
yum install -y bash-completion
1
二、刷新文件
source /usr/share/bash-completion/completions/docker
source /usr/share/bash-completion/bash_completion
1
2
简单两步,就可以Tab补全我们的镜像名和命令了。
————————————————
版权声明:本文为CSDN博主「刘李404not found」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39680564/article/details/97026656
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 4.2.zsh的解决方案(2个链接都要看)

https://developer.aliyun.com/article/914947

➜  ~ mkdir -p ~/.zsh/completion
➜  ~ curl -L https://raw.githubusercontent.com/docker/compose/1.27.4/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 28 ms: Connection refused
➜  ~ curl -L https://raw.githubusercontent.com/docker/compose/1.27.4/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 18078  100 18078    0     0  19445      0 --:--:-- --:--:-- --:--:-- 19501
➜  ~ vim ~/.zshrc


1
2
3
4
5
6
7
8
9
10
11
12
13
  • .zshrc里面放
fpath=(~/.zsh/completion $fpath)
autoload -Uz compinit && compinit -i
1
2
# 创建对应的目录
$ mkdir -p ~/.zsh/completion

# 从docker安装目录中获取补全插件
$ ll /Applications/Docker.app/Contents/Resources/etc
-rw-r--r--@ 1 Escape  admin    13K  8 27 19:44 docker-compose.bash-completion
-rw-r--r--@ 1 Escape  admin    19K  8 27 19:44 docker-compose.zsh-completion
-rw-r--r--@ 1 Escape  admin    12K  8 27 19:44 docker-machine.bash-completion
-rw-r--r--@ 1 Escape  admin    13K  8 27 19:44 docker-machine.zsh-completion
-rwxr-xr-x@ 1 Escape  admin   105K  8 27 19:44 docker.bash-completion
-rwxr-xr-x@ 1 Escape  admin    49K  8 27 19:44 docker.fish-completion
-rwxr-xr-x@ 1 Escape  admin   123K  8 27 19:44 docker.zsh-completion

# 配置到zsh配置目录中
$ cp /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion ~/.zsh/completion/_docker
$ cp /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion ~/.zsh/completion/_docker-compose
$ cp /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion ~/.zsh/completion/_docker-machine

$ source ~/.zshrc
# 重载zsh配置
$ docker image
image   -- Manage images
images  -- List images
import  -- Import the contents from a tarball to create a filesystem image
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  • 参考资料:http://www.pointborn.com/article/2020/10/7/990.html

# 参考资料