Docker常用命令
Docker知识点
1、安装
$ sudo apt install docker.io
配置镜像加速器
官方的Docker Hub服务器在国外,有时候比较慢,这里推荐用阿里的镜像服务,按照指导填入/etc/docker/daemon.json
就可以了。
2、简单试玩
1、创建一个Ubuntu 18.04的镜像:
$ docker pull ubuntu:18.04
2、运行容器:
$ docker run -itd ubuntu:18.04
-i, --interactive Keep STDIN open even if not attached
-t, --tty Allocate a pseudo-TTY
-d, --detach Run container in background and print container ID(如果没有这个参数,就在前台运行,调试时)
--restart 重启策略,可选取值有:no, always, on-failure:3
--name 指定容器的名字,默认会随机分配一个名字
3、进入容器:
$ docker exec -it a3ef333a0a05 /bin/bash
现在,就进入到一个全新的虚拟Ubuntu系统了!(通过docker ps
命令可以获取正在运行容器的ID)
root@a3ef333a0a05:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@a3ef333a0a05:/# echo $SHELL
/bin/bash
可以看到默认用户是root,默认进入根目录,默认shell是/bin/bash。
3、镜像管理
列出镜像
# docker image ls [OPTIONS] [REPOSITORY[:TAG]]
通常用快捷命令docker images
。
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-python2.7 18.04 761e4569313a 2 hours ago 167 MB
ubuntu 16.04 4a689991aa24 2 days ago 116 MB
ubuntu 14.04 f216cfb59484 2 days ago 188 MB
ubuntu 18.04 ea4c82dcd15a 2 days ago 85.8 MB
构建
# docker image build [OPTIONS] PATH | URL | -
通常用快捷命令docker build
。
例如:
$ docker build -t myimage /home/gld/myproject
-t: Name and optionally a tag in the ‘name:tag’ format (default [])
PATH
表示Dockerfile所在的文件夹路径,可以用.
代表当前目录。
删除
# docker image rm [OPTIONS] IMAGE [IMAGE...]
通常用快捷命令:docker rmi
。
例如:
$ docker rmi ubuntu:18.04
$ docker rmi `docker images -q` # 删除所有镜像
清理
# docker image prune [OPTIONS]
-a: Remove all unused images, not just dangling ones
例如如下语句会删掉所有没有容器实例的镜像:
# docker image prune -a
保存和加载
第一种方式:
# docker save -o myimage.tar myimage
# docker load -i myimage.tar
第二种方式:
# docker export -o mysql5.7.19.tar container_id
# docker import mysql5.7.19.tar mysql5.7.19:1.0
运行
docker run -e PYTHONIOENCODING=utf-8 -itd ubuntu:18.04 /bin/bash
-e:设定环境变量
4、容器管理
显示容器
# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9805b221f99 ubuntu:18.04 "/bin/bash" 3 minutes ago Exited (0) About a minute ago trusting_noyce
5a69b70b4773 ubuntu "/bin/bash" 8 minutes ago Exited (0) 8 minutes ago dreamy_turing
c5928d98a9d3 ubuntu "/bin/bash" 9 minutes ago Exited (0) 9 minutes ago modest_nightingale
21ffef17a597 ubuntu "/bin/bash" 9 minutes ago Exited (0) 9 minutes ago xenodochial_morse
-a, 显示所有容器(默认显示正在运行的容器)
创建容器
进入容器
删除容器
删除所有容器:
# docker rm $(docker ps -aq)
-q:
5、镜像与容器的交互
修改当前容器,然后保存为镜像。首先通过docker exec
命令进入容器,容器内通过apt install python
安装Python,退出容器后通过docker commit
来保存为镜像:
$ docker commit dd977517902b ubuntu-python2.7:18.04
-a: Author (e.g., “John Hannibal Smith hannibal@a-team.com”)
-m: Commit message
之后就可以在镜像列表里看到刚刚保存的镜像:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-python2.7 18.04 761e4569313a 8 seconds ago 167 MB
ubuntu 18.04 ea4c82dcd15a 2 days ago 85.8 MB
6、Volume
查看容器信息(挂载信息):
$ docker inspect container_id
简单挂载命令:
$ docker run -itd -v /src/logs ubuntu:18.04
此命令仅指定容器目录,Docker会自动分配宿主机一个目录给它。用inspect命令可以看到宿主机目录为:“Source”: “/var/lib/docker/volumes/636a4b3275f7f5e845c49779067f1b1ca99b5fd274624d530130000eb08338c3/_data”
一般挂载命令:
$ docker run -itd -v /home/gld/logs:/src/logs ubuntu:18.04
该命令指定了宿主机目录和容器目录。默认情况下容器可以对挂载目录进行读写,如果需要只读模式(Read Only),则 /home/gld/logs:/src/logs:ro。
7、网络(Network)
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
37e1baffdd39 bridge bridge local
1c4a204bb0de host host local
c44d9f84c7c8 none null local
默认有三个网络。
创建一个名为 hadoop 的虚拟桥接网络,该虚拟网络内部提供了自动的DNS解析服务:
$ docker network create --driver=bridge hadoop
8、Dockerfile
CMD
一般这里的命令都是前台程序,如/bin/bash等,如果是后台程序,则容器启动后会立刻停止。
9、实用工具
9.1 Portainer
使用Docker最痛苦的就是经常需要删除容器了,Portainer是Docker的Web UI管理界面,可以方便地进行镜像和容器的增删查改。
$ sudo docker pull docker.io/portainer/portainer
$ sudo docker run -d -p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--name prtainer \
docker.io/portainer/portainer
之后就可以通过浏览器访问http://localhost:9000来访问了。
更多推荐
所有评论(0)