docker 初探
Docker入门
目录
0、基本介绍
Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

1、安装(centos)

2、常用命令
-
查看docker版本情况
[root@izbp1bfxfdyulbdgtdansvz ~]# docker version Client: Docker Engine - Community Version: 19.03.12 API version: 1.40 Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:46:54 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 20.10.2 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: 8891c58 Built: Mon Dec 28 16:16:13 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.3 GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b runc: Version: 1.0.0-rc92 GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff docker-init: Version: 0.19.0 GitCommit: de40ad0 [root@izbp1bfxfdyulbdgtdansvz ~]# -
从docker仓库检索镜像
# docker search 镜像名 [root@izbp1bfxfdyulbdgtdansvz ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 10380 [OK] mariadb MariaDB is a community-developed fork of MyS… 3848 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 761 [OK] percona Percona Server is a fork of the MySQL relati… 519 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 87 mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 79 centurylink/mysql Image containing mysql. Optimized to be link… 59 [OK] bitnami/mysql Bitnami MySQL Docker Image 47 [OK] deitch/mysql-backup REPLACED! Please use http://hub.docker.com/r … 41 [OK] prom/mysqld-exporter 36 [OK] tutum/mysql Base docker image to run a MySQL database se… 35 databack/mysql-backup Back up mysql databases to... anywhere! 35 schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic backup… 29 [OK] linuxserver/mysql A Mysql container, brought to you by LinuxSe… 27 circleci/mysql MySQL is a widely used, open-source relation… 20 centos/mysql-56-centos7 MySQL 5.6 SQL database server 20 mysql/mysql-router MySQL Router provides transparent routing be… 17 arey/mysql-client Run a MySQL client from a docker container 17 [OK] fradelg/mysql-cron-backup MySQL/MariaDB database backup using cron tas… 10 [OK] openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 image… 6 devilbox/mysql Retagged MySQL, MariaDB and PerconaDB offici… 3 ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 2 [OK] widdpim/mysql-client Dockerized MySQL Client (5.7) including Curl… 1 [OK] jelastic/mysql An image of the MySQL database server mainta… 1 monasca/mysql-init A minimal decoupled init container for mysql 0 -
docker pull 拉取镜像(默认最新版latest)
# docker pull 镜像名:版本号 [root@izbp1bfxfdyulbdgtdansvz ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx a076a628af6f: Already exists 0732ab25fa22: Pull complete d7f36f6fe38f: Pull complete f72584a26f32: Pull complete 7125e4df9063: Pull complete Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest [root@izbp1bfxfdyulbdgtdansvz ~]# -
查看当前本地镜像
[root@izbp1bfxfdyulbdgtdansvz ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest a05fd91ad06a 9 days ago 550MB nginx latest f6d0b4767a6c 9 days ago 133MB mysql 5.7 cc8775c0fe94 9 days ago 449MB centos latest 300e315adb2f 6 weeks ago 209MB -
移除本地镜像
# docker rmi 镜像id [root@izbp1bfxfdyulbdgtdansvz ~]# docker rmi f6d0b4767a6c Untagged: nginx:latest Untagged: nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa Deleted: sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d74 Deleted: sha256:4dfe71c4470c5920135f00af483556b09911b72547113512d36dc29bfc5f7445 Deleted: sha256:3c90a0917c79b758d74b7040f62d17a7680cd14077f734330b1994a2985283b8 Deleted: sha256:a1c538085c6f891424160d8db120ea093d4dda393e94cd4713e3fff3c82299b5 Deleted: sha256:a3ee2510dcf02c980d7aff635909612006fd1662084d6225e52e769b984abeb5 [root@izbp1bfxfdyulbdgtdansvz ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest a05fd91ad06a 9 days ago 550MB mysql 5.7 cc8775c0fe94 9 days ago 449MB centos latest 300e315adb2f 6 weeks ago 209MB [root@izbp1bfxfdyulbdgtdansvz ~]# -
使用镜像实例化容器
-
-i: 交互式操作。
-
-t: 终端。
-
centos: centos镜像。
-
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
# docker run -it centos /bin/bash [root@izbp1bfxfdyulbdgtdansvz /]# docker run -it centos /bin/bash [root@b89b415c7413 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@b89b415c7413 /]# # 使用exit退出容器
-
-
查看当前容器情况
# docker ps [root@izbp1bfxfdyulbdgtdansvz /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06445fcfd1e5 wordpress:latest "docker-entrypoint.s…" 3 days ago Up 24 hours 0.0.0.0:8000->80/tcp my_docker_blog_wordpress_1 997e7e697331 mysql:5.7 "docker-entrypoint.s…" 3 days ago Up 24 hours 3306/tcp, 33060/tcp my_docker_blog_db_1 [root@izbp1bfxfdyulbdgtdansvz /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b89b415c7413 centos "/bin/bash" 4 minutes ago Exited (0) 3 minutes ago lucid_tereshkova 06445fcfd1e5 wordpress:latest "docker-entrypoint.s…" 3 days ago Up 24 hours 0.0.0.0:8000->80/tcp my_docker_blog_wordpress_1 997e7e697331 mysql:5.7 "docker-entrypoint.s…" 3 days ago Up 24 hours 3306/tcp, 33060/tcp my_docker_blog_db_1 # docker ps --help [root@izbp1bfxfdyulbdgtdansvz /]# 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 numeric IDs -s, --size Display total file sizes [root@izbp1bfxfdyulbdgtdansvz /]# -
后台实例化一个镜像
# docker run -itd --name centos-test centos /bin/bash [root@izbp1bfxfdyulbdgtdansvz /]# docker run -itd --name centos-test centos /bin/bash 87c9509a6388a60d6f1d521dde15e7d3b4259ea04a0d436df9613f7687babff0 [root@izbp1bfxfdyulbdgtdansvz /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 87c9509a6388 centos "/bin/bash" 23 seconds ago Up 22 seconds centos-test 06445fcfd1e5 wordpress:latest "docker-entrypoint.s…" 3 days ago Up 24 hours 0.0.0.0:8000->80/tcp my_docker_blog_wordpress_1 997e7e697331 mysql:5.7 "docker-entrypoint.s…" 3 days ago Up 24 hours 3306/tcp, 33060/tcp my_docker_blog_db_1 [root@izbp1bfxfdyulbdgtdansvz /]# -
进入后台运行的一个容器
-
docker attach CONTAINER ID 退出会导致容器停止
-
docker exec 退出容器不停止 推荐使用
# docker exec -it 6e50dc99c623 /bin/bash
-
-
停止一个容器
docker stop CONTAINER ID -
重启一个容器
docker restart CONTAINER ID -
删除一个容器
docker rm CONTAINER ID -
清理所用已经停止的容器
docker container prune -
查看Docker 容器的配置和状态信息
# docker inspect <CONTAINER ID>[root@izbp1bfxfdyulbdgtdansvz /]# docker inspect 997e7e697331[ { "Id": "997e7e697331ca8f460fd92abb769c5f8b740a6f404dd2ec657c64f978963b2c", "Created": "2021-01-18T08:26:57.365608744Z", "Path": "docker-entrypoint.sh", "Args": [ "mysqld" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 22221, "ExitCode": 0, "Error": "", "StartedAt": "2021-01-21T04:50:26.898769281Z", "FinishedAt": "2021-01-21T04:50:10.24839982Z" }, "Image": "sha256:cc8775c0fe94cd6cbfc494688d09b078cda9bced9d9324d5c28bddf032344fc3",.... -
拷贝命令(从容器中cp到宿主机)
# docker cp 容器id:/file-path local-path
3、练习
-
mysql
docker run -d --name mysql-5-7 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7 -
nginx
# 拉取镜像[root@izbp1bfxfdyulbdgtdansvz ~]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxa076a628af6f: Already exists0732ab25fa22: Pull completed7f36f6fe38f: Pull completef72584a26f32: Pull complete7125e4df9063: Pull completeDigest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aaStatus: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest# 启动镜像 docker run -d --name my-nginx -p 宿主机端口:镜像内部端口 [root@izbp1bfxfdyulbdgtdansvz sbin]# docker run -d --name my-nginx -p 8888:80 nginx:latest79531f01b2bb4b09cd8f16cabc7627a92a4c1d5115dd6fad89d1b8b03c5a4e4c[root@izbp1bfxfdyulbdgtdansvz sbin]## 访问测试[root@izbp1bfxfdyulbdgtdansvz sbin]# curl localhost:8888<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>[root@izbp1bfxfdyulbdgtdansvz sbin]# -
tomcat
# 拉取[root@izbp1bfxfdyulbdgtdansvz sbin]# docker pull tomcat:9.09.0: Pulling from library/tomcatb9a857cbf04d: Pull completed557ee20540b: Pull complete3b9ca4f00c2e: Pull complete667fd949ed93: Pull complete661d3b55f657: Pull complete511ef4338a0b: Pull completea56db448fefe: Pull complete00612a99c7dc: Pull complete326f9601c512: Pull completec547db74f1e1: Pull completeDigest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305Status: Downloaded newer image for tomcat:9.0docker.io/library/tomcat:9.0# 后台启动[root@izbp1bfxfdyulbdgtdansvz sbin]# docker run -itd --name my-tomcat -p 8889:8080 tomcat:9.00a0232f6910f377f33bc151f0b92256a8afdfb2c63fd272d17a23d05b9068127# 进入容器[root@izbp1bfxfdyulbdgtdansvz sbin]# docker exec -it my-tomcat /bin/bashroot@0a0232f6910f:/usr/local/tomcat## 复制文件root@0a0232f6910f:/usr/local/tomcat# cp -r webapps.dist/* webapps/# 测试访问 -
es+kibana
-
图形化portainer
docker run -d -p 8899:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
4、构建镜像
当docker仓库的镜像不能满足需要了,就需要自己构建镜像
-
docker镜像加载原理
-
分层理解
-
commit镜像

浙公网安备 33010602011771号