一.介绍
1. Docker是什么
1、Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初是dotCloud公司发起。
2、Docker通过对应用组件的封装、分发、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里应用组件,即可以是Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。
3、Docker通俗理解就只需要两句口号:
- “Build, Ship and Run (搭建、发送、运行)”
- “Build once,Run anywhere(搭建一次,到处能用)”
2、Docker作用
1、快速搭建重复环境
2、保证开发测试等环境完全相同
3. Docker组成
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
二.Docker安装
注意:Linux centOS(版本大于等于7.0)
1. 删除旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2. 安装必备工具
yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加Docker源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4. 更新yum缓存
yum makecache fast
5. 安装
yum install docker-ce
6. 创建docker用户
创建docker_mananger用户
useradd docker_manager
设置密码
passwd docker_manager
docker_manager_wkt
7. 配置docker权限
visudo
visudo 是配置用户权限的文件,在命令行中输入 visudo 回车之后,会进入文件操作,找到 “# %wheel ALL=(ALL) NOPASSWD: ALL” 这一行,把前面的 “#” 去掉,保存文件
8. 授权
usermod -aG wheel,docker docker_manager
9. 启动DockerCE
sudo systemctl enable docker
sudo systemctl start docker
查看是否启动成功
docker info
10. 镜像加速
vim /etc/docker/daemon.json
添加以下内容
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
通知 systemd 重载此配置文件
systemctl daemon-reload
重启docker服务
systemctl restart docker
三.Docker常用命令
镜像操作
1. 列出本地现有 image
docker image ls
2. 删除 image
docker image rm image_name
3. 下载 image
docker image pull image_name
容器操作
1. 从 image 生成 container 实例
# 新版本
docker container run image_name
#老版本
docker run image_name
2.关闭一个容器
#通过docker强制关闭contaniner
docker container kill container_ID
#向 container 发送关闭信号,让 container 自己决定如何恰当的关闭
docker container stop container_ID
3. 列出已有的容器
#列出正在运行的容器
docker container ls
#列出全部容器
docker container ls --all
#老版本 列出正在运行的容器
docker ps
#老版本 列出全部容器
docker ps -a
4. 运行已经存在的容器
docker container start container_ID
5. 删除容器
docker container rm container_name (或 container_ID)
#另:在运行 image 产生 container 的时候就加上 --rm 参数,告诉 docker 只要这个 container 一退出,就删除它
docker run -it --rm ...
6. 从容器中拷贝文件到本机
docker container cp container_ID:path_to_file host_path
7. 进入一个正在运行的容器
docker container exec -it container_ID /bin/bash (或者只写 bash)
8. 后台运行容器
docker container run -d image_name
9.其他
1. 查看现有的网络
docker network ls
NETWORK ID NAME DRIVER SCOPE
c749b1b83091 bridge bridge local
a23ca96b3291 host host local
74d0c66e9190 none null local
如果在运行 container 时不设定 network,则默认是第一个 bridge network .
此时,如果 container expose 某个 port,例如 8080,则 bridge network 中的其他程序可以通过这个 port 与它通信。
如果 host network 中程序想与它通讯,必须设置一个端口映射 -p 5000:8080,这样所有与 host network 5000 端口通讯的都可以被映射到 container 的 8080 端口。
也可以让 container 直接运行在 host network 中,这就是为什么在很多运行 image 的命令中,都有 --net=host 设置。
这样的话,就可以直接通过 host 的端口进行通讯了,不需要桥接映射。
2. 文件共享
docker run -v ~/shared_files:/home/docker_user/log_files image_name
#-v /host_path:/container_path 来设置两个系统之间的共享文件夹。