1.Docker容器化技术
Docker容器化技术,一般运行在linux系统中,目前windos/mac/linux都可以运行了,下述说明均在linux/centos系统下,相关信息
[root@1 conf]# uname -a
Linux 1 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@1 conf]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2.Linux下软件Docker服务
docker在linux上作为一个软件服务,查看docker服务运行状态
[root@2 system]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-09-30 01:38:50 CST; 1 weeks 6 days ago
Docs: https://docs.docker.com
Main PID: 30483 (dockerd)
Tasks: 99
Memory: 1007.6M
CGroup: /system.slice/docker.service
├─14873 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9627 -container-ip 172.18.0.5 -container-port 9627
├─14879 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 9627 -container-ip 172.18.0.5 -container-port 9627
└─30483 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
3.Docker info 基本信息
[root@2 system]# docker info
Client:
Context: default
Server:
Containers: 6 #容器6个
Running: 4 #运行4个
Paused: 0 #暂停0个
Stopped: 2 #停止2个
Images: 12 #镜像12个
Server Version: 20.10.8
# 日志驱动类型
Logging Driver: json-file
Cgroup Driver: cgroupfs
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
# docker服务运行时存放镜像/容器/挂载的根目录
Docker Root Dir: /home/data/lib/docker/docker
Registry Mirrors: https://xxxxxx.mirror.aliyuncs.com/
4.Daemon.json
docker的配置文件
[root@2 system]# cat /etc/docker/daemon.json
{
"registry-mirrors":["https://xxxxx.mirror.aliyuncs.com"],
"data-root":"/home/xxx/docker",
"log-opts": {
"max-file":"5",
"max-size":"500m"
}
}
key | value |
---|---|
registry-mirrors | 镜像加速代理 |
data-root | docker服务运行时存放镜像/容器/挂载的根目录 |
log-opts:max-file | 日志项,最大日志文件个数,5 |
log-opts:max-size | 日志项,单个日志文件最大容量,500M |
某容器下的内容,日志文件个数和大小均生效
[root@1 a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a]# ll -h
total 1.5G
-rw-r----- 1 root root 6.6M Oct 13 16:13 a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a-json.log
-rw-r----- 1 root root 477M Oct 13 00:49 a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a-json.log.1
-rw-r----- 1 root root 477M Oct 5 22:25 a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a-json.log.2
-rw-r----- 1 root root 477M Oct 3 05:49 a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a-json.log.3
drwx------ 2 root root 4.0K Sep 30 13:20 checkpoints
-rw------- 1 root root 4.5K Oct 9 11:25 config.v2.json
-rw-r--r-- 1 root root 1.7K Oct 9 11:25 hostconfig.json
-rw-r--r-- 1 root root 13 Oct 9 11:25 hostname
-rw-r--r-- 1 root root 175 Oct 9 11:25 hosts
drwx-----x 2 root root 4.0K Sep 30 13:20 mounts
-rw-r--r-- 1 root root 82 Oct 9 11:25 resolv.conf
-rw-r--r-- 1 root root 71 Oct 9 11:25 resolv.conf.hash
5.docker run --help
docker run -d --name ${SERVICE_NAME} -p ${MYSQL_MOUNT_PORT}:${MYSQL_PORT} -v ${CURRENT_DIR}/../../../conf/my.cnf:/etc/mysql/my.cnf -v ${CURRENT_DIR}/data:/var/lib/mysql -v ${CURRENT_DIR}/sql:/docker-entrypoint-initdb.d -v /etc/localtime:/etc/localtime:ro
--network ${SLS_NETWORK} --network-alias ${SERVICE_NAME} --restart=always -e MYSQL_DEFAULT_USER=${USERNAME} -e MYSQL_ROOT_PASSWORD=${PASSWORD} ${MYSQL_IMAGE_NAME}:${VERSION}
[root@1 /]# docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
Options:
-d, --detach Run container in background and print container ID(后台运行并打印容器id)
-e, --env list Set environment variables(设置环境变量)
-i, --interactive Keep STDIN open even if not attached(保持标准输入打开)
--name string Assign a name to the container(给容器取一个名称)
--network network Connect a container to a network(运行的这个容器去连接那个网络)
--network-alias list Add network-scoped alias for the container(为这个容器添加一个网络服务别名)
-p, --publish list Publish a container's port(s) to the host (端口映射)
--restart string Restart policy to apply when a container exits (default "no") (容器退出时是否重启应用)
-t, --tty Allocate a pseudo-TTY(分配一个伪TTY)
-v, --volume list Bind mount a volume(挂载 宿主机目录:容器内目录)
6.docker inspect NAME|ID
inspect vt.检查;查看;审视;视察
该命令罗列指定容器的所有信息,限于篇幅有限,移除了部分内容
[root@1 /]# docker inspect sls-gateway
[
{
"Id": "a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a",
"Created": "2021-09-30T05:20:31.685778388Z",
"Path": "sh",
"Args": [
"-c",
"java -Duser.timezone=GMT+08 -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1024m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /sls/${jar_name} ${params}"
],
"State": {
"Status": "running",
"Running": true,
"Pid": 29336,
"ExitCode": 0,
"StartedAt": "2021-10-09T03:25:06.381622663Z",
"FinishedAt": "2021-10-09T03:25:05.988470522Z"
},
"Image": "sha256:b30ef97274530a7cb3303aaa19a232370dc3ea3a84e613a1e6ca59bdf243904e",
"LogPath": "/home/data/lib/docker/docker/containers/a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a/a37c20ee003b6185e75a28e04c55b9a671f4b9a610953de25a0b535584c1ab0a-json.log",
"Name": "/sls-gateway",
"Platform": "linux",
"HostConfig": {
"Binds": [
"/home:/home",
"/etc/localtime:/etc/localtime:ro",
"/home/sls-dev/installer/docker/sectag/center/sls-gateway/../jar:/sls"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {
"max-file": "5",
"max-size": "500m"
}
},
"NetworkMode": "sls-network",
"PortBindings": {
"9528/tcp": [
{
"HostIp": "",
"HostPort": "9528"
}
]
},
"GraphDriver": {
"Mounts": [
{
"Type": "bind",
"Source": "/etc/localtime",
"Destination": "/etc/localtime",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/sls-dev/installer/docker/sectag/center/jar",
"Destination": "/sls",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home",
"Destination": "/home",
"Mode": "",
"RW": true,
"Propagation": "rslave"
}
],
"Config": {
"Hostname": "a37c20ee003b",
"Env": [
"jar_name=sls-gateway-2.2.1.1.jar",
"params=--server.ip=172.1.0.1 --server.port=9528 --eureka.ip=sls-server --eureka.port=9527 --spring.rabbitmq.host=sls-rabbitmq --spring.rabbitmq.port=5672 --spring.rabbitmq.username=admin --spring.rabbitmq.password=11111111 --license.path=/home/test/installer/docker/sectag/center/sls-gateway/license.dat",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin",
"LANG=C.UTF-8",
"JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk",
"JAVA_VERSION=8u212",
"JAVA_ALPINE_VERSION=8.212.04-r0"
],
"Cmd": [
"sh",
"-c",
"java -Duser.timezone=GMT+08 -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1024m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /sls/${jar_name} ${params}"
],
"Image": "sls-gateway:2.2.1.1",
"WorkingDir": "/sls",
},
"NetworkSettings": {
"Ports": {
"9528/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "9528"
},
{
"HostIp": "::",
"HostPort": "9528"
}
]
},
"Networks": {
"sls-network": {
"Aliases": [
"sls-gateway",
"a37c20ee003b"
],
"NetworkID": "826c8d5fa07ccf95394cdae761a9e83170bc68a609e74114c7e78d1425e7049d",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.13",
}
}
}
}
]
7.Docker 命令帮助
# 先查看docker的所有命令
[root@1 /]# docker --help
# 再选择一个命令查看该命令下的用法
[root@1 /]# docker system --help
[root@1 /]# docker run --help
[root@1 /]# docker builder build --help
[root@1 /]# docker network inspect --help
# 这样你就能学习其所有命令用法了
# 类似 linux下的 man COMMAND