Linux 服务管理 service 与 systemctl
docker服务未启动
docker服务并不一定是自动启动的,如果执行docker ps 会报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
则需要手动启动docker服务
Ubuntu启动docker服务
service docker start
基本概念
image 是只读的,对应于面向对象中的类;
container 对应于面向对象中的对象;这个对象会一直存在于磁盘,并且可以启动,停止,重启;
docker常用操作
#列出dockers镜像文件ID
docker images
#查看正在运行的容器
docker ps
#列出所有容器,注意有两个横线
docker container ls --all
#停止容器运行(优雅退出:先signal terminal,再signal kill)
docker container stop container_name
#结束运行一个容器(强制退出:直接signal kill)
docker container kill containID
#使用镜像image_name启动一个容器,在容器内执行/bin/bash命令。
docker run -it image_name /bin/bash
#退出容器bash
Ctrl+D
#启动容器挂在本机/root到容器的/root,并启动命令行
docker run -itv /root:/root your_dir/your-image /bin/bash
#重新启动一个容器,并挂载当前系统的/root目录到容器系统中的/root目录
docker container run -itv /root:/root image_name /bin/bash
#创建一个新容器并运行创建一个新的容器并运行一个命令docker run
docker run --name your-node -p 1011:1011 -it -v /root:/data image_name /bin/bash
# 1 image为node;
# 2 name为yww-node的容器;
# 3 在创建完成之后直接进入容器的shell命令行
# 4 将宿主机的100端口映射为容器的1011端口
docker container run image_id --name yww-node -p 1011:1011 -it node /bin/bash
docker container run --name yww-node -p 1011:1011 -it node /bin/bash
docker container run -p 1011:1011 -it node /bin/bash
docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
docker run 07e774543bdf -p 1011:1011 -v /root:/data image_name /bin/bash
#进入已经启动的容器
docker attach containID
#启动一个已经停止的容器
docker container start container_name
#删除容器的实体文件(删除容器:需要先stop)
docker container rm container_name
#查找含有字符串的容器;-a 全部显示
docker ps -a | grep 'yuanweiwei'
当你退出一个容器之后,命令行自动切换成主机bash命令行。
docker命令格式
docker run :创建一个新的容器并运行一个命令
语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
1.OPTIONS说明
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
-i:以交互模式运行容器,通常与 -t 同时使用
-d:后台运行容器,并返回容器ID
--name:为容器指定一个名称
-p:端口映射,格式为:主机(宿主)端口:容器端口
-v: 挂载宿主机文件夹,格式为: 宿主机文件夹:容器文件夹
--link: 添加链接到另一个容器
-m:设置容器使用内存最大值;
2.使用docker镜像image_name以后台模式启动一个容器,并将容器命名为mytomcat
docker run -tid --name mytomcat image_name
3.使用镜像image_name以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口。
docker run -tid --name mytomcat -p 8080:8080 image_name
4.使用镜像image_name以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口,主机的目录 /home 映射到容器的 /home
docker run -tid --name mytomcat -p 8080:8080 -v /home:/home image_name
Docker数据存储:
docker容器不保持任何数据
重要数据请使用外部卷存储(数据持久化)
宿主机与容器里文件共享
通过docker run命令
1、运行命令:docker run --name test -it -v /home/xqh/myimage:/data ubuntu /bin/bash
其中的 -v 标记 在容器中设置了一个挂载点 /data(就是容器中的一个目录),并将主机上的 /home/xqh/myimage 目录中的内容关联到 /data下。
这样在容器中对/data目录下的操作,还是在主机上对/home/xqh/myimage的操作,都是完全实时同步的,因为这两个目录实际都是指向主机目录。
专业做法
共享网络共享文件夹
1 用镜像名称创建一个容器并启动:并命名这个容器
docker run --name my-cloud --restart unless-stopped -it -v /data:/data -v /log:/log --network=host image_name
2 进入容器的命令行:前提是容器已经start
docker container exec -it my-cloud /bin/bash
这时候你已经在容器中了。
3 退出容器的bash命令行:在容器的命令行输入exit,回车即可
exit