docker系列-基础镜像环境和Docker常⽤命令整理在hub官⽹会经常能看到 alpine 字样, alpine 是要给⾮常轻量级的Linux发⾏版,Docker官⽅已经推荐使⽤alpine 代替之前的 Ubuntu作为基础镜像环境, 好处是制作出的最终镜像⽂件很多, 但docker dub上⽬前仍以 Ubuntu 为主流的基础镜像环境.=======================⽤于 docker 命令学习的镜像和命令=======================下⾯镜像常⽤于 docker 命令学习docker pull nginx:1.15-alpine #只需要20M的空间docker pull busybox #只占⽤2M空间以守护态运⾏容器, 经常⽤于容器的学习.docker run -d --name mybusybox busybox /bin/sh -c "while true; do echo hello world; sleep 1; done"使⽤镜像nginx:1.15-alpine以后台模式启动⼀个容器, 并将容器的80端⼝映射到主机随机端⼝(80是该镜像expose的端⼝)docker run -P -d --name mynginx1 nginx:1.15-alpine使⽤镜像nginx:1.15-alpine以后台模式启动⼀个容器, 指定主机的端⼝为 80docker run -p 80:80 -d --name mynginx2 nginx:1.15-alpine=======================docker 容器端⼝映射=======================1. 指定host端⼝和容器内端⼝使⽤镜像nginx:1.15-alpine以后台模式启动⼀个容器, 指定主机的端⼝为80, 冒号前的host端⼝, 冒号后为容器内部的端⼝.docker run -p 80:80 -d --name mynginx2 nginx:1.15-alpine2. 容器内端⼝随机分配⼀个Host端⼝下⾯ -p 参数的 80 指的是容器内部的端⼝, 没有指定host端⼝, docker在主机上⾃动开放⼀个映射端⼝(当然是未被占⽤的), ⾃动端⼝号⼀般⼤于等于 32768 .docker run -p 80 -d --name mynginx2 nginx:1.15-alpine3. ⾃动为所有的 Dockerfile EXPOSE 端⼝映射Host端⼝Dockerfile EXPOSE 可能会开放多个端⼝, 使⽤ -P 参数将⾃动为这些容器内部端⼝分配对应的Host主机端⼝docker run -P -d --name mynginx1 nginx:1.15-alpine=======================docker 的⼀些常⽤命令=======================docker images 命令, 显⽰可⽤的容器docker rmi <镜像Id> 命令,删除指定镜像docker pull hello-world 命令 , 下载 hello-world imagedocker rmi <镜像Id> 命令,删除指定镜像docker ps 命令, 列出当前正在运⾏的容器, 结果的第⼀列是container_Id, 第2列是容器名称.docker ps -a 命令, 列出当前正在运⾏的和之前运⾏完的容器docker stop container_id/container-name 命令, 停⽌指定的容器, 该容器Id或名称可以从docker ps中获取.docker restart container_id/container-name 命令, 重新启动指定的容器, 该容器Id或名称可以从docker ps中获取.docker start container_id/container-name 命令, 启动指定的容器, 该容器Id或名称可以从docker ps中获取.docker rm container_id/container-name, 删除指定的容器docker rm $(docker ps -a -q) 命令, 删除所有运⾏结束了容器, 正在运⾏的容器不会被删除docker top container_id/container-name, 查看容器内的进程docker logs [-f] [-t] [--tail string] 容器名, 查看容器的⽇志输出, -f是打开跟踪, -t是加上时间戳, --tail 100 表⽰仅显⽰最后的100⾏⽇志docker search nginx, 在hub站点中搜索 nginx 镜像docker image inspect image_id 命令, 显⽰指定镜像的详细信息.docker container inspect container_id/container-name 命令, 显⽰指定容器的详细信息,包括容器的Ipdocker images -f dangling=true 命令, 列出没有被容器化的镜像docker rmi $(docker images -qf dangling=true) 命令, 删除那些没有被容器化的镜像docker system df 命令, 可以⼀次性查看镜像/容器/host volume的磁盘占⽤情况.docker ps -s 命令, 输出容器的空间占⽤=======================docker ⼀些管理命令集=======================除了上⾯常⽤的命令外, docker 还有⼀些管理命令集, 这些命令集还可以包含⼆级命令:config Manage Docker configscontainer Manage containersimage Manage imagesnetwork Manage networksnode Manage Swarm nodesplugin Manage pluginssecret Manage Docker secretsservice Manage servicesstack Manage Docker stacksswarm Manage Swarmsystem Manage Dockertrust Manage trust on Docker imagesvolume Manage volumes⽐较常⽤的是,docker image build, 编译 Dockfiledocker network create, 创建 docker ⽹络docker volume create, 创建数据卷=======================docker run/exec 命令=======================运⾏ hello-world 容器, 如果本地没有下载, 将会⾃动从hub站点下载.docker run hello-world 命令以守护态运⾏容器docker run -d --name mybusybox busybox /bin/sh -c "while true; do echo hello world; sleep 1; done"登陆⼀个容器, 运⾏中的容器其实是⼀个功能完备的Linux操作系统, 所以我们可以在登陆该容器执⾏常规的Linux命令.docker exec -it container_id/container-name /bin/bash使⽤ redis-cli 登陆 myredis 容器docker exec -it myredis redis-cliexec 后的 -it 参数的意思是, 以交互的⽅式并分配⼀个伪tty, 经常⼀起联⽤.=======================docker redis 使⽤=======================# 下载最新版的 redis imagedocker pull redis:latest# 简单⽅式启动 redis 服务pull run redisdocker run --name itbilu-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-pass -d mysql:5.7我们就创建了⼀个名为 itbilu-mysql 的MySQL数据库服务器容器实例, 在创建数据库时,通过环境变量MYSQL_ROOT_PASSWORD设置数据库的root密码,还通过5.7标签指定了所使⽤的镜像版本。