什么是docker
docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器,docker将程序以及程序所有的依赖都打包到docker container,这样你的程序可以在任何环境都会有一致的表现。
安装docker
sudo apt install
sudo systemctl enable docker
sudo systemctl start docker
创建新的用户组docker
newgrp docker
如果没有docker group, 可能会报错:
Got permission denied while trying to connect to the Docker daemon ...
将当前用户加入docker组
sudo gpasswd -a ${USER} docker
重启服务
sudo systemctl restart docker
docker获取busybox image
$ docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
7e5209d2300f: Pull complete
Digest: sha256:34c3559bbdedefd67195e766e38cfbb0fcabff4241dbee3f390fd6e3310f5ebc
Status: Downloaded newer image for busybox:latest
/library/busybox:latest
docker交互模式运行基于busybox容器
docker run -it imageID [cmd]
这个是用镜像产生一个容器,并且和cmd程序做交互,-i表示交互式的,表示[cmd]是一个有用户输入的程序,比如/bin/bash 和 python 等等。
-t 产生一个终端。所以说有-i就必须有-t,不然怎么输入呢。
$ docker run -it busybox
/ #
指定容器名mybusybox
启动busybox
image,并且进入交互模式:
docker run -it --name mybusybox busybox
查看当前容器:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d3f34b79900f busybox "sh" 16 seconds ago Exited (0) 8 seconds ago mybusybox
6e4ab0eb8803 busybox "sh" 9 minutes ago Exited (137) About a minute ago silly_herschel
silly_herschel是没指定容器名的时候默认的名字。
docker查看本地的images
$ docker images ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 66ba00ad3de8 4 days ago 4.87MB latest 829374d342ae 5 days ago 1.24MB
docker创建ubuntu容器
$ docker run -it ubuntu:latest /bin/bash
这个先pull了ubuntu的docker image,然后进入交互式模式,退出后可以看到:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 66ba00ad3de8 4 days ago 4.87MB
ubuntu latest 6b7dfa7e8fdb 4 weeks ago 77.8MB
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bee046909c7b ubuntu:latest "/bin/bash" About a minute ago Exited (0) 57 seconds ago hungry_antonelli
d3f34b79900f busybox "sh" 6 minutes ago Exited (0) 5 minutes ago mybusybox
6e4ab0eb8803 busybox "sh" 15 minutes ago Exited (137) 6 minutes ago silly_herschel
拉取最新版的Ubuntu镜像
$ docker pull ubuntu
或者:
$ docker pull ubuntu:latest
docker查看启动的容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bee046909c7b ubuntu:latest "/bin/bash" About a minute ago Exited (0) 57 seconds ago hungry_antonelli
d3f34b79900f busybox "sh" 6 minutes ago Exited (0) 5 minutes ago mybusybox
6e4ab0eb8803 busybox "sh" 15 minutes ago Exited (137) 6 minutes ago silly_herschel
docker启动容器
$ docker start bee046909c7b
240f22e326f5
或者
$ docker start hungry_antonelli
容器在exit之后,要先start之后才能进入容器。
docker进入到容器内部
$ docker exec -it bee046909c7b /bin/bash
root@bee046909c7b:/#
或者
$ docker exec -it hungry_antonelli /bin/bash
root@bee046909c7b:/#
docker查看所有容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bee046909c7b ubuntu:latest "/bin/bash" About a minute ago Exited (0) 57 seconds ago hungry_antonelli
d3f34b79900f busybox "sh" 6 minutes ago Exited (0) 5 minutes ago mybusybox
6e4ab0eb8803 busybox "sh" 15 minutes ago Exited (137) 6 minutes ago silly_herschel
docker删除不用的container
$ docker container rm 62de3ec6be08 4d284a0bddee
修改docker container路径
sudo vi /etc/docker/
增加data-root:
$ cat /etc/docker/
{
"live-restore": true,
"insecure-registries":[
"",
"",
""
],
"data-root":"/home/hui/disk4t/docker/"
然后重启docker服务
sudo systemctl restart docker
查看修改是否成功
$ docker info
``
## docker mount本地目录
加载`/disk4t/codes/video`到 `container`中的 `/work/video`目录下:
```bash
$ docker run -it -v /disk4t/codes/video:/work/video video_build_image:latest bash
或者
$ cd /disk4t/codes/video
$ docker run -it -v `pwd`:/work/video video_build_image:latest bash
复制文件到docker容器
docker cp container_id:/