你能在浪费时间中获得乐趣,就不是浪费时间。 ---- 罗素
Docker安装
-
Linux(CentOS、Ubuntu): curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
-
MacOS: 前往网站:https://docs.docker.com/desktop/mac/install 进行安装 -
Windows: 前往网站:https://hub.docker.com/editions/community/docker-ce-desktop-windows 进行安装
安装完成后执行docker -v ,当显示版本后表示安装成功。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C2STNTHn-1638017190644)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127194943475.png)]](https://img-blog.csdnimg.cn/3a1eaa047d074fc5931379348f6902d9.png)
更换镜像源
避免国外镜像拉取时出现卡顿的情况,可以将镜像换成国内仓库。可以在/etc/docker/docker.json或安装好的Docker软件中找到设置中的daemon.json 配置。
{
"registry-mirrors":["https://reg-mirror.qiniu.com/"]
}
镜像网址:
- 科大镜像:https://docker.mirrors.ustc.edu.cn
- 网易云镜像:https://hub-mirror.c.163.com
- 七牛云加速器:https://reg-mirror.qiniu.com
配置完成后执行docker info 命令,看到Registry Mirrors表示配置成功。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJcprsQi-1638016951869)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127180740983.png)]](https://img-blog.csdnimg.cn/cbcd08d84c7d4d30b727d561e89b62c4.png)
Docker 基本操作
拉取镜像
当本地没有的镜像的话通过docker pull 命令去仓库拉取镜像。
docker pull ubuntu
![]](https://img-blog.csdnimg.cn/354f2a8ee446407a83450d8e098494fd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
创建容器
通过docker create 创建容器。
docker create --name myUbuntu ubuntu
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A7C0XIdw-1638016951872)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127185227856.png)]](https://img-blog.csdnimg.cn/a8f9c2f6c0164c5e80b35d25be8c9c3a.png)
--name myUbuntu 表示给创建的容器起别名,此时的容器还没有启动。
启动容器
docker run -it ubuntu /bin/bash
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfiKjWWo-1638016951872)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127185844612.png)]](https://img-blog.csdnimg.cn/8a709e7309db4ad895560360fdbba5c7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
此时已经进入到创建的ubuntu中,可以执行Liunx的ll 命令查看目录,使用exit 退出。
这里的-it参数中,i 表示开发容器的标准输入(STDIN),t 则表示告诉 docker,为容器创建一个命令行终端。
对于已经通过create 创建的容器,也可以通过docker start name 来启动。
docker start myredis
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AGox2tfI-1638016951873)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127190459709.png)]](https://img-blog.csdnimg.cn/8f6922bccbfd4545a884ed3b8faa6c05.png)
此时--name xxx 的作用就出来,因为docker start 后面可以通过和生成的ID来进行启动,由于ID是docker自动生成,所以可以通过定义别名来进行更加便捷的启动。
创建 + 启动
拉取镜像、创建容器、启动容器这些步骤可以通过docker run 命令来进行一起执行。
docker run --name nginx001 -d -p 8080:80 nginx

通过run可以把拉取创建启动同时执行,一步到位。如果没有镜像,会去拉取,存在的话就不会拉取了。
-d 表示容器在后台运行,-p 表示将容器的 80 端口映射到宿主机的 8080 端口。
停止容器
通过docker stop 可以停止容器。
docker stop myredis
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQt6P1gC-1638016951874)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127192127878.png)]](https://img-blog.csdnimg.cn/888a3f8d9cb94c3196e973aadba66191.png)
查看当前运行的容器
docker ps
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HcpJUqgI-1638016951875)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127191149959.png)]](https://img-blog.csdnimg.cn/19c76269078846969ecc71dae774f026.png)
- CONTAINER ID:随机生成的唯一64位的十六进制整数
- IMAGE: 创建该容器使用的镜像
- COMMAND: 容器最后运行的命令
- CREATED: 容器创建的时间
- STATUS:容器的状态
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
- PORTS:容器的端口信息和使用的连接类型
- NAMES:容器的别名
查看所有容器
docker ps -a
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0F4Hj8G3-1638016951875)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127191400987.png)]](https://img-blog.csdnimg.cn/2a4139624a234155a8969107bffeeedc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
查看最新创建的容器
docker ps -l
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lpwSDyBz-1638016951876)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127191425675.png)]](https://img-blog.csdnimg.cn/30155622c76e432584181fa1424a8e86.png)
查看最新创建的N个容器
docker ps -n=number
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ihn0QG7e-1638016951876)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127191457515.png)]](https://img-blog.csdnimg.cn/2246cc7212af4145801ca71e18453d38.png)
删除容器
docker rm myUbuntu
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eVYNJIQ4-1638016951876)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127191617911.png)]](https://img-blog.csdnimg.cn/e890185e32fd4d108819b0adf5086a31.png)
也可以把name换成id来进行删除,如果是删除正在运行的容器,需要加上-f 指令。
容器重启
restart参数提供了特殊情况下容器的重启策略。
- on:不自动重启容器,默认即此
- on:failure:[max-retries]:在退出状态为非0时才会重启(非正常退出),有一个可选择参数:最大重启次数,可以设置最大重启次数,重启次数达到上限后就会放弃重启
- always:始终重启容器,当docker守护进程启动时,也会无论容器当时的状态为何,都会尝试重启容器
- unless-stopped:始终重启容器,但是当docker守护进程启动时,如果容器已经停止运行,则不会去重启它
创建新容器可以加上restart参数来设置策略,如果已经创建好的容器,执行docker container update --restart=always myredis 来设置重启策略。 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mtx5niLc-1638016951877)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127194202653.png)]](https://img-blog.csdnimg.cn/166632edd08945c68fc6aa335cbb5610.png)
查看容器信息
通过docker inspect 命令可以查看已创建容器的信息。
docker inspect myredis
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CQgCYLRH-1638025357205)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127213346131.png)]](https://img-blog.csdnimg.cn/6261ee090fb54ec8911e869421496f55.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
如果觉得信息过多,可以通过输入format参数来过滤信息,获取自己只想看到的信息。
//查看容器ID
docker inspect -f={{.ID}} myredis
//对于JSON中的数组,则会返回map格式
docker inspect -f={{.NetworkSettings.Networks}} myredis
//查看容器IP地址
docker inspect -f={{.NetworkSettings.Networks.bridge.IPAddress}} myredis
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UyvsxSt2-1638025357205)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127214737849.png)]](https://img-blog.csdnimg.cn/52f8b1e63ecc4e889fead531428d47fa.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
查看进程
Docker中的查看容器的进程和Linux的一样,通过docker top 命令进行查看,但是要保证查看的进程处于运行状态。
docker top myredis
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5ff10Bw-1638025357206)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127215439719.png)]](https://img-blog.csdnimg.cn/c9973d6b1e9148e7ba6432b5b58c3b2e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
查看日志
对于后台型的容器,通过docker logs 可以查看日志内容。
docker logs myredis
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kGAEVk4K-1638025357206)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127220717484.png)]](https://img-blog.csdnimg.cn/8326d4e054d346d3851ae0f89bf10833.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
如果想查看实时的日志而不是历史日志,可以使用-f 参数,--tail = number 表示日志的输出行数,-t 表示日志输出时间。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fcGLuPXv-1638025357206)(/Users/chenruijie/Library/Application Support/typora-user-images/image-20211127221224451.png)]](https://img-blog.csdnimg.cn/27e530f60e594f8bb536e882c8d7a7da.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmF2YSBHb3NsaW5n,size_20,color_FFFFFF,t_70,g_se,x_16)
容器内执行命令
通过docker exec 可以进到容器里执行命令。
docker exec -it myubuntu bash
 docker attach 和docker exec 拥有相同的效果,不同的是使用 docker exec 即使用户从终端退出,容器也不会停止运行,而使用 docker attach 时,如果用户从终端退出,则容器会停止运行,所以推荐使用docker exec 。
|