在正文的第一句加入: 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
目前随着CICD的普及,Docker 的应用也越来越多,为了开发环境和部署环境的统一,公司也开始要求前端在Docker基础上进行项目开发,于是乎最近也开始研究Docker, 这里把学习的docker知识分享下,希望我分享的内容能够帮大家对Docker有个更好的理解,让我们一起学习交流,一起加油!
镜像的使用
拉取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名[:标签]
### [Docker Registry 地址[:端口号]/] 默认地址是 Docker Hub(docker.io)。
### [仓库名[:标签] 默认是 用户名/ 软件名 默认的是library/ubantu
## 如果省略tag 默认就是latest
macC02ZV010LVDM:~ xxx$ docker pull jwilder/nginx-proxy
Using default tag: latest
latest: Pulling from jwilder/nginx-proxy
latest: Pulling from jwilder/nginx-proxy
latest: Pulling from jwilder/nginx-proxy
e1acddbe380c: Already exists
e21006f71c6f: Already exists
f3341cc17e58: Already exists
2a53fa598ee2: Already exists
12455f71a9b5: Already exists
b86f2ba62d17: Already exists
a1279b75471a: Pull complete
83aab59390ea: Pull complete
94ef1be361a9: Pull complete
882b879fc0fa: Pull complete
c2f7bc730867: Pull complete
e38a661d96c0: Pull complete
Digest: sha256:cccf3a6a7ae590997e67d6a91ce807f6dbc8b04425a7587bb7ea55574da7e882
Status: Downloaded newer image for jwilder/nginx-proxy:latest
docker.io/jwilder/nginx-proxy:latest
##成功pull后 查看镜像
docker images
运行容器
容器创建:docker create
## docker create 来创建容器
macCZV011LVDM:~ xxxx$ docker create nginx:1.12
36ebc207efc63d62b7add36c6aa7546cfc77a7091c789fea6c8da77b53c4e508
## -- name 来指定名称
macC0211LVDM:~ xx$ docker create --name nginx nginx:1.12
efb29b958fd6a15590af8440d24e3685b4933b47a568c424604b50bf9473934a
macCZV011LVDM:~ xx$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
efb29b958fd6 nginx:1.12 "nginx -g 'daemon of…" 5 seconds ago Created nginx
d2348fc58ed8 mongo "docker-entrypoint.s…" 2 months ago Exited (0) 2 months ago mongo
d178457f382a alpine/git "git clone https://g…" 3 months ago Exited (128) 3 months ago repo
容器运行: docker start 和 docker run
macC02ZV0VDM:~ xxx$ docker start nginx
nginx
macC02ZLVDM:~ xxx$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
efb29b958fd6 nginx:1.12 "nginx -g 'daemon of…" 3 minutes ago Up 8 seconds 80/tcp nginx
d2348fc58ed8 mongo "docker-entrypoint.s…" 2 months ago Exited (0) 2 months ago mongo
d178457f382a alpine/git "git clone https://g…" 3 months ago Exited (128) 3 months ago repo
macC02ZV010LVDM:~ wangvin$
## 可以采取 create + start 的结合命令 run , 需要添加-d 不然就是前台运行
macC02ZLVDM:~ xxx$ docker run --name nginx -d nginx:1.12
镜像的查看:
##docker images ,docker image ls 列出所有的顶层镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine/git latest b8f176fa3f0d 3 months ago 25.1MB
vinc/mongo latest 07630e791de3 3 months ago 449MB
## imageID 只显示了12位
## vinc/mongo username:vinc repository:mongo tag:latest , 没有username的表示docker官方维护的
##docker image ls -a 会列出所有的镜像包括中间层镜像
##docker image ls ubantu 根据仓库名列出镜像
##docker image ls ubuntu:18.04列出特定的某个镜像,也就是说指定仓库名和标签
##docker image ls -f since=mysql:5.7 列出mysql:5.7 之后建立的镜像
搜索images:
docker search xxx:会在dockerHub中搜索镜像
macC02ZV010LVDM:~ xxx$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 15364 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2060 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 816 [OK]
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 236
linuxserver/nginx An Nginx container, brought to you by LinuxS… 152
tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 139 [OK]
jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 132 [OK]
alfg/nginx-rtmp NGINX, nginx-rtmp-module and FFmpeg from sou… 105 [OK]
nginxdemos/hello NGINX webserver that serves a simple page co… 71 [OK]
privatebin/nginx-fpm-alpine PrivateBin running on an Nginx, php-fpm & Al… 56 [OK]
nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo… 55
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 46
staticfloat/nginx-certbot Opinionated setup for automatic TLS certs lo… 24 [OK]
查看详细镜像详情:
docker inspect xxx
虚悬镜像:
每个镜像都有自己的名称和tag,但是随着官网的维护,发布了新版本后,重新pull镜像,则旧的镜像的名称和tag就会被移除变成了 。如下
<none> <none> 00285df0df87 5 days ago 342 MB
可以使用 docker image prune删除这些没有意义的镜像
删除镜像
## docker image rm [选项] <镜像1> [<镜像2> ...]
## 如果image id 是0584b3d2cf6d
docker image rm 0584b3d2cf6d
## 由于image id 很长,所有可以摘取部分id作为特殊的标识符(只要是这个image id的唯一标识符就行),例如可以
docker image rm 05
## 我们也可以用镜像名,也就是 <仓库名>:<标签>,来删除镜像
docker image rm mysql:5.7
容器的启动和停止
容器创建
## docker create 来创建容器
macCZV011LVDM:~ xxxx$ docker create nginx:1.12
## -- name 来指定名称
macC0211LVDM:~ xx$ docker create --name nginx nginx:1.12
容器运行
## docker start 容器启动
docker start nginx
## 也可以采取 create + start 的结合命令 run , 需要添加-d 不然就是前台运行
docker run --name nginx -d nginx:1.12
## 运行一个mysql的容器 然后输出hello world 然后停止容器
docker run mysql:5.7 /bin/echo 'Hello world'
进入容器
## 通过bash -it 来进入容器, -i 保持输入流,-t 创建一个伪终端,才能看到运行的结果, ctrol+d退出
docker exec -it nginx /bin/bash
## 进入了容器内部 输入ls命令
root@efb29b958fd6:/# ls
容器后台运行
## -d 就可以让Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下, 输出在容器内部
docker run nginx /bin/sh -c "while cc"
## 通过docker logs [container ID or NAMES] 来查看里面的输出
docker logs nginx1
容器终止
##可以使用 docker container stop 来终止一个运行中的容器
docker container stop nginx1
容器的删除
## 可以使用 docker container rm 来删除一个处于终止状态的容器
docker container rm nginx1
## 如果要删除一个正在运行的容器 可以使用 -f
docker container -f rm nginx1
容器的网络
容器的网络是一个独立的沙盒环境,有自己的内部网络,容器的网络有下列五种类型
- Bridge: Docker 的默认网络类型,通过网桥的方式来实现通讯
- Host:通过以Docker容器为host的网络通讯方式
- OverLay:借助Docker Swarm来搭建虚拟网络
- MacLan:分配MAC地址到每个容器的虚拟网络节点
- None:禁用容器的所有的网络服务
容器网络的创建
## docker network create 来创建一个网络
docker network create -d bridge new-network
容器链接
## --network 在容器后面加这个参数来链接网络
## 创建nginx1 链接容器new-network
docker run -it -rm nginx1 --network new-network
## 创建nginx2 链接容器new-network
docker run -it -rm nginx2 --network new-network
## 这样两个容器就链接到一个网络上了,可以在nginx1中通过ping nginx2 来验证他们属于一个网络
容器映射端口
在Bridge网络中容器也可以通过暴露自己的端口的方式来让外部容器
## 通过 -p [宿主端]:[容器端口] ,这样就通过宿主机的端口访问容器的里面的端口
docker run -d --name nginx3 -p 80:80 nginx:1.8
相关资料
大家喜欢的可以看看我的专栏 (Docker你需要知道的知识点) 我会尽量保持每周更新,如果喜欢的麻烦帮我点个赞,十分感谢
大家如果喜欢“Typescript”的话,可以看看我分享的另外一个专栏(TypeScript常用知识)里面有常见的Typescript知识点分享,希望帮大家更好的理解TS的意义
大家如果喜欢“算法”的话,可以看看我分享的另外一个专栏(前端搞算法)里面有更多关于算法的题目的分享,希望能帮助大家更深的理解算法
文章内容目的在于学习讨论与分享学习TS过程中的心得体会,文中部分素材来源网络,如有侵权,请联系删除,邮箱 182450609@qq.com