ps 以下命令均为基于linux
1. 帮助命令
docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #帮助命令 sudo su root # 切换root用户 service docker start # 启动docker
2. 镜像命令
获取镜像
docker images # 获取本地的镜像
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
–digests Show digests
-f, --filter filter Filter output based on conditions provided
–format string Pretty-print images using a Go template
–no-trunc Don’t truncate output
-q, --quiet Only show image IDs
搜索镜像
docker search 镜像名字 # 搜索镜像
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search --help
Usage: docker search [OPTIONS] TERM
Search the Docker Hub for images
Options:
-f, --filter filter Filter output based on conditions provided
–format string Pretty-print search using a Go template
–limit int Max number of search results (default 25)
–no-trunc Don’t truncate output
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search mysql --filter=STARTS=5000
Error response from daemon: Invalid filter ‘starts’
// 搜索过滤
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search mysql --filter=STARS=5000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10637 [OK]
拉取镜像
docker pull 镜像名 # 拉取镜像 docker pull 镜像名:版本号 # 指定版本下载
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker pull mysql
Using default tag: latest // 如果不写Tag,,默认下载lastest
latest: Pulling from library/mysql // 分层下载, docker images 的核心 联合文件系统
6f28985ad184: Pull complete
e7cd18945cf6: Pull complete
ee91068b9313: Pull complete
b4efa1a4f93b: Pull complete
f220edfa5893: Pull complete
74a27d3460f8: Pull complete
2e11e23b7542: Pull complete
fbce32c99761: Pull complete
08545fb3966f: Pull complete
5b9c076841dc: Pull complete
ef8b369352ae: Pull complete
ebd210f0917d: Pull complete
Digest: sha256:5d1d733f32c28d47061e9d5c2b1fb49b4628c4432901632a70019ec950eda491 // 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest // 真实地址
删除镜像
docker rmi # 删除镜像 docker rmi -f 镜像id # 删除特定的镜像
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker rmi --help
Usage: docker rmi [OPTIONS] IMAGE [IMAGE…]
Remove one or more images
Options:
-f, --force Force removal of the image
–no-prune Do not delete untagged parents
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 2fb283157d3c 2 days ago 449MB mysql latest 26d0ac143221 2 days ago 546MB hello-world latest d1165f221234 2 weeks ago 13.3kB root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker rmi -f 26d0ac143221 Untagged: mysql:latest Untagged: mysql@sha256:5d1d733f32c28d47061e9d5c2b1fb49b4628c4432901632a70019ec950eda491 Deleted: sha256:26d0ac143221341c36402a139826e938d2ea6f2e458005a71699975c84e96ade Deleted: sha256:16f5b1eb2e7319e8a0db5df7f1ee0903033400a42264fcfbcc2d946b12267895 Deleted: sha256:303119686434550f3672a755dcda8a0468d34472d77e8789ffef5dc5f73dc790 Deleted: sha256:88f159cadb30aacd4df26c9fb6e1fb71b3cc3f5ce05468659879216e7751bad7 Deleted: sha256:55b6e8ee7cbea49773b2a88c3941ebad16537df99b087e673ca4b0175ade1b70 Deleted: sha256:e27b1c89d3f9e194c1a3495c24a9546135ee3ab6625e94eaaedd09a41343e7d0 root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 2fb283157d3c 2 days ago 449MB hello-world latest d1165f221234 2 weeks ago 13.3kB
构建镜像
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
runoob@runoob:~$ cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
runoob@runoob:~$ docker build -t runoob/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "fisher@sudops.com" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd runoob ......
参数说明:
- -t :指定要创建的目标镜像名
.
:Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec
runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/centos 6.7 860c279d2fec About a minute ago 190.6 MB
我们可以使用新的镜像来创建容器
runoob@runoob:~$ docker run -t -i runoob/centos:6.7 /bin/bash [root@41c28d18b5fb /]# id runoob uid=500(runoob) gid=500(runoob) groups=500(runoob)
从上面看到新镜像已经包含我们创建的用户 runoob。
设置镜像标签
我们可以使用 docker tag 命令,为镜像添加一个新的标签
runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。
runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/centos 6.7 860c279d2fec 5 hours ago 190.6 MB runoob/centos dev 860c279d2fec 5 hours ago 190.6 MB
3. 容器命令
说明: 有了镜像才可以创建容器, linux, 下载一个centos镜像来测试学习
新建容器并启动
docker run [可选参数] image # 参数说明 --name="Name" # 命名容器名字 -d # 后台方式运行 -i # 使用交互方式操作, -t # 运行终端 -p # 指定容器端口 -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口 (常用) -p # 随机端口
# 启动并进入容器 root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker run -it centos /bin/bash # 容器启动成功 注意[] [root@44ff7f7ed7fe /]#
从容器中退回主机
exit # 直接退出容器并停止 Ctrl + p + q # 退出容器但不停止
列出运行中的容器
docker ps
oot@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker ps --help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states)
(显示最近创建的运行中的程序)
(default -1)
-l, --latest Show the latest created container (includes all states)
–no-trunc Don’t truncate output
-q, --quiet Only display container IDs
(只显示运行中容器的id)
-s, --size Display total file sizes
删除容器
docker rm 容器id # 不能删除运行中的容器 docker rm -f $(docker ps -aq) # 删除所有的容器
启动和停止容器的操作
docker start 容器id # 启动已停止的容器 docker restart 容器id # 重启停止的容器 docker stop 容器id # 停止容器 docker kill 容器id #
- 停止所有正在运行容器
docker kill $(docker ps -a -q)
4.常用的其他命令
- 后台启动容器
docker run -d 镜像
- 查看日志
docker logs 容器id
- 查看容器的进程信息
docker ps
- 查看容器的内容信息
docker inspect 容器id
- 进入正在运行的容器
容器通常是以后台的方式运行的,需要进入容器修改一些配置
docker exec -it 容器id bashShell # 进入容器后新开一个终端, 可以在里面操作
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker exec -it 60c79e9079ae /bin/bash
[root@60c79e9079ae /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
docker attach 容器id # 进入容器正在执行的终端,不会启动新的终端
- 从容器内拷贝文件到主机
docker cp 容器id:容器内地址 目的主机地址 # 拷贝是一个手动的过程,未来我们可以使用 -v卷的技术,来实现同步
- 卷操作
root@DESKTOP-GC42A9O:/home# docker volume --help Usage: docker volume COMMAND Manage volumes Commands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumes Run 'docker volume COMMAND --help' for more information on a command.