一叶知秋.

业精于勤,荒于嬉;行成于思,毁于随。

Docker的基础知识(二)

Docker的基础知识(二)

Docker Hub 官网
 

搜索镜像

docker search <镜像名>
[root@web01 ~]# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   6119                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              132                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   118                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   115                                     [OK]
centos/systemd                     systemd enabled base container.                 86                                      [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   79                                      
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                                      [OK]

下载镜像

docker pull <镜像名>:<标签>
[root@web01 ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

 
列出本地镜像列表

docker images
[root@web01 ~]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
jumpserver/jms_koko        2.0.1               589d376dd1f0        5 weeks ago         356MB
jumpserver/jms_guacamole   2.0.1               875616016472        5 weeks ago         659MB
mysql/mysql-server         5.7                 278f8eedd831        3 months ago        338MB

创建容器

docker run [options] <images> [command]

options:

-i:表示启动一个可交互的容器,并持续打开标准输入
-t:表示使用终端关联到容器的标准输入输出上(伪终端)
-d:表示将容器放置后台运行
--rm:退出后删除容器
--name:表示定义容器唯一名称,若不指定,docker会自动生成

“run -d”一个容器后有一个问题,docker ps -a发现容器已经退出
原因:docker容器后台运行,就必须要一个前台进程;容器运行的命令如果不是那些一直挂起的命令(如top,tail),就会自动退出

[root@web01 /server]# docker run  -d ubuntu /bin/sh -c "tail -f /etc/passwd "
7c53320ff9e2fe5ae052c82e7fd2cb84a8165705a0f6bc32a560267bb74d1fa4
[root@web01 /server]# docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED              STATUS                        PORTS                  NAMES
7c53320ff9e2        ubuntu                           "/bin/sh -c 'tail -f…"   4 seconds ago        Up 4 seconds                                         serene_albattani

查看容器列表

docker ps 
#-a 选项列出所有容器,包括终止的容器
[root@web01 ~]# docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED              STATUS                       PORTS                  NAMES
50d961ce27da        jumpserver/jms_koko:2.0.1        "/bin/bash"              About a minute ago   Exited (127) 8 seconds ago                          jumpserver

 
‘启动/重启/停止/删除’ 容器

docker start/restart/stop/rm <容器名>/<或容器ID>
[root@web01 ~]# docker start 50d961ce27da
50d961ce27da
[root@web01 ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                 PORTS                  NAMES
50d961ce27da        jumpserver/jms_koko:2.0.1   "/bin/bash"              4 minutes ago       Up 3 seconds  

exit容器停止退出,ctrl+P+Q 容器不停止退出
 

查看容器日志

docker logs -f -t --tail <容器ID>

-t:加入时间戳
-f:跟随最新的日志打印
--tail <数字>:显示最后多少条

[root@web01 ~]# docker run -d --name hello ubuntu /bin/sh -c "while true;do echo hello;sleep 2;done" #后台运行ubuntu容器,执行脚本:2秒输出一次'hello'.
[root@web01 ~]# docker logs -tf --tail 3 hello
2020-08-04T03:58:04.031315538Z hello
2020-08-04T03:58:06.032629017Z hello
2020-08-04T03:58:08.033905089Z hello

 
查看容器内部细节

docker inspect <容器名>

 
连接容器

docker attach <容器名>

若运行DB或服务器应用程序将无法进行输入,只能看到输出
缺点:如果两个窗口都attach到同一容器中,两个窗口操作会同步,要退出都退出

 
从外部运行容器内的命令

docker exec <容器名> <命令> <参数> 
#谨慎使用exec,会对容器造成意外影响
#exec 只能在容器运行时使用
[root@web01 ~]# docker exec hello echo "hello world"
Error response from daemon: Container ccf9d9b6fc3133bd2c9bb82917a50c813b1f9342ad23dacd470f3605991ad7a5 is not running
[root@web01 ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                 PORTS                  NAMES
521f6ecdefe9        ubuntu                   "/bin/bash"              3 seconds ago       Up 2 seconds                                  hello
[root@web01 ~]# docker exec hello echo "hello world"
hello world

 
从容器内拷贝文件到主机上

docker cp <容器名>:/路径/文件 /本地路径
[root@web01 /server]# docker cp ubuntu:/tmp/test.txt ./
[root@web01 /server]# ls
test.txt

删除镜像

docker rmi <容器名>:<标签>
posted @ 2020-08-04 19:52  ccku  阅读(143)  评论(0编辑  收藏  举报