Docker包括三个基本概念:镜像、容器、仓库
| 镜像(Image) | Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。 |
| 容器(Container) | 容器是独立运行的一个或一组应用,是镜像运行时的实体。 镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 |
| 仓库(Repository) | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 |
Docker的安装分为外网和内网安装。
2.1 外网安装Docker
root@ubuntu:/home/lqs# wget -qO- https://get.docker.com/ | sh
Docker镜像加速地址:
这里使用阿里云镜像加速阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,查看阿里云加速地址。
打开Docker Destop程序,在【Settings】-【Docker Engine】里面,配置加速地址:
- {
- ...
- "registry-mirrors":["https://bbx6hlst.mirror.aliyuncs.com"],
- ...
- }
对于使用 systemd 的系统,查看如下文件/etc/docker/daemon.json,如果没有daemon.json文件,则需要使用如下命令新建一个文件(注意mdkir命令是新建一个文件夹)
sudo touch daemon.json
如果文件存在,则使用sudo vim /etc/docker/daemon.json命令,写入如下内容:
- {
- "registry-mirrors":[
- "https://reg-mirror.qiniu.com/"
- ]
- }
之后输入以下命令,重新启动服务:
- $ sudo systemctl daemon-reload
- $ sudo systemctl restart docker
检查加速配置是否生效,输入命令docker info,如果看到以下内容,则表示配置成功:
Registry Mirrors:
https://bbx6hlst.mirror.aliyuncs.com/
Docker离线安装包下载地址:Index of linux/static/stable/x86_64/,这里以在Ubuntu里面安装为例,版本选择的是 docker-20.10.17.tgz
tar -zxvf docker-20.10.17.tgz
mv docker/* /usr/bin
- [Unit]
- Description=Docker Application Container Engine
- Documentation=https://docs.docker.com
- After=network-online.target docker.socket firewalld.service containerd.service
- Wants=network-online.target
- Requires=docker.socket containerd.service
-
- [Service]
- Type=notify
- ExecStart=/usr/bin/dockerd -H fd:
- ExecReload=/bin/kill -s HUP $MAINPID
- TimeoutSec=0
- RestartSec=2
- Restart=always
-
- StartLimitBurst=3
-
- StartLimitInterval=60s
-
- LimitNOFILE=infinity
- LimitNPROC=infinity
- LimitCORE=infinity
-
- TasksMax=infinity
-
- Delegate=yes
-
- KillMode=process
- OOMScoreAdjust=-500
-
- [Install]
- WantedBy=multi-user.target
- systemctl daemon.reload
- systemctl start docker.service
- systemctl info
-
- #开机自启
- systemctl enable docker
| docker -v | 查看Docker版本 |
| docker info | 查看Docker配置信息 |
| docker images | 查看本地主机上的镜像 |
| docker pull | 获取一个镜像 docker pull redis(获取redis镜像) |
| docker rmi | 删除镜像 docker rmi nginx:latest(表示删除版本为latest的Nginx镜像) |
| docker run | 创建并启动一个容器 docker run --name ixuea-redis -p 6379:6379 redis:latest |
| docker ps | 查看已经启动的容器 |
| docker ps -a | 查看所有容器(包括已启动和未启动) |
| docker start | 启动容器 docker start redis |
| docker stop | 停止容器 docker stop redis |
| docker rm | 删除未运行的容器 docker rm redis |
| docker rm -f | 删除正在运行的容器 docker rm -f redis |
官方镜像仓库地址:Docker Hub,带有DOCKER OFFICIAL IMAGE的是官方镜像。如下图所示:

使用docker images命令,来查看本地主机上的镜像
- root@lqs-virtual-machine:/home/lqs# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- redis latest 7614ae9453d1 7 months ago 113MB
- hello-world latest feb5d9fea6a5 10 months ago 13.3kB
字段含义如下:
| REPOSITORY | 表示镜像的仓库源 |
| TAG | 镜像的标签,代表这个镜像的版本 |
| IMAGE ID | 镜像ID |
| CREATED | 镜像创建时间 |
| SIZE | 镜像大小 |
使用docker pull命令来获取一个新的镜像,如下所示,获取安装Ngnix,#是加上去对应内容的注释,用于解释具体含义:
- root@ubuntu:/home/lqs# docker pull nginx
- Using default tag: latest
- # 表示从library/nginx下载
- latest: Pulling from library/nginx
- # docker镜像使用类似Git的方式管理,同时采用分层技术
- 1efc276f4ff9: Already exists
- baf2da91597d: Pull complete
- 05396a986fd3: Pull complete
- 6a17c8e7063d: Pull complete
- 27e0d286aeab: Pull complete
- b1349eea8fc5: Pull complete
- # docker文件的签名
- Digest: sha256:790711e34858c9b0741edffef6ed3d8199d8faa33f2870dea5db70f16384df79
- # 下载完成
- Status: Downloaded newer image for nginx:latest
- docker.io/library/nginx:latest
1.导出镜像
docker save -o nginx.tar nginx:latest
2.导入镜像
docker load -i nginx.tar
使用命令docker run,如下所示,创建并启动一个Nginx容器:
docker run --rm --name lqs-nginx -p 80:80 nginx:latest
字段含义如下:
| docker run | 表示创建一个容器 |
| --rm | 表示退出后,自动删除该容器。 |
| --name | 表示给这个容器取一个名字 |
| -p | 表示端口映射,格式为主机端口:容器端口,将容器端口映射到当前主机的端口,这样访问当前主机端口,就能访问到容器的端口 |
| nginx:latest | 表示使用nginx镜像,latest表示使用最新的版本 |
运行成功后,浏览器访问http://localhost:80/,就能看到Nginx默认页面了,如下所示:
使用命令touch Dockerfile来创建Dcokerfile文件,然后使用命令vim Dockerfile,编辑Dockerfile,输入以下内容:
- #指定基础镜像,不需要另外安装jdk
- FROM java:8
- #维护者
- MAINTAINER lqs
- #将本地文件添加到容器中,并更名为sms-send.jar
- COPY sms-send.jar sms-send.jar
- #指定访问端口,与yml文件汇总的端口一致
- EXPOSE 8080
- #容器启动时,运行该程序
- ENTRYPOINT ["java", "-jar", "sms-send.jar"]
- lqs@lqs-virtual-machine:~/Work/Test$ ls -l
- total 231044
- -rw-rw-r-- 1 lqs lqs 118 8月 19 15:53 Dockerfile
- drwxrwxr-x 2 lqs lqs 4096 8月 19 12:01 logs
- -rw-rw-r-- 1 lqs lqs 236579642 8月 19 11:29 sms-send.jar
docker build -t sms-send .
- docker run -p 8080:8080 --name sms-send \
- > -v /home/lqs/Work/Test/logs:/home/lqs/Work/Test/logs \
- > -d sms-send