Docker安装及常用命令
Docker 相关概念
1. 什么是Docker
Docker 是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker 版本有 Ubuntu、CentOS、Debian、mac、Windows
Docker 像一个轻量级的虚拟机,但远比虚拟机本身占用次源少。
2. Docker Container(容器)
Docker 将宿主机隔离出来的一个个的空间。
3.Docker image (镜像)
特殊的文件系统,是对某一时刻容器关态的备份,就像 window 中 Ghost 镜像。
镜像不包含任何动态数据,基内容在构建之后也不会被改变。
4.DockerRegistry(记录中心)
是官方及第三该机构提供的镱像下载仓库,如 maven 的中央仓库,把一些常用的容器打包成镜像,开发者
可以直接中 registry 上下载镜像。
5.Docker运行原理
操作用户可以用 Docket 客户端完成以下操作:
通过客户端从 Registry 下载镜像。(pull)
运行本地镜像,成为容器。(run)
通过 Dockerfile 文件构建新的镜像。(build)
切换root用户
sudo su root
更新apt
sudo apt-get update
安装apt
sudo apt install net-tools
安装ssh
sudo apt-get install openssh-server
docker安装
-
由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io
-
更新apt包索引:
sudo apt-get update
-
安装以下包以使apt可以通过HTTPS使用存储库(repository):
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
-
添加Docker官方的GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
使用下面的命令来设置stable存储库:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
安装最新版本的Docker CE:
$ sudo apt-get install -y docker-ce
-
查看docker服务是否启动:
$ systemctl status docker
-
查看是否安装成功:
$ sudo docker -v
配置阿里云远程仓库
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://8z4e1ukg.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
将用户docker用户组
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用
安装portainer可视化界面
docker volume create portainer_data
docker run -d -p 9010:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
安装redis
docker network create kgc_net
创建网段
docker network create kgc_net
创建网段
docker search redis
搜索镜像
docker pull redis
拉取下载镜像
通过镜像生成容器redis
docker run -d -p 6379:6379 --restart=always --name redis --network kgc_net --network-alias redis redis
安装RabbitMQ
通过镜像生成rabbitmq
docker run -d -it --name rabbitmq -p 15672:15672 -p 5672:5672 --network kgc_net --network-alias rabbitmq rabbitmq
启动rabbitmq_management
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management
安装mysql
docker pull mysql:5.6
拉取镜像
docker images mysql
查看镜像
使用mysql5.6镜像创建容器 (映射端口为12345)
docker run -p 12345:3306 \
--name mysql \
-v /zzyyuse/mysql/conf:/etc/mysql/conf.d \
-v /zzyyuse/mysql/logs:/logs \
-v /zzyyuse/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d \
mysql:5.6
docker常用命令
查看docker版本 : docker --version
查看安装的镜像:docker images [NAME]
下载镜像:docker pull NAME[:TAG]
搜索可用的docker镜像:docker search NAME
比如获取最新的centos镜像:docker pull centos:latest
启动容器:docker start [容器ID]
查看正在运行的容器:docker ps
查看最近生成的容器:docker ps -l
查看所有容器ID:docker ps -a -q
删除所有的容器:docker rm $(docker ps -a -q)
删除单个镜像:docker rmi [镜像ID]
制作镜像(dockerfile)
内置命令
FROM:依赖的底层镜像
MAINTAINER:指定镜像创建者
ENV:设置环境变量
RUN:运行 shell 命令
COPY:将编译机本地文件拷贝到镜像文件系统中
EXPOSE:指定监听端口
ENTRYPOINT:预执行命令,创建容器并启动后才执行
创建 Dockerfile 文件(文件名称必须是 Dockerfile)
FROM tomcat
MAINTAINER tiger
COPY scope.html /usr/local/tomcat/webapps/ROOT
EXPOSE 8080/tcp
执行命令生成镜像
docker build [OPTIONS] PATH|URL|.
OPTIONS 说明:
-t :后面标示要创建的镜像名称
. :代表 Dockerfile 所在的路径
根据镜像,生产docker容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS 说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器 ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的 DNS 服务器,默认和宿主一致;
--dns-search example.com: 指定容器 DNS 搜索域名,默认和宿主一致;
-h "mars": 指定容器的 hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定 CPU 运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
-p:映射端口 8888:8080 前面为宿主机端口,后面是 tomcat 端口