博主刚来公司,领导就直接给我一个docker-compose.yml
文件,真的是把我这个刚入职的小白看的一愣一愣道的。因为一些开发后的环境测试都是在Docker
容器中,所以我入职以来用Docker
命令真的用到吐哈哈哈。不过不得不说真的好用
且×
。
所以今天给大家带来相对应的一篇博客文章,希望能给大家带来一定的帮助嘿嘿嘿。
Docker 可以运行在MAC,Win,CentOS、UBUNTU等操作系统上。
本次笔记是通过xshell链接服务器安装 Docker 。
首先下载和配置 yum
:
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
下载 Docker :
yum install -y docker-ce
#查看是否安装成功
docker -v
正常情况下在docker下载镜像太慢,一般都会配置镜像加速器。
一般有以下几种加速器:
本次配置就直接按照阿里云的配置来:
我们在控制台搜索 容器镜像服务 :
我们可以看这个有相对应的教程进行配置。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://自己的配置.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
在使用 Docker 的时候,一般都是回通过一些基础的操作命令来进行一个使用,接下来我们就来学习 Doceker 命令的基础使用!
imges:
我们可以使用 docker images 来列出本地主机上的镜像。
[root@VM-12-16-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 5.0 c5da061a611a 5 months ago 110MB
各个选项说明:
补充:
docker images -p #查看所用的镜像id
pull:
如果我们本机想下载一个不存在的新镜像我们可以通过命令 docker pull xxx
Crunoob@runoob:~$ docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
6599cadaf950: Pull complete
23eda618d451: Pull complete
f0be3084efe9: Pull complete
52de432f084b: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for ubuntu:13.10
下载完成后,我们可以直接使用这个镜像来运行容器。
search:
如果要查找一个镜像我们能通过 docker search
命令来寻找对我们合适的镜像源。
[root@VM-12-16-centos ~]# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 11002 [OK]
bitnami/redis Bitnami Redis Docker Image 221 [OK]
bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 37 [OK]
bitnami/redis-cluster 32
rapidfort/redis RapidFort optimized, hardened image for Redi… 15
rapidfort/redis-cluster RapidFort optimized, hardened image for Redi… 15
circleci/redis CircleCI images for Redis 14 [OK]
ubuntu/redis Redis, an open source key-value store. Long-… 10
bitnami/redis-exporter 7
.......
rm:
删除镜像,但是不能删除在运行得的镜像。
rmi:
如果我们需要删除我们需要删除一个镜像,我们可以通过命令 docker rmi xxx
即可删除成功。
$ docker rmi hello-world
run:
一般我们能通过 docker run 参数
命令来进行容器的创建和启动。
$ docker run -it --name=c1 ubuntu /bin/bash
参数说明:
docker exec
进入容器。退出后,容器则不会关闭。ps -a:
一般我们能使用以下命令:docker ps -a
用来查看所有的容器。
$ docker ps -a
补充: 查看正在运行的镜像
[root@VM-12-16-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7c50732a601 redis:5.0 "docker-entrypoint.s…" 6 days ago Up 6 days 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp c_redis
rm:
一般我们能通过docker rm xx
来进行一个容器删除。
$ docker rm -f 1e560fca3906
注意: 不能删除正在运行的容器。
stop:
通过以下命令来进行一个容器停止命令。
$ docker stop <容器 ID>
start:
通过以下命名可以来进行一个容器启动。
$ docker start <容器 ID>
exec:
$ docker exec 参数 #退出容器,容器不会关闭。
inspect:
能通过下面的命令来进行一个容器信息的查看。
$ docker inspect 容器名称
logs:
$ docker logs 容器名称
例如:
[root@VM-12-16-centos ~]# docker logs mysql
2022-06-26 03:49:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2022-06-26 03:49:59+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-06-26 03:49:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2022-06-26T03:49:59.301456Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-06-26T03:49:59.302460Z 0 [Note] mysqld (mysqld 5.7.36) starting as process 1 ...
2022-06-26T03:49:59.304538Z 0 [Note] InnoDB: PUNCH HOLE support available
2022-06-26T03:49:59.304556Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2022-06-26T03:49:59.304560Z 0 [Note] InnoDB: Uses event mutexes
2022-06-26T03:49:59.304563Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2022-06-26T03:49:59.304566Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2022-06-26T03:49:59.304570Z 0 [Note] InnoDB: Using Linux native AIO
2022-06-26T03:49:59.304746Z 0 [Note] InnoDB: Number of pools: 1
2022-06-26T03:49:59.304949Z 0 [Note] InnoDB: Using CPU crc32 instructions
2022-06-26T03:49:59.305972Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
......
为了实现数据持久化,使容器之间可以共享数据。可以将容器内的目录,挂载到宿主机上或其他容器内,实现同步和共享的操作。即使将容器删除,挂载到本地的数据卷也不会丢失。
概念:
数据卷的作用:
命令:
docker run ... -v 宿主机目录:容器目录
注意事项:
①目录必须是绝对路径。
②如果目录不存在,则会自动创建。
③可以挂载多个数据卷。
我们能使用winSCP
来拉去服务器上面的文件。
docker run -it -v 主机目录:容器内目录
#测试
$ docker run -it -v /home/ceshi:/home centos /bin/bash
我们可以通过数据卷在容器中使用MySQL的脚本,这样能节约很多时间和精力。
后面我们能使用docker-compose
更简便的启动数据卷哦。
Dockerfile就是用来构建docker镜像的构建文件!也就是命令脚本。
FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN #镜像构建的时候需要运行的命令
ADD #步骤,tomcat镜像,这个tomcat的压缩包!添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #暴露端口配置
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承 Dockerfile 这个时候就会运行ONBUILD 的指令
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境遍量
我就拿我最近部署项目使用的一个DockerFile
来给大家看一下哦。
FROM java:8
MAINTAINER xiaobao <[email protected]>
ADD ./blog_api.jar /app.jar
CMD java -jar /app.jar --spring.profiles.active=prod
运行镜像docker build -f ./blog_dockerfile -t app .
运行后我们就会有相对应的镜像,我们可以通过docker ps
来查看。
好了本次Docker
介绍就到这里啦,我们下期compose
见。